The markdown editor renders as you type. Type `## ` and the line becomes a heading immediately. There is no preview pane to keep in sync. What you see is the rendering, and the file stays ordinary markdown the whole time.

## Formatting as you type

Markdown syntax converts the moment you finish typing it. `**bold**` becomes bold text.

| Type | Get |
|---|---|
| `# ` through `###### ` | Headings, all six levels |
| `**bold**` or `__bold__` | Bold |
| `*italic*` or `_italic_` | Italic |
| `~~strike~~` | Strikethrough |
| `` `code` `` | Inline code |
| `> ` | Blockquote |
| `- `, `* `, `+ ` | Bullet list |
| `1. ` | Numbered list |
| `[ ] ` or `[x] ` | Task list item |
| ` ``` ` plus a language | Code block |
| `---` | Divider |
| `[[` | Wiki-link autocomplete |

Shortcuts work too, with <kbd>Ctrl</kbd> on Windows and Linux and <kbd>⌘</kbd> on macOS.

| Shortcut | Action |
|---|---|
| <kbd>Ctrl</kbd>+<kbd>B</kbd> / <kbd>Ctrl</kbd>+<kbd>I</kbd> | Bold, italic |
| <kbd>Ctrl</kbd>+<kbd>E</kbd> | Inline code |
| <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>S</kbd> | Strikethrough |
| <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>1</kbd> to <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>6</kbd> | Heading levels |
| <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>0</kbd> | Back to a normal paragraph |
| <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>8</kbd> / <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>7</kbd> / <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>9</kbd> | Bullet, numbered, task list |
| <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>B</kbd> | Blockquote |
| <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>C</kbd> | Code block |
| <kbd>Tab</kbd> / <kbd>Shift</kbd>+<kbd>Tab</kbd> | Indent or outdent a list item |
| <kbd>Shift</kbd>+<kbd>Enter</kbd> | Line break without a new paragraph |
| <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>V</kbd> | Toggle the pane to raw markdown and back |
| <kbd>Ctrl</kbd>+<kbd>K</kbd> | Open the AI composer on your selection |

> [!WARNING]
> <kbd>Ctrl</kbd>+<kbd>U</kbd> applies an underline. Markdown has no underline, so it disappears on the next save. Use bold or italic instead.

There is no formatting toolbar and no menu on selection. A selection feeds the AI composer. Press <kbd>Ctrl</kbd>+<kbd>K</kbd> on selected text and it offers to rewrite it. See [[The Inline Composer]].

## Slash commands

Type `/` at the **start of a line** to open the insert menu, then keep typing to filter it. The filter matches the name, the shorthand and the description, so `/list` narrows to the three list commands. Arrow keys move, <kbd>Enter</kbd> inserts, <kbd>Esc</kbd> closes.

| Command | What it inserts |
|---|---|
| Heading 1, Heading 2, Heading 3 | A heading at that level |
| Bullet List, Numbered List, Task List | A list |
| Code Block | An empty fenced block |
| Quote | A blockquote |
| Divider | A horizontal rule |
| Date | Today's date, as `2026-09-17` |
| Time | The current time, as `14:30:00` |
| Timestamp | The current moment in ISO format |
| UUID | A random UUID v4 |
| Password | A 20-character random password |
| Secret | A 64-character random key |

Two more do not appear in the menu. Type `/mermaid` on an empty line for a diagram block, and `/math` for a math block. The menu says it found nothing while you type them, because they fire on the last character.

## Tables

There is no table command in the menu. Type or paste the pipe syntax and it renders as a table as soon as the block is complete:

```md title="A table, as you type it"
| Stage | Owner |
|---|---|
| Draft | You |
| Review | Reviewer |
```

Pasting from a spreadsheet or a web page works too. An HTML table in the clipboard stays a table. Once a table exists, drag a column border to resize it, use <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd> to move between cells, and press <kbd>Tab</kbd> in the last cell to add a row. Select every cell and press <kbd>Backspace</kbd> to delete the table.

## Dragging things in

Drag an image file from your desktop onto the editor. It uploads and lands where you let go, as ordinary `![alt](url)` markdown. You can drop several at once. Each image can be up to 10 MB. Pasting an image from the clipboard does the same at the cursor.

The editor embeds images only. Drop a PDF or a zip and nothing happens.

Dragging a file out of the file tree opens that file. It does not insert a link. Drop it in the middle of the editor to open it in the current pane, or near an edge to split the pane. To link to a file, type `[[` instead.

## How saving works

There is no save button and no <kbd>Ctrl</kbd>+<kbd>S</kbd>. The editor saves about a third of a second after you stop typing. The footer shows "Saving…" while the request is in flight, "Saved" when it lands, and "save failed" if it did not. The tab shows a dot while a save is in flight.

> [!TIP]
> The save waits until you stop typing, so give it a moment before you close a tab or reload the page.

## When a version is captured

Not every save is a version. If it were, a morning of writing would leave hundreds of near-identical snapshots.

| Who wrote it | What gets captured |
|---|---|
| You, in the editor | The state before your first save in roughly a ten minute window. Keep typing and that window holds, so one editing session leaves one version |
| An agent or the AI assistant, through the API | The state before every write, with no coalescing |
| You, right after an agent run | A version, because the agent's writes do not reset your window. The handover point is always recoverable |

A version stores the content as it was **before** the write, so restoring one takes you back to the state you had. Monofile keeps the newest 20 automatic versions per file. Checkpoints, which you create yourself, do not expire. See [[How Versioning Works]].

A save that changes nothing captures nothing. Monofile compares the content before it writes.

## Next steps

:::cards
- [[Markdown Reference]] — Every markdown feature Monofile renders, with examples.
- [[Rich Markdown]] — Titled code, tabs, callouts, details, steps, cards, prompts and more: plain markdown that renders designed everywhere.
- [[Wiki-Links]] — Links between files: autocomplete, aliases, and links that survive renames.
- [[Backlinks and Graph]] — See what links to a file, and navigate your workspace as a graph.
- [[Diagrams]] — Mermaid in markdown, and turning mermaid into an editable drawing.
- [[Themes and Appearance]] — Theme families, light and dark modes, and importing VS Code or base16 themes.
- [[How Versioning Works]] — Automatic version capture on every write, and how long versions last.
- [[The Inline Composer]] — Generate or rewrite text in place with the editor composer.
:::
