The toolbar is the second row of the document header, and it is the only way to produce formatting in Leed. There are no markdown input rules: typing ## gives you the characters ##, and typing **bold** gives you asterisks. Every heading, list, alert and table on your site started as a click here or as the keyboard shortcut for that click. On a read-only page the toolbar renders nothing at all — row 2 is empty rather than grayed out.
This page lists every control in the order it appears, with the shortcut that fires it and the exact Leed Markdown it writes into your page.
Reading the toolbar left to right
The controls sit in one rounded strip, in seven groups separated by thin dividers, with the mode switch pushed to the far right end.
- History — Undo · Redo
- Block type — the paragraph-and-headings selector
- Inline marks — Bold · Italic · Strikethrough · Code · Highlight · Keystroke
- Inline objects — Link · Subscript · Superscript · Inline Math
- Media — Insert Asset · YouTube Video
- Blocks — Code Block · Mermaid Diagram · Math Block · Alert · Icon, then Tab Group · Iframe · Collapsible Block · Form · Horizontal Rule
- Structure — Insert Table · Table Operations, then Blockquote · Task List · Bullet List · Ordered List
At the right end, outside the groups, is the mode switch: Editing, Suggesting or Viewing. It is the one control here that changes how your edits are recorded rather than what they produce — see suggesting mode and tracked changes.
The block-type selector
The wide button at the left of the strip shows the current block’s type and switches it. It offers exactly six choices: Paragraph, and Heading 2 through Heading 6.
Heading 1 is not offered, and that is deliberate. Your page’s title is the H1 on the published page, supplied by the layout from the page’s metadata. A second H1 in the body would compete with it for search engines and for screen-reader users, so the top level of your own content is Heading 2 — which is why the markdown Leed writes for your first section is ## and never #.
Every control
Each row gives the button’s tooltip, its shortcut, the markup it writes, and whether a page type can switch it off. A gate name in the fourth column is a key in the page type’s formatting options; always available means no page type can remove it.
Text and inline marks
| Control | Shortcut | Produces | Page-type gate | More detail |
|---|---|---|---|---|
| Undo | Ctrl + Z | — | always available | — |
| Redo | Ctrl + Shift + Z (also Ctrl + Y on Windows and Linux) | — | always available | — |
| Block-type selector | Ctrl + Shift + 0 for Paragraph, Ctrl + Shift + 2 … 6 for headings | ## … ###### | always available | Basic formatting |
| Bold | Ctrl + B | **bold** | always available | Basic formatting |
| Italic | Ctrl + I | *italic* | always available | Basic formatting |
| Strikethrough | Ctrl + ; | ~~struck~~ | always available | Basic formatting |
| Code | Ctrl + ` or Ctrl + ' | `code` | always available | Basic formatting |
| Highlight | Ctrl + Shift + H | ==marked== | always available | Basic formatting |
| Keystroke | Ctrl + Shift + K | [[Ctrl]] | always available | Basic formatting |
| Subscript | Ctrl + , | H~2~O | always available | Basic formatting |
| Superscript | Ctrl + . | E=mc^2^ | always available | Basic formatting |
| Inline Math | — | ``math E = mc^2`` | always available | Math |
Highlight is worth one caution: the editor lets you pick a color for a highlight, and the format does not carry one. Every highlight publishes as the site’s default <mark>, so a color you choose here is an editing convenience only.
Insert: media and links
| Control | Shortcut | Produces | Page-type gate | More detail |
|---|---|---|---|---|
| Link | Ctrl + K | [text](url), or [text](pageid:<id>) for one of your own pages | always available | Links and the link picker |
| Insert Asset | — |  for an image, {% cloudflare %} for a video, {% audio %} for audio | always available | Inserting media and embeds |
| YouTube Video | — | {% youtube %} | always available | Inserting media and embeds |
| Icon | — | {% icon %} | icons | Embeds and icons |
| Iframe | — | {% iframe %} | iframe | Inserting media and embeds |
| Form | — | {% form %} | hidden on posts page types | Placing a form on a page |
The Asset button opens your asset library rather than a file field, and what it inserts depends on what you pick — an image becomes an image, a video becomes a Cloudflare video player, an audio file becomes an audio element. The Link button opens a three-tab picker whose most useful behavior is invisible: paste one of your own URLs into it and it converts to a durable page link.
Insert: blocks and containers
| Control | Shortcut | Produces | Page-type gate | More detail |
|---|---|---|---|---|
| Code Block | Ctrl + Shift + { | a fenced block, ```python | codeBlock | Code blocks |
| Mermaid Diagram | — | ```mermaid | diagrams | Diagrams |
| Math Block | — | ```math | mathBlock | Math |
| Alert | — | :::info … ::: | alert | Alerts |
| Tab Group | — | ===tabs-container … === | tabGroup | Tabs |
| Collapsible Block | — | +++> Title … +++>, or ++++ Title … ++++ once you set it to start collapsed | collapsibleBlock | Collapsible sections |
| Blockquote | Ctrl + Shift + > | > quoted | always available | Basic formatting |
| Horizontal Rule | Ctrl + Shift + _ | --- | always available | — |
The Mermaid and Math blocks are the same block as Code Block with the language fixed, which is why all three behave identically once inserted. The Tab Group button is disabled while your cursor is already inside a tab group — tab groups cannot be nested — and on a workspace that has predefined tab groups configured it becomes a dropdown offering those groups as well as a plain custom one.
Structure: lists, tables and rules
| Control | Shortcut | Produces | Page-type gate | More detail |
|---|---|---|---|---|
| Insert Table | — | a GFM pipe table with a header row | table | Tables |
| Table Operations | — | edits the table in place: insert row above/below, insert column left/right, merge cells, split cell, delete row/column/table | table | Block types and block settings |
| Task List | Ctrl + Shift + 7 | - [ ] item | always available | Lists and task lists |
| Bullet List | Ctrl + Shift + 8 | - item | always available | Lists and task lists |
| Ordered List | Ctrl + Shift + 9 | 1. item | always available | Lists and task lists |
The Table Operations menu appears only when your cursor is in a table. It has no alignment control, and none is missing by accident: column alignment is not part of what the editor stores, so a table you build here publishes with its columns in the site’s default alignment. Fidelity and unsupported syntax collects that and the handful of other things markdown can express and the editor cannot.
The More menu
The toolbar collapses by the width of the toolbar itself, not the width of your window — so a wide right rail can collapse it on a screen where a narrow one would not. Groups drop out from the right as space runs short, and every one of them reappears in a kebab menu tooltipped More at the end of the strip. Nothing is ever removed; it moves.
| Below this toolbar width | This group moves into More |
|---|---|
| 1330 px | Blockquote, Task List, Bullet List, Ordered List |
| 1270 px | Insert Table, Table Operations |
| 1160 px | Tab Group, Iframe, Collapsible Block, Form, Horizontal Rule |
| 1000 px | Code Block, Mermaid, Math Block, Alert, Icon |
| 800 px | Insert Asset, YouTube Video |
Below 1380 px the mode switch drops its text label and keeps its icon. History, the block-type selector, the inline marks and the inline objects never collapse.
Controls that are missing
A control that is absent from More as well is not a bug and not a plan limit — it is a setting on the page’s type. Nine block features can be switched off per page type: code blocks, diagrams, math blocks, alerts, icons, tab groups, iframes, collapsible blocks and tables. The Form button follows a separate rule and is hidden outright on posts-type page types.
Keys that are not buttons
Some of the editor’s most useful behavior has no control at all.
| Keys | What they do |
|---|---|
| Tab / Shift + Tab | Indent or outdent a list item. Inside a table, move to the next or previous cell |
| Alt + ↑ / Alt + ↓ | Join the current block with the one before or after it |
| Ctrl + [ | Lift the current block out of the container it is in — an alert, a collapsible, a tab panel |
| Escape | Select the parent block instead of the text inside it |
| Ctrl + Enter or Shift + Enter | Insert a hard line break. Inside an alert, collapsible, tab group or code block, this is also how you get a new paragraph out below it |
| Ctrl + J | Open the AI assistant for the current block |
| Ctrl + Shift + S | Show page statistics |
| Ctrl + Shift + ? or F1 | Open the Keyboard shortcuts dialog |
The shortcuts dialog is generated from the editor’s own key registry rather than hand-maintained, grouped into Editor, Formatting, Blocks, Lists and Navigation, so it is the authoritative list for whatever version you are running. It covers editor keys only; the shortcuts that work anywhere in the CMS are on keyboard shortcuts.
There is no AI button on this toolbar. The assistant is reached with Ctrl + J, from the hover pill on the right of any block, or from the Assistant tab in the right rail — all three are described on AI help in the editor.