This Markdown cheat sheet covers the symbols you'll use daily. Use # for a heading, **bold**, *italic*, - for a bullet, - [ ] for a checkbox, [text](https://example.com) for a link and backticks for code. The table below lists each common element with its syntax and whether it is core Markdown or an extension. It also shows whether a note app like Gubb turns it into formatting as you type.
"Core" means the element is part of CommonMark, the common Markdown specification. "GFM" means GitHub Flavored Markdown, a widely used superset that adds tables, task lists and strikethrough. If you are new to the format, start with what Markdown is and where it works.
Markdown cheat sheet: syntax at a glance
| Element | Syntax | Standard | Live formatting in Gubb |
|---|---|---|---|
| Heading 1–6 | # Title to ###### Title |
Core | Yes: type # to ######, then Space. Or ⌘1 to ⌘6 |
| Bold | **bold** or __bold__ |
Core | Use ⌘B |
| Italic | *italic* or _italic_ |
Core | Use ⌘I |
| Strikethrough | ~~text~~ |
GFM | Use ⌘D |
| Underline | none in Markdown | Not Markdown | Use ⌘U |
| Highlight | ==text== |
Not standard | Use ⌘H |
| Bulleted list | - item (or *, +) |
Core | Yes: - or *, then Space |
| Numbered list | 1. item |
Core | Yes: 1., then Space |
| Checklist | - [ ] task / - [x] done |
GFM | Yes: [ ] or [x], then Space |
| Link | [text](https://example.com) |
Core | Use ⌘K |
| Inline code | `code` |
Core | Use ⌘` |
| Code block | three backticks on their own line | Core | Yes: three backticks, then Space |
| Blockquote | > quote |
Core | No |
| Horizontal rule | --- |
Core | No |
| Table | pipes and dashes (see below) | GFM | No: notes can't hold tables |
| Image |  |
Core | No: notes can't hold images |
| Footnote | text[^1] and [^1]: note |
Extension | No |
The sections below show each element in context, with the edge cases that stop Markdown from rendering.
Headings
Put one to six # symbols at the start of a line, then a space. More # symbols means a smaller heading.
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
The space matters. In CommonMark, #Heading without a space is plain text, not a heading.
There is an older alternative for the top two levels: underline the text with = signs for Heading 1 or - signs for Heading 2.
Heading 1
=========
Heading 2
---------
Emphasis
*italic* or _italic_
**bold** or __bold__
***bold and italic***
~~strikethrough~~
A few details that trip people up:
- Underscores inside words don't create italics.
snake_case_namestays as typed in CommonMark. Asterisks do work inside words:un*believ*ableitalicizes the middle. - Strikethrough is a GFM extension. Most modern renderers support
~~text~~, but a strict CommonMark renderer shows the tildes. - Markdown has no underline. Many renderers accept the HTML
<u>tag inside Markdown, but plenty of note apps strip HTML. - Highlight (
==text==) isn't in CommonMark or GFM. Some editors accept it. Treat it as app-specific. - No colors or font sizes. Markdown describes structure, not styling. Your app's theme decides how bold text or a heading looks.
Lists and checklists
Start each item with -, * or + and a space for bullets, or a number followed by a period for numbered lists.
- Milk
- Eggs
- Bread
1. Preheat the oven
2. Mix the batter
3. Bake for 25 minutes
Renderers number ordered lists for you. A list written as 1., 1., 1. displays as 1, 2, 3, and the first number you type sets the starting point. CommonMark also accepts 1) instead of 1..
To nest a list, indent the child item so it lines up under the text of the parent item: two spaces under - , three under 1. . Four spaces works in almost every renderer.
- Groceries
- Milk
- Eggs
- Hardware store
- Screws
Checklists (task lists)
Task lists are a GFM extension: a list item that starts with [ ] (a space between the brackets) for an open task or [x] for a done one.
- [ ] Draft the outline
- [x] Book the meeting room
- [ ] Send the invoice
On GitHub and in many note apps the boxes are clickable. In a strict CommonMark renderer they show as literal brackets. For more examples and app differences, see our Markdown checklist syntax guide.
Links and code
Links
[Link text](https://example.com)
[Link with a hover title](https://example.com "Title text")
<https://example.com>
The angle-bracket form shows the URL itself as a clickable link. GFM also links bare URLs that start with http://, https:// or www..
For long documents, reference-style links keep paragraphs readable:
Read the [CommonMark spec][spec] before you write a parser.
[spec]: https://commonmark.org
Inline code
Wrap text in single backticks: `npm install`. If the code itself contains a backtick, wrap it in double backticks with a space inside: `` a `tick` here ``.
Code blocks
Put three backticks on a line before and after the code. Add a language name after the opening backticks to get syntax highlighting where the renderer supports it.
```python
def greet(name): return f"Hello, {name}"
```
Three tildes (~~~) work the same way. Indenting every line by four spaces also makes a code block, but it can't carry a language name, and it's easy to trigger by accident.
Tables and images
Tables
Tables are a GFM extension. You need a header row, a delimiter row of dashes, then the body rows. Leading and trailing pipes are optional but make tables easier to read.
| Item | Qty | Price |
|:--------|:---:|------:|
| Coffee | 2 | 7.00 |
| Bagel | 1 | 3.50 |
Colons in the delimiter row set alignment: :--- left, :---: center, ---: right. Using at least three dashes per column is a safe habit. The columns don't have to line up in your source text.
What tables can't do:
- Merge cells or span rows.
- Hold multi-paragraph content or lists inside a cell.
- Contain a literal
|unless you escape it as\|.
Images
An image is a link with an exclamation mark in front. The text in brackets is the alt text that screen readers announce and that shows if the image fails to load.


Standard Markdown has no syntax for image size or alignment. Some renderers accept HTML <img> tags with a width; many note apps don't.
Quotes, dividers, line breaks and escaping
> A blockquote. Start each line with >.
>
> > Nest a quote with two of them.
---
Line one\
Line two (the backslash forces a line break)
\*Not italic\* and \# not a heading
- Horizontal rule:
---,***or___alone on a line. Leave a blank line above---, or the line above turns into a Heading 2. - Line breaks: a single Return inside a paragraph is ignored in standard Markdown, and the two lines join. Leave a blank line to start a new paragraph. To break a line without a new paragraph, end it with a backslash or with two spaces.
- Escaping: put a backslash before any Markdown symbol (
\*,\_,\#,\[,\`) to show it as a literal character. - Footnotes:
Text with a note[^1]plus a line[^1]: The note.anywhere in the document. GitHub and many renderers support this, but it isn't part of CommonMark.
Typing shortcuts in note apps
A Markdown file and a Markdown-style editor are different things. In a file, **bold** stays as asterisks until something renders it. Many note apps instead watch for the markers as you type and swap them for real formatting on the spot. Which markers they convert varies by app, so check the app's help page before relying on a symbol.
Here is what Gubb, our notes app, converts. Type the marker at the start of a line, then press Space.
| Type at line start, then Space | Result |
|---|---|
# to ###### |
Heading 1 to Heading 6 |
- or * |
Bulleted list |
1. (any number and a period) |
Numbered list |
[] or [ ] |
Unchecked checklist item |
[x] or [X] |
Checked checklist item |
| three backticks | Code block |
| Where this differs from writing a Markdown file: |
- Checklists don't need the dash. Type
[ ]and Space to start a checklist. Click the box to tick it; checked items get a strike-through. - Return continues a list. In a list or checklist, Return adds a new item, and Return on an empty item ends the list. Return after a heading starts a normal paragraph.
- Delete turns a block back into text. Delete (Backspace) at the start of a list item turns it back into a paragraph. Return on an empty code block does the same.
Inline styles in Gubb come from keyboard shortcuts rather than typed markers, for example ⌘B (Command-B) for bold. Each one also works with Control in place of Command.
| Style | Shortcut |
|---|---|
| Bold | ⌘B |
| Italic | ⌘I |
| Underline | ⌘U |
| Strikethrough | ⌘D |
| Inline code | ⌘` |
| Highlight | ⌘H |
| Heading 1–6 (toggle) | ⌘1 to ⌘6 |
| Insert link | ⌘K |
| Open the link at the cursor | ⌘↩ |
⌘K opens an Insert Link dialog. With text selected, the selection becomes the link text. With nothing selected, Gubb uses the domain as the link text, and it adds https:// if you leave it off.
Blockquotes, horizontal rules, tables, images and footnotes are not converted, and Gubb notes can't contain tables or images. Full details are in the notes section of the Gubb help center.
Where your formatting ends up in Gubb
Gubb stores live formatting in its own format, not as Markdown text. Two things to know if you plan to move notes elsewhere (as of November 2026):
- Gubb keeps notes in a local database on your computer, not as
.mdfiles. - ⌘⇧C (Command-Shift-C) copies the whole note as plain text. Bullets become "• " lines and links become "text (url)", which reads cleanly but isn't Markdown syntax.
The Markdown option under Settings ▸ Export/Import currently writes the raw editor data rather than clean Markdown. Don't count on it to carry notes into another Markdown app. If you need your notes as plain Markdown files on disk, use an app built around files, or write in a plain-text editor.
The Gubb Mac download comes with a 7-day free trial.
If your Markdown doesn't render
- A heading shows the
#symbol. There's no space after the#. Write# Title, not#Title. In a live editor, the marker also has to be the first thing on the line. - A list or table merges into the paragraph above. Add a blank line before it. Some renderers need that separation to start a new block.
- A table shows as raw pipes. Check for the delimiter row (
|---|---|) under the header. If it's there, the renderer may be plain CommonMark, which has no tables. - Checkboxes show as
[ ]text. In GFM you need both the list marker and the space inside the brackets:- [ ] task. Renderers without task-list support always show the brackets. - Lines run together. One Return isn't a line break in standard Markdown. Leave a blank line between paragraphs, or end the line with a backslash.
- A nested list comes out flat. Indent the child items further, to line up with the parent's text or by four spaces.
- Random words turn italic. Asterisks or underscores paired around words are read as emphasis. Escape them with a backslash, or put the text in backticks if it's code.
FAQ
What's the difference between CommonMark and GitHub Flavored Markdown?
CommonMark is the core specification: headings, emphasis, lists, links, images, code and quotes. GitHub Flavored Markdown adds tables, task lists, strikethrough and automatic linking of bare URLs. Most modern apps follow GFM or something close to it.
Can I change text color or size in Markdown?
Not with Markdown syntax. Heading levels are the only built-in way to change size. Some renderers accept HTML for color, but note apps often remove it.
Do I have to type the symbols, or can I use shortcuts?
In a plain .md file you type the symbols. In a live editor you can usually do both. In Gubb, block markers like #, - and [ ] convert as you type, and inline styles use shortcuts such as ⌘B and ⌘I.
