Text formatting
- **bold** renders as bold
- *italic* or _italic_ renders as italic
- ~~strikethrough~~ renders as strikethrough (GitHub-flavoured)
- `inline code` wraps text in a code span
- A blank line starts a new paragraph — a single line break usually does not
Headings
Prefix a line with one to six hashes followed by a space. Use a single h1 per document and keep the order logical, skipping levels only when the content genuinely demands it.
- # Heading 1
- ## Heading 2
- ### Heading 3
- #### Heading 4
Lists
- - starts an unordered list item; use * or + instead if you prefer
- 1. starts an ordered list; number order does not matter as long as it starts at 1
- Indent by two to four spaces to nest a list inside another
- - [ ] an unchecked task item
- - [x] a checked task item
Links and images
- [link text](https://example.com) creates a hyperlink
- [link text](https://example.com "Title") adds a hover title
-  embeds an image
- <https://example.com> auto-links a bare URL in GFM
- [reference][1] with a [1]: https://example.com definition below lets you reuse links
Tables
A pipe table needs a header row, a separator row of dashes, and one row per record. Alignment is set with colons in the separator row. The pipes do not need to line up — the renderer ignores whitespace — but consistent spacing keeps the source readable.
- | Name | Value |
- | --- | --- |
- | Alpha | 1 |
- | Beta | 2 |
Code blocks
Wrap inline code in single backticks. For a block, use three backticks on their own lines, optionally followed by a language name to enable syntax highlighting in renderers that support it.
- ```js
- const greeting = 'hello';
- ```
Blockquotes and horizontal rules
- > starts a blockquote; stack >> to nest one level deeper
- > Blockquotes are often used for callouts and notes
- --- on its own line draws a horizontal rule (three or more dashes, asterisks or underscores)
Escaping and gotchas
- Put a backslash before a character to show it literally: \* prints an asterisk
- A line with two or more trailing spaces, or a trailing backslash, forces a line break
- Blank lines around block elements prevent list and paragraph merging
- Not every renderer supports every feature — preview before publishing