Skip to main content
Scribe is a WYSIWYG markdown editor with a twist: the markdown syntax that produced each construct stays visible as muted, non-editable markers alongside the formatted result. A heading shows its ## prefix, bold text keeps its ** delimiters, and list items show their - bullets — but you edit formatted text, not a plain-text buffer. This means there is never a gap between what you see and what is stored. The document is markdown, and GET /api/docs/{id}/content returns exactly the source you’d expect.

Writing markdown

Markdown shortcuts convert as you type: Undo (Cmd+Z or Backspace right after a conversion) reverts an unwanted auto-conversion back to the literal characters.

Pasting markdown

Pasting plain-text markdown formats it as you’d expect: headings, bold, lists, and fenced code blocks land as real blocks instead of literal #, **, and ` characters. Everything applies in one undoable step, so a single Cmd+Z reverts the whole paste. Paste stays literal when transforming would be wrong: inside a code block or inline code, when the clipboard carries rich content (text/html) from another editor, and for a single plain word or line with no markdown structure. With suggesting mode on, the pasted markdown comes in as a tracked suggestion rather than a direct edit.

Supported markdown

Scribe documents are standard markdown (CommonMark), extended with two GitHub-flavored features:
  • Strikethrough — ~~text~~.
  • Task lists — - [ ] and - [x] items with clickable checkboxes.
Additionally supported: headings, paragraphs, blockquotes, bullet and ordered lists (nestable), fenced code blocks with a language tag, links, images, hard breaks, and horizontal rules.
Tables are not modeled in v1. Table markup is deliberately parsed as plain paragraph text and round-trips unchanged — a document containing a table can be edited in Scribe without corrupting it, but the table renders as its raw source.Raw HTML is also treated as inert text: it is never interpreted or rendered.

Round-tripping

The editor and the server read and write markdown with exactly the same rules. Content written through the editor, pasted in, or pushed through PUT /api/docs/{id}/content all normalizes identically, so the API and the editor can never disagree about a document.

Modes

A document is always in exactly one of three modes, chosen from the switcher at the top-right of the document:
  • Editing — edit the document directly.
  • Suggesting — your edits become tracked suggestions reviewers accept or reject. Toggle with Cmd+Alt+S.
  • Viewing — a read-only rendered view with no syntax markers; task lists render as (disabled) checkboxes and links are hardened to open in a new tab. This is what used to be “preview mode”. Toggle with Cmd+Alt+P.
Viewing state lives in the URL (?view=preview), so a viewing link is shareable with anyone who can read the document.