Markdown Guide

Markdown is a lightweight, easy-to-read plain text markup language. It allows you to format text using simple keyboard symbols instead of complex HTML tags. At its core, Notate brings markdown notation into a fast and easy to use markdown editor.

Try it
Example Markdown

Markdown is plain text with a few notations that are used to markup the document. Try editing this.

  • A list item
  • A finished task
  • Link a thought to Another note

You can highlight a phrase, or drop in some code.

Everything here is a plain file on your disk.

Rendered exactly as Notate renders it. Select a word, or type / on a new line, to use the same toolbars the editor has. Formatting in Notate

Headings

One to six hash marks set the heading level. Leave a space after the hashes.

You type
# Heading one
## Heading two
### Heading three
You get
Heading one
Heading two
Heading three
You type
#### Heading four
##### Heading five
###### Heading six
You get
Heading four
Heading five
Heading six

Six is the deepest level markdown defines.

Emphasis and inline styles

The marks you will reach for most often, and can nest.

You type
**bold** and *italic* and ***both***
You get

bold and italic and both

You type
~~struck through~~
You get

struck through

You type
==highlighted==
You get

highlighted

The widely used spelling for a highlight, so it survives a move to most other markdown editors.

You type
`inline code`
You get

inline code

Paragraphs and line breaks

A blank line starts a new paragraph. Inside a paragraph, a line break has to be asked for, which catches almost everyone out once.

You type
One paragraph.

A second paragraph.
You get

One paragraph.

A second paragraph.

A blank line between them. This is the normal way to separate text.

You type
This line
and this line
become one paragraph.
You get

This line and this line become one paragraph.

Pressing Enter once is not a line break. Markdown joins the lines, which is what lets you wrap long paragraphs in your editor without changing the output.

You type
First line.  
Second line, same paragraph.
You get

First line.
Second line, same paragraph.

Two spaces at the end of a line force a break. They work everywhere, but they are invisible in your source, so a stray edit can silently remove them.

You type
First line.\
Second line, same paragraph.
You get

First line.
Second line, same paragraph.

A trailing backslash does the same thing and stays visible. Easier to maintain, slightly less widely supported.

Escaping characters

A backslash before a markdown character prints the character instead of letting it format anything.

You type
\*not italic\* and \*\*not bold\*\*
You get

*not italic* and **not bold**

You type
\# Not a heading
You get

# Not a heading

Without the backslash this would become a heading.

You type
\[\[Not a wiki-link\]\]
You get

[[Not a wiki-link]]

Useful when you want to write about the syntax rather than use it.

You type
Inside code, `*nothing*` needs escaping.
You get

Inside code, *nothing* needs escaping.

Backticks already turn formatting off, so a code span is usually simpler than a run of backslashes.

Lists and tasks

Bullets, numbers, and checkboxes. Indent by two spaces to nest.

You type
- Coffee
- Tea
  - Green
  - Black
You get
  • Coffee
  • Tea
    • Green
    • Black
You type
1. First
2. Second
3. Third
You get
  1. First
  2. Second
  3. Third
You type
5. Starts at five
6. Then six
You get
  1. Starts at five
  2. Then six

The first number sets the start; the rest are renumbered for you, so a list stays correct after you reorder it.

You type
- [x] Done already
- [ ] Still to do
You get
  • Done already
  • Still to do

Checkboxes are GitHub-flavored markdown. They render as real checkboxes and stay plain text on disk.

Code

Backticks for a phrase, three backticks for a block. Naming the language turns on syntax highlighting.

You type
Use `npm install` to begin.
You get

Use npm install to begin.

You type
```js
const notes = files.map(read);
```
You get
const notes = files.map(read);

Dozens of languages are highlighted, and an unlabelled block is detected automatically.

Quotes and dividers

You type
> A quotation.
> It can run to several lines.
You get

A quotation. It can run to several lines.

You type
> Someone said this.
>
> > And quoted this in turn.
You get

Someone said this.

And quoted this in turn.

Add a second angle bracket to nest. The blank quoted line keeps the two apart.

You type
> A quote can hold other things:
>
> - a list
> - and another item
You get

A quote can hold other things:

  • a list
  • and another item

Anything can go inside a quote as long as every line carries the angle bracket.

You type
Above the line.

---

Below the line.
You get

Above the line.


Below the line.

Pipes separate the columns; the dashes under the header set alignment. Notate tidies the spacing for you as you type.

You type
| Feature | Free | Paid |
| --- | :---: | ---: |
| Local files | yes | yes |
| Sync | no | yes |
You get
Feature Free Paid
Local files yes yes
Sync no yes

Colons in the divider row control alignment: left, centered, then right.

You type
| Cell | Content |
| --- | --- |
| Styled | **bold** and `code` |
You get
Cell Content
Styled bold and code

Inline formatting works inside a cell. Block content, like a list or a second paragraph, does not.

Footnotes

You type
A claim worth a citation.[^1]

[^1]: The citation itself, collected at the foot of the note.
You get

A claim worth a citation.[^1]

[^1]: The citation itself, collected at the foot of the note.

A YAML block fenced by three dashes at the very top of a note holds its metadata. Notate reads and writes it, and keeps any keys it does not recognise exactly as you left them.

You type
---
title: Ridge traverse
tags:
  - hiking
  - gear
---

The note itself starts here.
You get Notate

Nothing. Frontmatter is metadata, not content, so Notate strips it before rendering the note.

It must be the first thing in the file, with no blank line above it.

You type
---
title: Ridge traverse
date: 2026-08-18
description: Two days on the ridge.
aliases:
  - Ridge walk
---
You get Notate

Nothing, as above.

Notate reads title, date, updated, tags, description, and aliases, and writes back only three of them: title, tags, and description. Every other key, along with your comments and key order, is left byte-for-byte as you wrote it, so metadata from another editor survives a round trip.

Tags group notes across folders. Notate writes them to frontmatter, and also reads them from the body of a note so a folder written in another editor arrives with its tags intact.

You type
Notes from the trip. #hiking #gear
You get Notate

Notes from the trip. #hiking #gear

A body tag is a hash mark followed immediately by the tag, at the start of a line or after a space. It stays ordinary text in the note and shows up in the Tags panel and in search.

You type
Nested tags use a slash: #project/notate
You get Notate

Nested tags use a slash: #project/notate

Nesting groups related tags together without needing a separate folder for them.

You type
Not tags: #1, #123, and word#fragment
You get Notate

Not tags: #1, #123, and word#fragment

A tag needs at least one character that is not a digit, so issue numbers like #1 stay numbers. The hash mark also has to start the line or follow a space, which keeps URL fragments and mid-word hashes out.

You type
Inside code, `#nothing` is not a tag.
You get Notate

Inside code, #nothing is not a tag.

Code spans and fenced blocks are skipped, so a shell comment or a CSS colour never becomes a tag.

A fenced mermaid block becomes a diagram: flowcharts, sequence diagrams, and charts, drawn from text you can still edit in any editor.

Architecture

How a trail reaches the map

A fenced mermaid block, rendered in the preview.

Trail API Sync service Local store Map view Offline tiles

What Notate does not render

Markdown has no single standard, so every editor draws its own line. These constructs are common elsewhere and stay as plain text in Notate. Nothing is lost, because the file is still just text, but it will not render.

You type
Inline math like $E = mc^2$ and display math:

$$
\frac{a}{b}
$$
You get

Inline math like $E = mc^2$ and display math:

$$ \frac{a}{b} $$

There is no math or LaTeX rendering. The dollar signs and everything between them stay literal.

You type
> [!NOTE]
> A callout block.
You get

[!NOTE] A callout block.

Callouts and admonitions render as an ordinary quote, with the [!NOTE] marker visible as text.

You type
[[Another note|a different label]]
You get

Another note|a different label

Wiki-links have no alias syntax. The whole string is treated as the note title, so the pipe stops the link resolving. Use a normal [label](link) if you need different link text.

You type
<kbd>Cmd</kbd> and <div class="box">a div</div>
You get

<kbd>Cmd</kbd> and <div class="box">a div</div>

Raw HTML is not rendered. Markdown that leans on HTML tags for layout will show the tags as text, so anything you want styled has to be written in markdown itself.

You type
==**bold inside a highlight**==
You get

A highlight containing literal asterisks. The nesting works in this page's renderer but not in the app, so we are describing the app rather than showing you our own output.

Highlights do not combine with other inline marks. Put the highlight inside the bold instead of the other way around.

Common questions

Why doesn't pressing Enter start a new line in markdown?

Markdown treats a single newline as a space, which is what lets you wrap a long paragraph across several lines in your editor without changing how it reads. To force a break inside a paragraph, end the line with two spaces or with a backslash. To start a new paragraph, leave a blank line.

Where does Notate store the tags on a note?

In the note's frontmatter, the YAML block fenced by three dashes at the very top of the file. Notate also reads inline tags written in the body, such as #hiking, so a folder of notes written in another editor arrives with its tags already in place. Both are plain text in the file, so nothing is hidden in a database.

Will notes written in Notate still work in another markdown editor?

Yes. Almost everything Notate uses is CommonMark or GitHub-flavored markdown, which every markdown editor understands. The three additions are frontmatter, tags, and wiki-links written with double square brackets, and all three are ordinary text on disk, so another editor shows them as written rather than losing them.

See all questions

Markdown that stays yours.

Notate keeps every note as an ordinary .md file in a folder you choose, so everything on this page is readable with or without Notate. Start free on desktop.