Knowledge base
Beyond single documents, markbird can work as a connected set of notes — links between them, metadata on them, and views that show the shape of the whole thing.
Everything here is stored in the Markdown itself, not in a database beside
it. A note carries its own tags, aliases and links, so it means the same thing
in markbird, in a .md file on your disk, and in another editor.
Wiki links
Link one note to another by title:
[[Meeting notes]]
Variations:
| Syntax | Meaning |
|---|---|
[[Target]] | Link to a note by title |
[[Target|shown text]] | Link with different link text |
[[Target#Heading]] | Link to a heading inside a note |
[[#Heading]] | Link to a heading in this note |
[[Target^block-id]] | Link to a specific block |
![[Target]] | Embed the note's content here |
Links resolve by title against your current library, at the moment you read them. That is what keeps them portable: nothing is baked into the document but the text you typed.
Links written inside code blocks or inline code are ignored, so documentation about wiki links does not accidentally become wiki links.
Unresolved links
A [[link]] to a note that does not exist yet is not an error — it is a note you
have not written. markbird lists these under Unresolved links in the Vault
panel, and offers to create each one with that exact title.
Embeds
![[Target]] pulls another note's content into this one at render time. You can
embed a section with ![[Target#Heading]]. If a document would embed itself
through a loop, markbird stops and says so rather than rendering forever.
Properties and frontmatter
A --- block at the top of a note holds its metadata:
---
tags: [project, research]
aliases: [Alternative title]
created: 2026-09-10
---
Frontmatter never appears in the preview or in exports. Edit it as text, or use the properties UI — markbird patches only the keys it is asked to change and leaves your comments, key order and formatting exactly as they were.
Aliases make a note findable and linkable under more than one name:
[[Alternative title]] will reach it.
Tags
Two ways to tag, both first-class:
tags: [a, b]in frontmatter#tagwritten inline in the text
Inline tags are edited in the text where they live. The Vault panel lists every tag in the library and filters to it.
Backlinks
The outline panel shows Linked references — every note that links to the one you are reading. This is how a set of notes becomes navigable in both directions without you maintaining an index.
The graph
The Vault panel draws a link graph, either around the current note or across the whole library. Very large libraries are trimmed to the best-connected documents so the picture stays readable.
Also there: orphan documents — notes nothing links to, which is usually either something to connect or something to archive.
Query blocks
A fenced block marked query becomes a live list of the notes it describes —
an index page that keeps itself:
```query
tag:work -draft
sort: updated desc
limit: 10
```
The first lines are a search, in exactly the syntax the search box uses:
tag:, path:, title:, -word, and "quoted phrases". There is no second
query language to learn, and a search you tried in the sidebar works here.
The key: value lines say how to show it:
| Line | Values |
|---|---|
sort: | updated, created, title, relevance — plus asc or desc |
limit: | 1 to 200 (25 by default) |
as: | list (default), table or cards |
fields: | title, updated, created, folder, tags, size — or any property of your notes |
tasks: | open (default), done, all — list task lines instead of notes |
A column that is not one of the built-in six is read from the note's frontmatter, and such a cell is editable: change it in the table and the note's frontmatter changes — which is how you fix one status without opening five notes. Emptying a cell removes the property. Clicking a column heading re-orders the table; that is a way of looking, not an edit, so the note is left exactly as written.
With tasks: the block lists the task lines of the matching notes instead
of the notes themselves — an inbox assembled from wherever you wrote the tasks
down. Each one says which note it came from, and ticking it off here writes to
that note. Tasks with a date in them (2026-09-25) come first, soonest first.
Checkboxes are clickable in the preview too: ticking one next to a task rewrites that line of the document. A task inside an embedded note stays read-only, since ticking it would edit a different file than the one you are looking at.
Results are ordinary links: clicking one opens the note. The note holding the query is never in its own list, and a line that looks like a directive but is not one is reported instead of being searched for. Queries update as the library changes, not only when you edit the note. Exporting turns a query into the list it resolved to — a reader of the file cannot run it.
Daily, weekly and monthly notes
markbird can open (or create) the note for today, this week or this month — from
the command palette, or with ⌘/Ctrl + ⇧ + D for today. By default the titles
are sortable dates — YYYY-MM-DD, GGGG-[W]ww for weeks, YYYY-MM for months —
so notes line up chronologically in any list and in any tool, and all three go
into a Journal folder.
To reach any other date, open the Journal tab in the vault panel. It shows a month: a dot marks the days that already have a note, and clicking a day opens its note or creates it. The week numbers on the left open weekly notes, and the month name opens the month's note.
Both are yours to change in Settings → Daily, weekly and monthly notes, which shows the title today's note would get as you type. The tokens:
| Token | Meaning | Token | Meaning | |
|---|---|---|---|---|
YYYY | year | dddd | weekday name | |
MM | month | MMMM | month name | |
DD | day | ww | ISO week | |
GGGG | ISO week-year | [text] | literal text |
Use GGGG, not YYYY, with weeks: a week that spans New Year belongs to one ISO
year, and YYYY would name it differently on either side of 1 January. markbird
refuses a pattern that would give two periods the same title — YYYY-MM for
daily notes, say — because they would end up sharing one note.
"Open today" is idempotent: it opens the existing note or makes one, and never produces a second note for the same day. The date comes from your local calendar, not UTC — a note written at 23:30 belongs to the day you were living in.