Obsidian task format cheat sheet
Obsidian has no built-in task syntax beyond the checkbox. Plugins add the rest, and they do it in four different ways. This page lists every field in each way, with the exact characters to type.
Checked against Obsidian Tasks 8.6, Task Genius 9.13, TaskNotes 4.14 and the Dataview documentation in October 2026. Each plugin's own docs are linked at the bottom and win if they disagree with this page.
Printing this page gives a compact reference without the site navigation.
Anatomy of a task line
A task is a list item with a checkbox. After the description come the fields, each one a symbol followed by a value. Obsidian Tasks reads the line from the right, so fields belong at the end, after the text, and any unrecognized text between two fields stops the reading at that point.
The same task in each inline format:
- [ ] Pay rent ⏫ 🔁 every month ➕ 2026-01-02 ⏳ 2026-01-14 📅 2026-01-15 - [ ] Pay rent [priority:: high] [repeat:: every month] [created:: 2026-01-02] [scheduled:: 2026-01-14] [due:: 2026-01-15] - [ ] Pay rent #project/Home @bank ⏫ 📅 2026-01-15 09:00 [repeat:: every month] A task file keeps the same facts in YAML frontmatter. See the task files section below.
Fields, side by side
Dates are always YYYY-MM-DD. The Dataview column uses square brackets. Obsidian Tasks and Dataview also read parentheses, (due:: 2026-01-15); Task Genius reads square brackets only. Task Genius reads the emoji and the bracket form, so its column only lists what it adds or spells differently.
Scroll sideways on a narrow screen.
| Field | Obsidian Tasks emoji | Dataview style | Task Genius |
|---|---|---|---|
| Due date The deadline. Obsidian Tasks also reads 📆 and 🗓 as due. | 📅 2026-01-15 | [due:: 2026-01-15] | Same as the other two |
| Scheduled date The day you plan to work on it. Obsidian Tasks also reads ⌛. | ⏳ 2026-01-14 | [scheduled:: 2026-01-14] | Same as the other two |
| Start date The task is not actionable before this day. | 🛫 2026-01-10 | [start:: 2026-01-10] | Same as the other two |
| Created date Added when the task is created, if the plugin is set to do it. | ➕ 2026-01-02 | [created:: 2026-01-02] | Same as the other two |
| Done date Added when you check the task. In Dataview style the key is completion, not done. | ✅ 2026-01-15 | [completion:: 2026-01-15] | Same as the other two |
| Cancelled date Pairs with a cancelled status such as [-]. | ❌ 2026-01-15 | [cancelled:: 2026-01-15] | Same as the other two |
| Priority Five levels, highest to lowest. Normal priority is written as nothing at all. | 🔺 highest ⏫ high 🔼 medium 🔽 low ⏬ lowest | [priority:: highest] [priority:: high] [priority:: medium] [priority:: low] [priority:: lowest] | [#A] |
| Recurrence Obsidian Tasks and Dataview style use plain words that start with every. Task Genius reads those and iCalendar rules. See the recurrence section. | 🔁 every week on Sunday when done | [repeat:: every week on Sunday when done] | [recurrence:: FREQ=WEEKLY;BYDAY=SU] |
| On completion What to do with a task when it is done. Obsidian Tasks supports keep and delete. | 🏁 delete 🏁 keep | [onCompletion:: delete] | Same as the other two |
| Task ID Letters, digits, hyphen and underscore only. | 🆔 abc123 | [id:: abc123] | Same as the other two |
| Depends on One or more task IDs, separated by commas. | ⛔ abc123,def456 | [dependsOn:: abc123,def456] | Same as the other two |
| Time of day Obsidian Tasks has no time field. Task Genius reads a time after the date. | Not available | Not available | 📅 2026-01-15 14:30 [due:: 2026-01-15 14:30] |
| Project and context Obsidian Tasks has no project or context field; use tags there. Task Genius reads these. | Not available | Not available | #project/Website @phone [project:: Website] [context:: phone] |
Order Obsidian Tasks writes fields in
When Obsidian Tasks writes a line it puts the ID, dependencies, priority, recurrence and on-completion first, then created, start, scheduled and due dates, then cancelled and done dates. Writing by hand in a different order works as long as every field sits at the end of the line.
Status characters
The character inside the brackets is the status. Only the space and x are universal. Everything else is a convention that a plugin, a theme or a status collection gives meaning to.
| Character | Usual meaning | Who understands it |
|---|---|---|
[ ] | To do | Everything, including Obsidian itself |
[x] | Done (x or X) | Everything, including Obsidian itself |
[/] | In progress | Task Genius by default, Obsidian Tasks as a custom status |
[-] | Cancelled or abandoned | Task Genius by default, Obsidian Tasks as a custom status |
[>] | In progress (Task Genius) or forwarded | Task Genius by default, a convention elsewhere |
[<] | Scheduled | A convention from status collections and themes, not a Task Genius default; a custom status in Obsidian Tasks |
[?] | Planned | Task Genius by default, often read as a question elsewhere |
[!] | Important | A convention from status collections and themes, not a Task Genius default; a custom status in Obsidian Tasks |
In Obsidian Tasks, a character you have not configured shows up as an Unknown status. Add it in the plugin's Custom Statuses settings, or load a ready-made status collection.
Task Genius treats only x and X as completed. TaskNotes files do not use checkbox characters at all; they have a status property, covered below.
Recurrence
Recurrence is where the formats differ most. The same weekly task, written four ways:
- [ ] Water plants 🔁 every week on Sunday when done 📅 2026-01-18 - [ ] Water plants [repeat:: every week on Sunday when done] [due:: 2026-01-18] - [ ] Water plants [recurrence:: FREQ=WEEKLY;BYDAY=SU] [due:: 2026-01-18] recurrence: "DTSTART:20260118;FREQ=WEEKLY;BYDAY=SU"
recurrence_anchor: completion Rules Obsidian Tasks understands
Every rule starts with the word every. Add when done to count from the day you finish rather than the original date.
every 3 days
every 10 days when done
every weekday
every week on Sunday
every week on Tuesday, Friday
every 2 weeks
every 3 weeks on Friday
every 2 months
every month on the 1st
every month on the last
every month on the last Friday
every month on the 2nd last Friday
every January on the 15th
every April and December on the 1st and 24th
every year How completion behaves
- Obsidian Tasks: checking a recurring task marks that line done and adds a new line, above it by default, with the dates moved forward. A setting puts the new line below instead.
- Obsidian Tasks: a recurring task needs at least one of a due, scheduled or start date. Without one, the rule has nothing to move.
- Obsidian Tasks: with a monthly rule, a date that does not exist (the 31st in April) moves earlier to the last valid day. A rule that names the 31st instead skips months without one.
- Obsidian Tasks: the new line drops any ID and depends-on field, so a dependency does not block forever.
- TaskNotes: the file stays one task. Completed and skipped dates go into complete_instances and skipped_instances, and the schedule advances.
- Task Genius: the next date comes from an iCalendar rule or a simple phrase such as every 2 weeks. Richer Obsidian Tasks phrases, like every weekday or the last Friday of the month, are not read the same way, so test a few before you rely on them.
- Keep recurring tasks out of daily notes. A recurring line in a daily note is copied into every day's note.
Task files: TaskNotes frontmatter
TaskNotes stores one task per note. The facts live in YAML frontmatter and the body is free text. A file counts as a task when it carries the tag or property you set in the plugin settings, by default the task tag.
---
tags:
- task
title: Review quarterly report
status: in-progress
priority: high
due: 2026-01-15
scheduled: 2026-01-14
contexts:
- office
projects:
- "[[Q1 Planning]]"
timeEstimate: 90
recurrence: "DTSTART:20260115;FREQ=MONTHLY;BYMONTHDAY=15"
recurrence_anchor: scheduled
---
Notes, links and a checklist go in the body. Properties
| Property | Example | Meaning |
|---|---|---|
| title | | The task name. |
| status | | A value from your status list. Defaults are open, in-progress and done. |
| priority | | A value from your priority list. Defaults are low, normal and high. |
| due | | Deadline, as a date or a date and time. |
| scheduled | | The day you plan to work on it. |
| completedDate | | Set when the task is completed. |
| dateCreated | | Creation time as an ISO timestamp. |
| dateModified | | Last change as an ISO timestamp. |
| tags | | A YAML list, written without the hash. |
| contexts | | A YAML list of places or modes. |
| projects | | A YAML list of links to project notes. |
| timeEstimate | | A number of minutes. |
| recurrence | | An iCalendar rule. DTSTART sets the anchor date. |
| recurrence_anchor | | scheduled or completion: where the next date counts from. |
| complete_instances | | Dates of finished occurrences of a recurring task. |
| skipped_instances | | Dates of skipped occurrences. |
| blockedBy | | Tasks that must finish first, as objects with a uid, a relation type and an optional gap. |
Property names are settings. If you rename due to deadline in the plugin, the file must use deadline.
Lists must be lists, even with one item. A scalar where a list is expected is the most common reason a task file does not show up in a view.
Gotchas that cost people an evening
- Obsidian Tasks reads and writes one format at a time. If its setting is Dataview, its own emoji stop being read until you switch back.
- Dataview needs a double colon, [due:: 2026-01-15]. A single colon is not a field.
- Brackets must match. [due:: 2026-01-15) is not read.
- Obsidian Tasks keys are case sensitive in Dataview style: repeat, dependsOn and onCompletion work, Repeat and dependson do not. Task Genius matches keys without regard to case.
- The done key is completion. [done:: 2026-01-15] is just an unknown field.
- Dataview documents 🗓️ as its due shorthand, while Obsidian Tasks writes 📅. If you query emoji dates with Dataview, test your own version first. Bracketed fields avoid the question.
- Pasted text can carry non-breaking spaces or a variation selector after an emoji. Obsidian Tasks does not read those, and the line looks fine on screen.
- Dataview has shorthands for five dates only. Priority and recurrence have no shorthand and need the bracket form.
- A global filter such as #task in Obsidian Tasks makes it ignore every checkbox without that tag. Tasks that vanish from queries are often this.
- Checkbox lines inside a fenced code block are not tasks in any of these plugins.
Sources of truth
Plugins change. When something here looks wrong for your version, trust these over this page.
- Obsidian Tasks docs: Tasks Emoji Format
- Obsidian Tasks: Dataview Format
- Obsidian Tasks docs: Recurring Tasks
- Obsidian Tasks: Statuses
- Dataview: Metadata on Tasks and Lists
- Dataview: Adding Metadata (inline fields)
- Task Genius documentation
- Task Genius on GitHub
- TaskNotes documentation
- TaskNotes: Property Types Reference
Using these on a phone
TaskForge, a separate app for iPhone, iPad, Mac, Android and Windows, reads the emoji, Dataview and Task Genius forms above and TaskNotes-style task files from the same folder. It is not an Obsidian plugin and has no tie to Obsidian. You do not need it to use anything on this page.
Questions people ask
What is the Obsidian Tasks syntax for a due date?
Type the calendar emoji, a space and the date: - [ ] Pay rent 📅 2026-01-15. In Dataview style it is [due:: 2026-01-15]. Both use YYYY-MM-DD.
What are the Obsidian Tasks priority emojis?
🔺 highest, ⏫ high, 🔼 medium, 🔽 low and ⏬ lowest. Normal priority has no symbol. In Dataview style the field is priority and the values are highest, high, medium, low and lowest.
Can I use Dataview inline fields instead of emoji for Obsidian Tasks?
Yes. Set the task format in Obsidian Tasks settings to Dataview and it reads and writes [due:: 2026-01-15] style fields. It reads only the format you choose, so existing emoji lines need converting. See the conversion page for recipes.
How do I write a recurring task in Obsidian?
With Obsidian Tasks, add 🔁 and a rule that starts with every, plus at least one date: - [ ] Water plants 🔁 every week on Sunday 📅 2026-01-18. With TaskNotes, set a recurrence property to an iCalendar rule such as FREQ=WEEKLY;BYDAY=SU.
What status characters can an Obsidian task have?
Any single character fits between the brackets. The space and x are standard. Characters such as /, - and > only mean something once a plugin or theme defines them.
Does Task Genius use the same syntax as Obsidian Tasks?
It reads the same emoji and the Dataview bracket form on one line, so a vault written for Obsidian Tasks works. It adds a time after the date, project and context fields, and iCalendar recurrence rules. Which format it writes is a setting.