#
Markdown 101
← Back to lessons
The backstory

Where Markdown
came from

A tiny language built on one big idea: writing for the web should be as easy as jotting a note. Here's the story, plus a pile of facts to drop at your next dinner party.

2004
A writer and a hacker walk into a text file

Writer John Gruber created Markdown with technical help from the late Aaron Swartz. The goal: a plain-text format so readable you'd be happy to publish the raw text as-is — no angle brackets in sight.

The idea
Punctuation people already used

Gruber looked at how people already formatted plain-text emails — asterisks for emphasis, dashes for bullets, > for quoted replies — and turned those habits into a language. That's why Markdown feels obvious: you've been writing it for years without knowing.

2014
CommonMark brings order

The original spec left room for interpretation, so different sites rendered the same text differently. CommonMark arrived as a precise, shared standard. GitHub, Reddit, Stack Overflow and others built on it — including extras like tables and task lists (often called "GitHub Flavored Markdown").

Today
It's quietly everywhere

README files, GitHub issues, Reddit comments, Discord and Slack messages, note apps like Obsidian and Notion, documentation sites, and even the chat window you're probably using right now. Learn it once, use it for life.

Where you'll meet it
🐙
GitHub
READMEs, issues, pull requests — all Markdown.
💬
Chat apps
Discord, Slack & more use Markdown shortcuts.
📝
Note apps
Obsidian, Notion & co. speak it natively.
🌐
Websites
Static-site tools turn .md files into pages.
👽
Reddit
Every comment box accepts Markdown.
🤖
AI chats
Most assistants format replies in Markdown.
✦ Fun facts to show off
01

The name is a pun. Programmers had "markup" languages like HTML, so Gruber called his easygoing version Markdown. The file extension .md stuck.

02

The # symbol has at least a dozen names: hash, pound, sharp, number sign, and the famously goofy octothorpe.

03

Numbered lists don't care about your numbers. Type 1. 1. 1. and Markdown still renders 1, 2, 3.

04

Markdown's whole philosophy: the source should be readable as-is. That's why a raw .md file still makes sense to a human with zero rendering.

05

Tables, task lists, and ~~strikethrough~~ weren't in the original — they're GitHub Flavored Markdown extensions that became unofficial standards.

06

You can usually mix in raw HTML when Markdown isn't enough — it quietly passes most tags straight through.

Enough history — go make some headings.

Ten bite-sized lessons, a final exam, and a certificate with your name on it.

Start learning →