Skip to content

← Handbook

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.

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 .md file per document, in subfolders that match your library folders. .md files 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-trash folder 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.