Library, search & history
The library
Every document lives in the library in the sidebar (⌘/Ctrl + \ to toggle).
Documents are stored in your browser's IndexedDB, which means there is no
per-document size limit worth worrying about and no round trip to a server when
you open one.
Each row has a menu for the things you would expect: rename, duplicate, pin, move to folder, export, delete.
Folders and tabs
Organize the library into a folder tree by dragging documents or using Move to folder…. Open several documents at once as tabs and switch between them without losing your place in any of them.
Your own order
Set Sort to Manual to arrange documents yourself. Drag a document above or
below another; a line shows where it will land, and dropping next to a document
in another folder moves it into that folder too. From the keyboard, focus a
document and press Alt + ↑ or Alt + ↓, or use Move up and Move down in
its menu. Pinned documents stay at the top and are ordered among themselves. New
documents appear at the top until you place them.
The order is saved with the documents, so it syncs to your other devices.
Search
Full-text search covers titles and body content, and shows highlighted snippets so you can tell which hit you want before opening it. The index is built in the background after the editor is ready, so starting up stays fast; the very first search may wait a moment for it.
Search runs entirely on your device.
Tags
Filter the library by tag. Tags come from two places — a tags: list in a
document's frontmatter, or #tag written inline in the text. See
Knowledge base.
Trash and undo
Deleting moves a document to the trash, with an undo offered immediately. The trash keeps documents until you empty it — Empty trash in the command palette is the only permanent deletion, and it asks first.
Version history
markbird snapshots documents automatically as you work, and you can take a snapshot deliberately at any point. Version history in the command palette lists them with a rendered preview and restores any of them in one click.
This is local, and independent of sync: it protects you from your own edits, not just from device loss.
Templates
Start a document from a template instead of an empty page. Templates are ordinary documents, so anything you can write, you can turn into a starting point — including a daily-note layout.
Sync with a folder
In Settings → Sync with a folder you can pair the library with a folder of
.md files on your computer, so you can also edit your notes in another editor,
keep them in Git, or have a cloud drive carry them. It works in both directions:
- Documents are written into the folder, one
.mdfile per document, in subfolders that match your library folders..mdfiles already in the folder are added to the library. - An edit on one side reaches the other within seconds while markbird is open, and immediately when you switch back to the window or run Sync files now.
- Renaming or moving a file in the folder keeps it paired with its document.
- Deleting on one side moves the note to a trash on the other: markbird's trash,
or a
.markbird-trashfolder inside the synced folder. Nothing is deleted outright. - If a note changed on both sides between two syncs, the newer version wins. The other one is saved in the note's version history, and markbird tells you which notes were affected.
This needs a Chromium browser (Chrome, Edge, Brave, Arc…) on a desktop computer. The browser may ask again for permission to use the folder after a restart. The files never leave your computer.
Sync with a GitHub repository
In Settings → Sync with a GitHub repository you can pair the library with a
repository of .md files instead of a folder. It is the same two-way sync with
the same rules — pairings, renames, the trash, the conflict handling above —
pointed at a repo, so everything the section above says still holds.
What it adds is reach: it needs no File System Access API and no markbird account, so it works in every browser and on a phone, and your notes live in storage you already have, with the repository's history as their version history. Each sync is an ordinary commit.
To set it up, create a fine-grained personal access token on GitHub with
Contents: read and write on the one repository, and enter the repository
(owner/name), the branch, an optional folder inside it, and the token.
markbird checks the token before connecting, so a typo is caught there rather
than as a sync that quietly does nothing.
The token is kept on this device alone: it is not a document, so it is never
synced, exported or part of a backup, and it is sent to api.github.com and
nowhere else. Another device gets its own token. Disconnecting removes it.
Because every check is a request against GitHub's hourly budget, markbird looks at the repository every two minutes rather than every few seconds; a change you make here is still committed within seconds, and Sync files now is immediate.
Local backups
markbird can back the whole library up into a folder on your disk on a schedule, using the File System Access API. This is a real copy in real files, readable by any editor, and is the recommended safety net for anyone not using sync.