Skip to content

Bases Debugging Cheat Sheet (printable)

Use this when a Base shows everything, nothing, or behaves differently when embedded.

Key official references:


Step 0: Identify the symptom


Step 1: Add a Debug view (90 seconds)

Add this view to your base temporarily so you can see what the base is actually evaluating.

views:
  - type: table
    name: Debug
    order:
      - file.path
      - file.folder
      - file.ext
      - file.tags
      - file.links
    limit: 200

File properties are documented in: Bases syntax


Step 2: Top 10 failure modes (with copy/paste fixes)

1) You forgot that a base without filters shows everything

Fix: Add a dataset filter (folder, type, or tag).
Official: Views

Example (tag dataset):

filters:
  and:
    - 'file.hasTag("project")'

2) You applied the filter to "This view" but you are looking at a different view

Fix: Put dataset filters at the global filters level ("All views"), and slice filters in each view.
Official: Views

3) Folder filter broke after a rename

Symptom: Base shows nothing after you rename a folder.
Fix: Update the folder path in the filter manually.

Known issue: folder rename breaks base folder filter

Copy/paste:

filters:
  and:
    - 'file.inFolder("New Folder Name")'

4) You used tags.contains("x") but meant "file tags"

Fix: Use file.hasTag("x") for tags in content + frontmatter.
Official: Functions
Clarification: file.hasTag vs tags.contains

Copy/paste:

filters:
  and:
    - 'file.hasTag("places")'

5) You used this but its meaning changed (open vs embed vs sidebar)

Fix: Confirm what this points to using a "this test" filter.
Official: Bases syntax (this)

Copy/paste test:

filters:
  and:
    - 'file.path == this.file.path'

6) Link vs string mismatch (contains never matches)

Symptom: contains() or equality comparisons never match.
Fix: Compare like with like (link vs link, string vs string).

If your property stores links, compare to this or this.file, not this.file.name.

Copy/paste (list of links to the embedding note):

filters:
  and:
    - 'list(attendees).contains(this)'

Official: Functions (list, contains)

7) List vs scalar mismatch (property sometimes list, sometimes single value)

Fix: Wrap in list() to normalize.
Official: Bases syntax (list())

Copy/paste:

filters:
  and:
    - 'list(attendees).contains(this)'

8) Date filters return nothing (date vs datetime confusion)

Fix: Use today() and datetime.date() when needed.
Official: Bases syntax (date arithmetic and datetime.date())

Copy/paste (due today):

filters:
  and:
    - 'due && due.date() == today()'

9) Cards view shows no images

Fix: Ensure your image property value is one of the supported formats and set the Cards view "Image property" to that property.

Supported formats: attachment link "[[path/to/image.jpg]]", external URL, or hex color. Official: Cards view (Image property)

10) Map view is blank

Fix: Confirm requirements (Obsidian 1.10 + Maps plugin) and coordinate format.
Official: Map view

Copy/paste coordinates:

---
coordinates:
  - "48.85837"
  - "2.294481"
tags:
  - places
---

If you are still stuck: reduce to a minimal base

views:
  - type: table
    name: Minimal
    filters:
      and:
        - 'file.ext == "md"'
    order:
      - file.path
    limit: 50

Then add one filter at a time until it breaks.


Related internal docs