This page lists the markdown Monofile renders. The same rules apply in the editor, in a share link, in an embed, and on these documentation pages. A small set of designed blocks (titled code, tabs, callouts, steps and cards) sits on top of this syntax. [[Rich Markdown]] documents them.

## Headings

All six levels work, `#` through `######`.

```md
# Page title
## Section
### Subsection
```

## Text formatting

| Syntax | Result |
|---|---|
| `**bold**` or `__bold__` | bold |
| `*italic*` or `_italic_` | italic |
| `~~strike~~` | struck through |
| `` `code` `` | inline code |

Monofile normalizes the spelling on save. `__bold__` comes back as `**bold**` and `_italic_` as `*italic*`. The meaning is identical. The original characters are not kept.

## Links

```md
An [inline link](https://monofile.ai) and a bare URL like https://monofile.ai.

A [reference link][home] also works.

[home]: https://monofile.ai
```

Bare URLs become links automatically. Reference-style links render, but the next save rewrites them as inline links and drops link titles (`[x](url "title")`).

To link to another file in your workspace, write a wiki-link instead of a URL. See [[Wiki-Links]].

## Lists

```md
- a bullet
- another bullet
  - nested one level

1. first
2. second
```

Bullets accept `-`, `*` or `+`, and all three save as `-`. Ordered lists keep their starting number, so a list that begins at `3.` stays at `3.`. Indentation nests, and the two kinds mix, so a bullet list can sit inside a numbered item.

## Task lists

```md
- [ ] not done yet
- [x] done
```

Tick a checkbox in the editor and the file changes to `- [x]`. `- [X]` is accepted on the way in and saved as lowercase.

> [!NOTE]
> A task item and a plain bullet cannot share a list. Mix them in one block and they render as two separate lists.

## Tables

Pipe tables with a header row.

```md
| Field | Type | Required |
|---|---|---|
| `name` | string | yes |
| `count` | number | no |
```

Cells take inline formatting, inline code, links and wiki-links. Column alignment markers such as `|:---:|` render, but the file comes back with plain `---` separators. In the editor, drag a column border to resize it, and press <kbd>Tab</kbd> to move to the next cell. <kbd>Tab</kbd> in the last cell adds a row.

## Code blocks

Fence with three backticks or three tildes, and add a language for syntax highlighting. The highlighting follows your editor theme.

~~~md
```ts
const total = items.reduce((a, b) => a + b, 0)
```
~~~

A fence with no language renders as plain monospaced text. A block indented by four spaces also becomes a code block, without a language.

## Mermaid diagrams

A fence tagged `mermaid` renders as a diagram.

```mermaid
flowchart LR
  Draft[Draft] --> Review[Review]
  Review --> Publish[Publish]
```

See [[Diagrams]] for the diagram types, how failures are shown, and how to turn a diagram into an editable drawing.

## Blockquotes

```md
> A quote.
>
> > A quote inside a quote.
```

Nesting works. A quote whose first line is `[!NOTE]`, `[!TIP]`, `[!IMPORTANT]`, `[!WARNING]` or `[!CAUTION]` renders as a callout, in the editor and everywhere a file is shown. The rest of the designed blocks (titled code, tabs, steps, cards) are on [[Rich Markdown]].

## Images

```md
![A diagram of the pipeline](https://example.com/pipeline.png)
```

The HTML form also works, and it is how a resized image is stored: `<img src="..." width="400">`. Drag an image file into the editor and Monofile uploads it and inserts the markdown. See [[Uploads and Media]].

## Horizontal rules

`---`, `***` and `___` all render as a divider and are all saved as `---`.

## Line breaks

A single newline inside a paragraph renders as a line break. This differs from strict markdown, which collapses it to a space.

```md
Line one
Line two
```

That renders as two lines. A blank line still starts a new paragraph. Two trailing spaces and a literal `<br>` also produce a line break.

## Frontmatter

A YAML block at the top of the file is frontmatter. The editor shows it as its own block and preserves it exactly on save.

```md
---
title: Release notes
tags: [changelog, v2]
---
```

## What does not render

Monofile parses a defined set of syntax. Anything outside it stays in your file as literal text.

| Syntax | What happens |
|---|---|
| `$x^2$` and `$$...$$` math | Typed as text, it stays text. In the editor, `/math` inserts a KaTeX block that saves as `$$...$$`. These docs pages do not render math |
| `==highlight==`, `H~2~O`, `2^10^` | Left as literal text |
| Definition lists (`Term` then `: value`) | Left as literal text |
| Block-level HTML (`<div>`, `<details>`) | The tags are dropped and only the text inside survives. For a collapsible section use `:::details Title` from [[Rich Markdown]] |
| Inline HTML (`<b>`, `<em>`, `<u>`, `<br>`, `<img>`, `<kbd>`) | Converted to the matching formatting |
| An HTML `<table>` | Converted to a real table, without a header row |

> [!WARNING]
> The editor rewrites the whole file when it saves, so unsupported syntax does not always come back byte-identical. A `<details>` block loses its tags and a `$$` block loses its backslashes. If a file must keep such syntax untouched, open it as a code file instead of the markdown editor.

## Next steps

:::cards
- [[Rich Markdown]] — Titled code, tabs, callouts, details, steps, cards, prompts and more: plain markdown that renders designed everywhere.
- [[The Markdown Editor]] — Live WYSIWYG editing, slash commands, and how saving works.
- [[Wiki-Links]] — Links between files: autocomplete, aliases, and links that survive renames.
- [[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.
:::
