![]() | |
Filename extensions | |
---|---|
Internet media type | text/markdown [2] |
Uniform Type Identifier (UTI) | net.daringfireball.markdown |
Developed by | |
Initial release | March 9, 2004 (21 years ago) (2004-03-09)[3][4] |
Latest release | |
Type of format | Open file format[6] |
Extended to | pandoc,MultiMarkdown,Markdown Extra,CommonMark,[7]RMarkdown[8] |
Website | daringfireball |
Markdown[9] is alightweight markup language for creatingformatted text using aplain-text editor.John Gruber created Markdown in 2004 as an easy-to-readmarkup language.[9] Markdown is widely used forblogging andinstant messaging, and also used elsewhere inonline forums,collaborative software,documentation pages, andreadme files.
The initial description of Markdown[10] contained ambiguities and raised unanswered questions, causing implementations to both intentionally and accidentally diverge from the original version. This was addressed in 2014 when long-standing Markdown contributors releasedCommonMark, an unambiguous specification and test suite for Markdown.[11]
Markdown was inspired by pre-existingconventions for marking upplain text inemail andusenet posts,[12] such as the earlier markup languagessetext (c. 1992),Textile (c. 2002), andreStructuredText (c. 2002).[9]
In 2002Aaron Swartz createdatx and referred to it as "the true structured text format". Gruber created the Markdown language in 2004 with Swartz as his "sounding board".[13] The goal of the language was to enable people "to write using an easy-to-read and easy-to-write plain text format, optionally convert it to structurally validXHTML (orHTML)".[5]
Another key design goal wasreadability, that the language be readable as-is, without looking like it has been marked up with tags or formatting instructions,[9] unlike text formatted with "heavier"markup languages, such asRich Text Format (RTF), HTML, or evenwikitext (each of which have obvious in-line tags and formatting instructions which can make the text more difficult for humans to read).
Gruber wrote aPerl script,Markdown.pl
, which converts marked-up text input to valid,well-formed XHTML or HTML, encoding angle brackets (<
,>
) andampersands (&
), which would be misinterpreted as special characters in those languages. It can take the role of a standalone script, a plugin forBlosxom or aMovable Type, or of a text filter forBBEdit.[5]
As Markdown's popularity grew rapidly, many Markdownimplementations appeared, driven mostly by the need for additional features such astables,footnotes, definition lists,[note 1] and Markdown inside HTML blocks.
The behavior of some of these diverged from the reference implementation, as Markdown was only characterised by an informalspecification[16] and aPerl implementation for conversion to HTML.
At the same time, a number of ambiguities in the informal specification had attracted attention.[17] These issues spurred the creation of tools such as Babelmark[18][19] to compare the output of various implementations,[20] and an effort by some developers of Markdownparsers for standardisation. However, Gruber has argued that complete standardization would be a mistake: "Different sites (and people) have different needs. No one syntax would make all happy."[21]
Gruber avoided using curly braces in Markdown to unofficially reserve them for implementation-specific extensions.[22]
![]() | |
Filename extensions | .md ,.markdown [2] |
---|---|
Internet media type | text/markdown; variant=CommonMark [7] |
Uniform Type Identifier (UTI) | uncertain[23] |
UTI conformation | public.plain-text |
Developed by | John MacFarlane, open source |
Initial release | October 25, 2014 (10 years ago) (2014-10-25) |
Latest release | |
Type of format | Open file format |
Extended from | Markdown |
Extended to | GitHub Flavored Markdown |
Website | commonmark |
From 2012, a group of people, includingJeff Atwood andJohn MacFarlane, launched what Atwood characterised as a standardisation effort.[11]
A community website now aims to "document various tools and resources available to document authors and developers, as well as implementors of the various Markdown implementations".[25]
In September 2014, Gruber objected to the usage of "Markdown" in the name of this effort and it was rebranded as CommonMark.[12][26][27] CommonMark.org published several versions of a specification, reference implementation, test suite, and "[plans] to announce a finalized 1.0 spec and test suite in 2019".[28]
No 1.0 spec has since been released, as major issues still remain unsolved.[29]
Nonetheless, the following websites and projects have adopted CommonMark:Discourse,GitHub,GitLab,Reddit,Qt,Stack Exchange (Stack Overflow), andSwift.
In March 2016, two relevant informational InternetRFCs were published:
text/markdown
.Websites likeBitbucket,Diaspora,Discord,[31]GitHub,[32]OpenStreetMap,Reddit,[33]SourceForge[34] andStack Exchange[35] use variants of Markdown to make discussions between users easier.
Depending on implementation, basic inlineHTML tags may be supported.[36]
Italic text may be implemented by_underscores_
or*single-asterisks*
.[37]
GitHub had been using its own variant of Markdown since as early as 2009,[38] which added support for additional formatting such as tables and nestingblock content inside list elements, as well as GitHub-specific features such as auto-linking references to commits, issues, usernames, etc.
In 2017, GitHub released a formal specification of its GitHub Flavored Markdown (GFM) that is based on CommonMark.[32] It is astrict superset of CommonMark, following its specification exactly except for tables,strikethrough,autolinks and task lists, which GFM adds as extensions.[39]
Accordingly, GitHub also changed the parser used on their sites, which required that some documents be changed. For instance, GFM now requires that thehash symbol that creates a heading be separated from the heading text by a space character.
Markdown Extra is alightweight markup language based on Markdown implemented inPHP (originally),Python andRuby.[40] It adds the following features that are not available with regular Markdown:
Markdown Extra is supported in somecontent management systems such asDrupal,[42]Grav (CMS) andTYPO3.[43]
Text using Markdown syntax | Corresponding HTML produced by a Markdown processor | Text viewed in a browser |
---|---|---|
Heading=======Sub-heading-----------# Alternative heading## Alternative sub-headingParagraphs are separated by a blank line.Two spaces at the end of a line produce a line break. | <h1>Heading</h1><h2>Sub-heading</h2><h1>Alternative heading</h1><h2>Alternative sub-heading</h2><p>Paragraphs are separatedby a blank line.</p><p>Two spaces at the end of a line<br/>produce a line break.</p> | Heading Sub-heading Alternative heading Alternative sub-heading Paragraphs are separatedby a blank line. Two spaces at the end of a line |
Text attributes_italic_,**bold**,`monospace`.Horizontal rule:--- | <p>Text attributes<em>italic</em>,<strong>bold</strong>,<code>monospace</code>.</p><p>Horizontal rule:</p><hr/> | Text attributesitalic,bold,monospace .Horizontal rule: |
Bullet lists nested within numbered list:1. fruits*apple*banana2. vegetables-carrot-broccoli | <p>Bullet lists nested within numbered list:</p><ol><li>fruits<ul><li>apple</li><li>banana</li></ul></li><li>vegetables<ul><li>carrot</li><li>broccoli</li></ul></li></ol> | Bullet lists nested within numbered list:
|
A [link](http://example.com).>Markdown uses email-stylecharacters for blockquoting.>> Multiple paragraphs need to be prepended individually.Most inline <abbr title="Hypertext Markup Language">HTML</abbr> tags are supported. | <p>A<ahref="http://example.com">link</a>.</p><p><imgalt="Image"title="icon"src="Icon-pictures.png"/></p><blockquote><p>Markdown uses email-style characters for blockquoting.</p><p>Multiple paragraphs need to be prepended individually.</p></blockquote><p>Most inline<abbrtitle="Hypertext Markup Language">HTML</abbr> tags are supported.</p> | Alink.
Most inlineHTML tags are supported. |
Implementations of Markdown are available for over a dozenprogramming languages; in addition, manyapplications, platforms andframeworks support Markdown.[44] For example, Markdownplugins exist for every majorblogging platform.[12]
While Markdown is a minimal markup language and is read and edited with a normaltext editor, there are specially designed editors that preview the files with styles, which are available for all major platforms. Many general-purpose text andcode editors havesyntax highlighting plugins for Markdown built into them or available as optional download. Editors may feature a side-by-side preview window or render the code directly in aWYSIWYG fashion.
Some apps, services and editors support Markdown as an editing format, including:
Content-Type: text/markdown
) or to convert Markdown toplaintext orHTML email when sending.>
and inline emphasis_*`
as well as extensions seen elsewhere for@
mentions,#
tags, customemoji:foo:
, automatic URL detection and toggleable link target preview, but no support for headings, lists, reference links and other standard Markdown features. It supports a handful of HTML-like tags (<small> <center> <plain>
) and a special notation with English keywords or key-value pairs$[key=valuecontent]
for spans with stylistic effects applied, e.g. fonts, blurs, borders and transformations such as flipping, shifting, rotating, scaling and animation, but also forfurigana and search boxes.[56] The message format of suchActivityPub objects that can be consumed as messages istext/x.misskeymarkdown
.Too late now, I suppose, but the only file extension I would endorse is ".markdown", for the same reason offered by Hilton Lipschitz:We no longer live in a 8.3 world, so we should be using the most descriptive file extensions. It's sad that all our operating systems rely on this stupid convention instead of the better creator code or a metadata model, but great that they now support longer file extensions.
This document registers the text/markdown media type for use with Markdown, a family of plain-text formatting syntaxes that optionally can be converted to formal markup languages such as HTML.
This document elaborates upon the text/markdown media type for use with Markdown, a family of plain-text formatting syntaxes that optionally can be converted to formal markup languages such as HTML. Background information, local storage strategies, and additional syntax registrations are supplied.
CommonMark fork could end up better for users... but original creators seem to disagree.
I love their syntax extensions — very true to the spirit of Markdown. They use curly braces for their extensions; I'm not sure I ever made this clear, publicly, but I avoided using curly braces in Markdown itself — even though they are very tempting characters — to unofficially reserve them for implementation-specific extensions. Markdoc's extensive use of curly braces for its syntax is exactly the sort of thing I was thinking about.
The current version of the CommonMark spec is complete, and quite robust after a year of public feedback … but not quite final. With your help, we plan to announce a finalized 1.0 spec and test suite in 2019.
To italicize text, add one asterisk or underscore before and after a word or phrase. To italicize the middle of a word for emphasis, add one asterisk without spaces around the letters.