Task Status Values

How Obsidian stores task status

ListItemCache.task contains the literal character between [ and ] in a checkbox list item. Obsidian does NOT normalize this value.

Markdowntask valueObsidian interpretation
- regular bulletundefinedNot a task
- [ ]" " (space)Incomplete
- [x]"x"Complete
- [X]"X"Complete
- [/]"/"Complete (any non-space)
- [-]"-"Complete (any non-space)
- [>]">"Complete (any non-space)
- [!]"!"Complete (any non-space)

Obsidian’s binary view

From the official docs1: “The space character ' ' is interpreted as an incomplete task. Any other character is interpreted as completed task.”

Obsidian only applies strikethrough styling to x and X2. All other non-space characters render as “checked” (filled checkbox) without strikethrough.

Obsidian vs Dataview semantics

ConceptObsidianDataview
CheckedAny non-spaceAny non-space
Completed/DoneAny non-spaceOnly x or X

Our getFilesWithCompletedTasks follows Obsidian’s semantics (any non-space = completed). For Dataview-style “only x/X”3, use getFilesWithTaskStatus(["x", "X"]).

Custom status characters

Themes and plugins like obsidian-tasks define custom meanings for status characters:

CharacterCommon meaning
/In progress
-Cancelled
>Deferred/scheduled
!Important
?Question
RUnder review

These are community conventions, not Obsidian standards. The raw character is always available via getFilesWithTaskStatus and getAllTaskStatusesWithFiles.

Footnotes

  1. ListItemCache — Obsidian Developer Docs

  2. Obsidian’s core CSS targets only [data-task="x"] and [data-task="X"] for strikethrough styling — all other non-space characters render as checked without strikethrough.

  3. Dataview markdown-file.ts:248-253 — task status parsing distinguishes checked (any non-space) from completed (only x/X).