Markdown is a lightweight markup language created by John Gruber in 2004 and first released on his Daring Fireball website. The project page describes it plainly as “a text-to-HTML conversion tool for web writers,” noting that the name refers to both “a plain text formatting syntax” and “a software tool, written in Perl,” that converts the plain text into HTML. The original Perl tool, Markdown.pl, took a text file marked up with Markdown’s conventions and emitted XHTML.
The overriding design goal, as stated on Gruber’s page, was to “make it as readable as possible.” Gruber wanted Markdown-formatted documents to be “publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.” The syntax draws heavily on conventions that people had already been using informally in plain text email for years, such as using asterisks for emphasis, leading number signs for headings, and indentation for blockquotes and code.
Gruber developed the syntax in collaboration with Aaron Swartz, and the project page credits Swartz with “a tremendous amount of credit for his feedback on the design of Markdown’s formatting syntax,” adding that “Markdown is much better thanks to Aaron’s ideas, feedback, and testing.” Swartz also wrote html2text, a companion utility that converted HTML back into Markdown, which Gruber called “very handy.”
A defining principle of Markdown is that it does not forbid inline HTML. Because the format only covers a subset of common formatting needs, any HTML the author writes inside a Markdown document is passed through untouched, letting writers reach for raw tags whenever the lightweight syntax falls short. This pragmatic escape hatch made Markdown comfortable for people who already knew HTML while keeping the common cases effortless.
Over the following decade Markdown spread far beyond personal blogs. It became the default format for README files on code-hosting platforms, the markup behind countless static-site generators, and the formatting layer in chat tools, issue trackers, and note-taking applications. Its very popularity, however, exposed a weakness: Gruber’s original prose specification left many edge cases undefined, and the proliferation of subtly incompatible implementations eventually motivated the more rigorous CommonMark specification.
The original implementation was released under a BSD-style license, and Markdown’s conventions have since been absorbed into the everyday workflow of writing for the web, making it one of the most widely used markup languages of its era despite, or because of, its deliberate minimalism.