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.
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.
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.
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").
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.
The name is a pun. Programmers had "markup" languages like HTML, so Gruber called his easygoing version Markdown. The file extension .md stuck.
The # symbol has at least a dozen names: hash, pound, sharp, number sign, and the famously goofy octothorpe.
Numbered lists don't care about your numbers. Type 1. 1. 1. and Markdown still renders 1, 2, 3.
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.
Tables, task lists, and ~~strikethrough~~ weren't in the original — they're GitHub Flavored Markdown extensions that became unofficial standards.
You can usually mix in raw HTML when Markdown isn't enough — it quietly passes most tags straight through.
Ten bite-sized lessons, a final exam, and a certificate with your name on it.
Start learning →