ByJohn Gruber

Sentry — Catch, trace,
and fix bugs across your entire stack.
Markdown 1.0.1 (18 KB) — 17 Dec 2004
Markdown is a text-to-HTML conversion tool for web writers. Markdownallows you to write using an easy-to-read, easy-to-write plain textformat, then convert it to structurally valid HTML.
Thus, “Markdown” is two things: (1) a plain text formatting syntax;and (2) a software tool, written in Perl, that converts the plain textformatting to HTML. See theSyntax page for details pertaining toMarkdown’s formatting syntax. You can try it out, right now, using theonlineDingus.
The overriding design goal for Markdown’s formatting syntax is to makeit as readable as possible. The idea is that a Markdown-formatteddocument should be publishable as-is, as plain text, without lookinglike it’s been marked up with tags or formatting instructions. WhileMarkdown’s syntax has been influenced by several existing text-to-HTMLfilters, the single biggest source of inspiration for Markdown’ssyntax is the format of plain text email.
The best way to get a feel for Markdown’s formatting syntax is simplyto look at a Markdown-formatted document. For example, you can viewthe Markdown source for the article text on this page here:http://daringfireball.net/projects/markdown/index.text
(You can use this ‘.text’ suffix trick to view the Markdown source forthe content of each of the pages in this section, e.g. theSyntax andLicense pages.)
Markdown is free software, available under a BSD-style open sourcelicense. See theLicense page for more information.
I’ve set up a publicmailing list for discussion about Markdown.Any topic related to Markdown — both its formatting syntax andits software — is fair game for discussion. Anyone who is interestedis welcome to join.
It’s my hope that the mailing list will lead to good ideas for futureimprovements to Markdown.
Markdown requires Perl 5.6.0 or later. Welcome to the 21st Century.Markdown also requires the standard Perl library moduleDigest::MD5, which is probably already installed on your server.
Markdown works with Movable Type version 2.6 or later (includingMovable Type 3.0).
Copy the “Markdown.pl” file into your Movable Type “plugins”directory. The “plugins” directory should be in the same directoryas “mt.cgi”; if the “plugins” directory doesn’t already exist, useyour FTP program to create it. Your installation should look likethis:
(mt home)/plugins/Markdown.plOnce installed, Markdown will appear as an option in Movable Type’sText Formatting pop-up menu. This is selectable on a per-post basis:

Markdown translates your posts to HTML when you publish; the poststhemselves are stored in your MT database in Markdown format.
If you also install SmartyPants 1.5 (or later), Markdown willoffer a second text formatting option: “Markdown WithSmartyPants”. This option is the same as the regular “Markdown”formatter, except that it automatically uses SmartyPants to createtypographically correct curly quotes, em-dashes, and ellipses. SeetheSmartyPants web page for more information.
To make Markdown (or “Markdown With SmartyPants”) your defaulttext formatting option for new posts, go to Weblog Config:Preferences.
Note that by default, Markdown produces XHTML output. To configureMarkdown to produce HTML 4 output, see “Configuration”, below.
Markdown works with Blosxom version 2.0 or later.
Rename the “Markdown.pl” plug-in to “Markdown” (case isimportant). Movable Type requires plug-ins to have a “.pl”extension; Blosxom forbids it.
Copy the “Markdown” plug-in file to your Blosxom plug-ins folder.If you’re not sure where your Blosxom plug-ins folder is, see theBlosxom documentation for information.
That’s it. The entries in your weblog will now automatically beprocessed by Markdown.
If you’d like to apply Markdown formatting only to certainposts, rather than all of them, Markdown can optionally be used inconjunction with Blosxom’sMeta plug-in. First, install theMeta plug-in. Next, open the Markdown plug-in file in a texteditor, and set the configuration variable$g_blosxom_use_metato 1. Then, simply include a “meta-markup: Markdown” header lineat the top of each post you compose using Markdown.
Markdown works with BBEdit 6.1 or later on Mac OS X. It also workswith BBEdit 5.1 or later and MacPerl 5.6.1 on Mac OS 8.6 or later. Ifyou’re running Mac OS X 10.2 (Jaguar), you may need to install thePerl moduleDigest::MD5 from CPAN; Digest::MD5 comespre-installed on Mac OS X 10.3 (Panther).
Copy the “Markdown.pl” file to appropriate filters folder in your“BBEdit Support” folder. On Mac OS X, this should be:
BBEdit Support/Unix Support/Unix Filters/See the BBEdit documentation for more details on the location ofthese folders.
You can rename “Markdown.pl” to whatever you wish.
That’s it. To use Markdown, select some text in a BBEdit document,then choose Markdown from the Filters sub-menu in the “#!” menu, orthe Filters floating palette
By default, Markdown produces XHTML-style output for tags with empty elements.E.g.:
<br />Markdown can be configured to produce HTML-style tags; e.g.:
<br>You need to use a specialMTMarkdownOptions container tag in eachMovable Type template where you want HTML 4-style output:
<MTMarkdownOptions output='html4'> ... put your entry content here ...</MTMarkdownOptions>The easiest way to use MTMarkdownOptions is probably to put theopening tag right after your<body> tag, and the closing tag rightbefore</body>.
To suppress Markdown processing in a particular template, i.e. topublish the raw Markdown-formatted text without translation into(X)HTML, set theoutput attribute to ‘raw’:
<MTMarkdownOptions output='raw'> ... put your entry content here ...</MTMarkdownOptions>Use the--html4tags command-line switch to produce HTML output from aUnix-style command line. E.g.:
% perl Markdown.pl --html4tags foo.textTypeperldoc Markdown.pl, or read the POD documentation within theMarkdown.pl source code for more information.
Aaron Swartz deserves a tremendous amount of credit for his feedback on thedesign of Markdown’s formatting syntax. Markdown ismuch better thanksto Aaron’s ideas, feedback, and testing. Also, Aaron’shtml2textis a very handy (and free) utility for turning HTML intoMarkdown-formatted plain text.
Nathaniel Irons,Dan Benjamin,Daniel Bogan, andJason Perkinsalso deserve thanks for their feedback.
Michel Fortin has ported Markdown to PHP; it’s a splendid port, and highly recommended for anyone looking for a PHP implementation of Markdown.
Display Preferences
Copyright © 2002–2026 The Daring Fireball Company LLC.