Markdown cheatsheet
A working reference for the Markdown you will actually type: headings, emphasis, lists, links, images, code, tables, quotes and task lists. Each row shows the source and what it becomes. Examples below the table are copy-ready.
Syntax table
| What | You type | You get |
|---|---|---|
| Heading | ## Section | A level-2 heading. One # is the title. Six is the smallest. |
| Bold | **bold** | bold |
| Italic | *italic* | italic |
| Strike | ~~gone~~ | |
| Link | [label](https://example.com) | A clickable label |
| Image |  | An image, if the URL loads |
| Inline code | `npm install` | Monospace inside a sentence |
| Bullet list | - item | A dot list. Indent two spaces to nest. |
| Numbered list | 1. item | An ordered list |
| Task | - [ ] todo / - [x] done | A checkbox line |
| Quote | > quoted line | A blockquote |
| Rule | --- | A horizontal line |
| Table | | A | B | then |---|---| | A table |
A short page you can paste
# Release notes ## What changed - Faster preview - **Fixed** the broken table - See the [full log](https://example.com/log) ## Install ``` npm install example ``` ## Tasks - [x] Write the notes - [ ] Tag the release > Ship on Tuesday.
Paste that into the Markdown editor to see the rendered page, or into Markdown to HTML if you need the tags.
Rules that trip people up
Blank lines matter. A heading stuck to the paragraph above it may still work, but a list that follows a paragraph without a blank line often becomes one long paragraph. Put a blank line before and after lists, quotes, code fences and tables.
Code fences need a matching close. Three backticks open the block, three backticks on their own line close it. If the preview swallows the rest of the page, the fence was not closed.
Links need a full URL or a path the destination understands. [docs](docs) is fine in a repo README and useless on a random web page. For the web, use https://.
Images are the same. Markdown does not embed the file. It only points at an address. A path like ./photo.png works next to the file on disk and fails in an online viewer.
Asterisks inside words can start emphasis by accident. If you need a literal asterisk, escape it with a backslash: \*. The same goes for underscores in file names that you do not want italic.
Flavors
Original Markdown covers headings, emphasis, lists, links, images, code and quotes. GitHub-flavored Markdown adds tables, task lists, strikethrough and fenced code with a language tag. That is what most editors, including this site, implement.
Not every destination agrees. A CMS may drop tables. Email clients often ignore task lists. Slack has its own subset. If the destination is picky, convert to HTML and check the result, or keep the source and let the destination render it.
LaTeX math, footnotes and definition lists are extensions. This site’s tools do not typeset math. If a line starts with $$, you will see the source, not a formula.
From a ChatGPT reply
ChatGPT answers are usually Markdown even when the chat UI hides the marks. Copy the reply as text, not as a screenshot. Paste it into ChatGPT to HTML or ChatGPT to PDF. Delete the polite lead-in (“Sure, here is…”) if you do not want it in the file. Citation chips like 【1†source】 stay as text.
A practical order of work
Write the draft in plain sentences first. Add headings when the sections are stable, then lists, then links. Formatting too early makes a rewrite annoying because every mark has to move with the sentence.
When the draft is done, preview it. Broken fences and missing blank lines show up immediately. Convert to HTML only after the preview looks right. Print to PDF from that same preview if you need a file for someone who will not open a .md.
Keep the .md as the source of truth. HTML and PDF are exports. If you edit the export and not the source, the next export will overwrite the fix.
Frequently asked questions
Do I need an app?
No. A text box is enough. The tools on this site preview and convert in the browser.
Is Markdown the same as HTML?
No. Markdown is a writing shorthand. HTML is what browsers render. A converter turns one into the other. You can also publish the .md file and let a docs site render it.
Which heading should be the title?
One H1 per page is the usual rule. Use # Title once, then ## for sections. Skipping levels (H2 then H4) is valid but harder to scan.
How do I show a backtick inside code?
Wrap inline code with double backticks if the code itself contains one: ``use `ticks` ``.
Where do I practice?
Open the editor for writing, the viewer for a file you already have, or the converters if you need HTML or a printout.