Markdown: Difference between revisions
imported>REDACTED403 m Reverted edits by JsonChao (talk): using Wikipedia for advertising/promotion (HG) (3.4.13) |
imported>Reb-el-mar m Markdown Extra in CMSs |
||
| Line 37: | Line 37: | ||
== Rise and divergence == | == Rise and divergence == | ||
As Markdown's popularity grew rapidly, many Markdown [[ | As Markdown's popularity grew rapidly, many Markdown [[Implementation|implementations]] appeared, driven mostly by the need for additional features such as [[Table (information)|tables]], [[Note (typography)|footnotes]], definition lists,<ref group="note">Technically HTML description lists</ref> and Markdown inside HTML blocks. | ||
The behavior of some of these diverged from the reference implementation, as Markdown was only characterised by an informal [[Specification (technical standard)|specification]]<ref>{{cite web|url=https://daringfireball.net/projects/markdown/syntax|title=Markdown Syntax Documentation|publisher=Daring Fireball|access-date=2018-03-09|archive-date=2019-09-09|archive-url=https://web.archive.org/web/20190909051956/https://daringfireball.net/projects/markdown/syntax|url-status=live}}</ref> and a [[Perl]] implementation for conversion to HTML. | The behavior of some of these diverged from the reference implementation, as Markdown was only characterised by an informal [[Specification (technical standard)|specification]]<ref>{{cite web|url=https://daringfireball.net/projects/markdown/syntax|title=Markdown Syntax Documentation|publisher=Daring Fireball|access-date=2018-03-09|archive-date=2019-09-09|archive-url=https://web.archive.org/web/20190909051956/https://daringfireball.net/projects/markdown/syntax|url-status=live}}</ref> and a [[Perl]] implementation for conversion to HTML. | ||
| Line 69: | Line 69: | ||
}} | }} | ||
From 2012, a group of people, including [[Jeff Atwood]] and [[John MacFarlane (philosopher)|John MacFarlane]], launched what Atwood characterised as a standardisation effort.<ref name="FutureOfMarkdown">{{cite web |last=Atwood |first=Jeff |url=http://www.codinghorror.com/blog/2012/10/the-future-of-markdown.html |title=The Future of Markdown |publisher=CodingHorror.com |date=2012-10-25 |access-date=2014-04-25 |archive-date=2014-02-11 |archive-url=https://web.archive.org/web/20140211233513/http://www.codinghorror.com/blog/2012/10/the-future-of-markdown.html |url-status=dead }}</ref> | From 2012, a group of people, including [[Jeff Atwood]] and [[John MacFarlane (philosopher)|John MacFarlane]], launched what Atwood characterised as a standardisation effort.<ref name="FutureOfMarkdown">{{cite web |last=Atwood |first=Jeff |url=http://www.codinghorror.com/blog/2012/10/the-future-of-markdown.html |title=The Future of Markdown |publisher=CodingHorror.com |date=2012-10-25 |access-date=2014-04-25 |archive-date=2014-02-11 |archive-url=https://web.archive.org/web/20140211233513/http://www.codinghorror.com/blog/2012/10/the-future-of-markdown.html |url-status=dead }}</ref> | ||
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".<ref>{{cite web |url=https://markdown.github.io/ |title=Markdown Community Page |publisher=GitHub |access-date=2014-04-25 |archive-date=2020-10-26 |archive-url=https://web.archive.org/web/20201026161924/http://markdown.github.io/ |url-status=live }}</ref> | 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".<ref>{{cite web |url=https://markdown.github.io/ |title=Markdown Community Page |publisher=GitHub |access-date=2014-04-25 |archive-date=2020-10-26 |archive-url=https://web.archive.org/web/20201026161924/http://markdown.github.io/ |url-status=live }}</ref> | ||
In September 2014, Gruber objected to the usage of "Markdown" in the name of this effort and it was rebranded as CommonMark.<ref name="ArsTechnica2014" /><ref>{{cite web |url=http://blog.codinghorror.com/standard-markdown-is-now-common-markdown/ |title=Standard Markdown is now Common Markdown |date=4 September 2014 |publisher=Jeff Atwood |access-date=2014-10-07 |archive-date=2014-10-09 |archive-url=https://web.archive.org/web/20141009181014/http://blog.codinghorror.com/standard-markdown-is-now-common-markdown/ |url-status=live }}</ref><ref>{{cite web |url=http://www.infoq.com/news/2014/09/markdown-commonmark |title=Standard Markdown Becomes Common Markdown then CommonMark |work=InfoQ |access-date=2014-10-07 |archive-date=2020-09-30 |archive-url=https://web.archive.org/web/20200930150521/https://www.infoq.com/news/2014/09/markdown-commonmark/ |url-status=live }}</ref> 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".<ref name="commonmark.org">{{cite web |url=http://commonmark.org/ |title=CommonMark |language=en |access-date=20 Jun 2018 |quote=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. |archive-date=12 April 2016 |archive-url=https://web.archive.org/web/20160412211434/http://commonmark.org/ |url-status=live}}</ref> | In September 2014, Gruber objected to the usage of "Markdown" in the name of this effort and it was rebranded as CommonMark.<ref name="ArsTechnica2014" /><ref>{{cite web |url=http://blog.codinghorror.com/standard-markdown-is-now-common-markdown/ |title=Standard Markdown is now Common Markdown |date=4 September 2014 |publisher=Jeff Atwood |access-date=2014-10-07 |archive-date=2014-10-09 |archive-url=https://web.archive.org/web/20141009181014/http://blog.codinghorror.com/standard-markdown-is-now-common-markdown/ |url-status=live }}</ref><ref>{{cite web |url=http://www.infoq.com/news/2014/09/markdown-commonmark |title=Standard Markdown Becomes Common Markdown then CommonMark |work=InfoQ |access-date=2014-10-07 |archive-date=2020-09-30 |archive-url=https://web.archive.org/web/20200930150521/https://www.infoq.com/news/2014/09/markdown-commonmark/ |url-status=live }}</ref> 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".<ref name="commonmark.org">{{cite web |url=http://commonmark.org/ |title=CommonMark |language=en |access-date=20 Jun 2018 |quote=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. |archive-date=12 April 2016 |archive-url=https://web.archive.org/web/20160412211434/http://commonmark.org/ |url-status=live}}</ref> | ||
No 1.0 spec has since been released, as major issues still remain unsolved.<ref>{{Cite web |date=2015-07-26 |title=Issues we MUST resolve before 1.0 release [6 remaining] |url=https://talk.commonmark.org/t/issues-we-must-resolve-before-1-0-release-6-remaining/1287 |access-date=2020-10-02 |website=CommonMark Discussion |language=en-US |archive-date=2021-04-14 |archive-url=https://web.archive.org/web/20210414032229/https://talk.commonmark.org/t/issues-we-must-resolve-before-1-0-release-6-remaining/1287 |url-status=live}}</ref> | No 1.0 spec has since been released, as major issues still remain unsolved.<ref>{{Cite web |date=2015-07-26 |title=Issues we MUST resolve before 1.0 release [6 remaining] |url=https://talk.commonmark.org/t/issues-we-must-resolve-before-1-0-release-6-remaining/1287 |access-date=2020-10-02 |website=CommonMark Discussion |language=en-US |archive-date=2021-04-14 |archive-url=https://web.archive.org/web/20210414032229/https://talk.commonmark.org/t/issues-we-must-resolve-before-1-0-release-6-remaining/1287 |url-status=live}}</ref> | ||
Nonetheless, the following websites and projects have adopted CommonMark: [[Discourse (software)|Discourse]], [[GitHub]], [[GitLab]], [[Reddit]], [[Qt (software)|Qt]], [[Stack Exchange]] ([[Stack Overflow]]), and [[Swift (programming language)|Swift]]. | Nonetheless, the following websites and projects have adopted CommonMark: [[Discourse (software)|Discourse]], [[GitHub]], [[GitLab]], [[Reddit]], [[Qt (software)|Qt]], [[Stack Exchange]] ([[Stack Overflow]]), and [[Swift (programming language)|Swift]]. | ||
| Line 86: | Line 86: | ||
Websites like [[Bitbucket]], [[Diaspora (social network)|Diaspora]], [[Discord]],<ref>{{Cite web |date=2024-10-03 |title=Markdown Text 101 (Chat Formatting: Bold, Italic, Underline) |url=https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline |access-date=2025-02-07 |website=Discord |language=en-US}}</ref> [[GitHub]],<ref name="gfm_on_github">{{cite web|title=GitHub Flavored Markdown Spec|url=https://github.github.com/gfm/|access-date=2020-06-11|publisher=GitHub|archive-date=2020-02-03|archive-url=https://web.archive.org/web/20200203204734/https://github.github.com/gfm/|url-status=live}}</ref> [[OpenStreetMap]], [[Reddit]],<ref>{{cite web|title=Reddit markdown primer. Or, how do you do all that fancy formatting in your comments, anyway?|url=https://www.reddit.com/r/reddit.com/comments/6ewgt/reddit_markdown_primer_or_how_do_you_do_all_that/|access-date=2013-03-29|publisher=Reddit|archive-date=2019-06-11|archive-url=https://web.archive.org/web/20190611185827/https://www.reddit.com/r/reddit.com/comments/6ewgt/reddit_markdown_primer_or_how_do_you_do_all_that/|url-status=live}}</ref> [[SourceForge]]<ref>{{cite web|title=SourceForge: Markdown Syntax Guide|url=http://sourceforge.net/p/forge/documentation/markdown_syntax/|access-date=2013-05-10|publisher=[[SourceForge]]|archive-date=2019-06-13|archive-url=https://web.archive.org/web/20190613130356/https://sourceforge.net/p/forge/documentation/markdown_syntax/|url-status=live}}</ref> and [[Stack Exchange]]<ref>{{cite web|title=Markdown Editing Help|url=https://stackoverflow.com/editing-help|access-date=2014-04-11|publisher=StackOverflow.com|archive-date=2014-03-28|archive-url=https://web.archive.org/web/20140328061854/http://stackoverflow.com/editing-help|url-status=live}}</ref> use variants of Markdown to make discussions between users easier. | Websites like [[Bitbucket]], [[Diaspora (social network)|Diaspora]], [[Discord]],<ref>{{Cite web |date=2024-10-03 |title=Markdown Text 101 (Chat Formatting: Bold, Italic, Underline) |url=https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline |access-date=2025-02-07 |website=Discord |language=en-US}}</ref> [[GitHub]],<ref name="gfm_on_github">{{cite web|title=GitHub Flavored Markdown Spec|url=https://github.github.com/gfm/|access-date=2020-06-11|publisher=GitHub|archive-date=2020-02-03|archive-url=https://web.archive.org/web/20200203204734/https://github.github.com/gfm/|url-status=live}}</ref> [[OpenStreetMap]], [[Reddit]],<ref>{{cite web|title=Reddit markdown primer. Or, how do you do all that fancy formatting in your comments, anyway?|url=https://www.reddit.com/r/reddit.com/comments/6ewgt/reddit_markdown_primer_or_how_do_you_do_all_that/|access-date=2013-03-29|publisher=Reddit|archive-date=2019-06-11|archive-url=https://web.archive.org/web/20190611185827/https://www.reddit.com/r/reddit.com/comments/6ewgt/reddit_markdown_primer_or_how_do_you_do_all_that/|url-status=live}}</ref> [[SourceForge]]<ref>{{cite web|title=SourceForge: Markdown Syntax Guide|url=http://sourceforge.net/p/forge/documentation/markdown_syntax/|access-date=2013-05-10|publisher=[[SourceForge]]|archive-date=2019-06-13|archive-url=https://web.archive.org/web/20190613130356/https://sourceforge.net/p/forge/documentation/markdown_syntax/|url-status=live}}</ref> and [[Stack Exchange]]<ref>{{cite web|title=Markdown Editing Help|url=https://stackoverflow.com/editing-help|access-date=2014-04-11|publisher=StackOverflow.com|archive-date=2014-03-28|archive-url=https://web.archive.org/web/20140328061854/http://stackoverflow.com/editing-help|url-status=live}}</ref> use variants of Markdown to make discussions between users easier. | ||
Depending on implementation, basic inline [[HTML tag]]s may be supported.<ref>{{cite web |title=Markdown Syntax Documentation |url=https://daringfireball.net/projects/markdown/syntax#html |website=daringfireball.net |access-date=2021-03-01 |archive-date=2019-09-09 |archive-url=https://web.archive.org/web/20190909051956/https://daringfireball.net/projects/markdown/syntax#html |url-status=live }}</ref> | Depending on implementation, basic inline [[HTML tag]]s may be supported.<ref>{{cite web |title=Markdown Syntax Documentation |url=https://daringfireball.net/projects/markdown/syntax#html |website=daringfireball.net |access-date=2021-03-01 |archive-date=2019-09-09 |archive-url=https://web.archive.org/web/20190909051956/https://daringfireball.net/projects/markdown/syntax#html |url-status=live }}</ref> | ||
Italic text may be implemented by <code>_underscores_</code> or <code>*single-asterisks*</code>.<ref name="italic">{{cite web | url=https://www.markdownguide.org/basic-syntax/#italic | title=Basic Syntax: Italic | publisher=Matt Cone | work=The Markdown Guide | accessdate=27 March 2022 | quote=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. | archive-date=26 March 2022 | archive-url=https://web.archive.org/web/20220326234942/https://www.markdownguide.org/basic-syntax/#italic | url-status=live }}</ref> | Italic text may be implemented by <code>_underscores_</code> or <code>*single-asterisks*</code>.<ref name="italic">{{cite web | url=https://www.markdownguide.org/basic-syntax/#italic | title=Basic Syntax: Italic | publisher=Matt Cone | work=The Markdown Guide | accessdate=27 March 2022 | quote=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. | archive-date=26 March 2022 | archive-url=https://web.archive.org/web/20220326234942/https://www.markdownguide.org/basic-syntax/#italic | url-status=live }}</ref> | ||
=== GitHub Flavored Markdown === | === GitHub Flavored Markdown === | ||
GitHub had been using its own variant of Markdown since as early as 2009,<ref>{{cite web |title = GitHub Flavored Markdown Examples |author = [[Tom Preston-Werner]] |url = https://github.com/mojombo/github-flavored-markdown/issues/1 |website = GitHub |accessdate = 2021-04-02 |archive-date = 2021-05-13 |archive-url = https://web.archive.org/web/20210513154115/https://github.com/mojombo/github-flavored-markdown/issues/1 |url-status = live }}</ref> which added support for additional formatting such as tables and nesting [[HTML element#Block elements|block content]] inside list elements, as well as GitHub-specific features such as auto-linking references to commits, issues, usernames, etc. | GitHub had been using its own variant of Markdown since as early as 2009,<ref>{{cite web |title = GitHub Flavored Markdown Examples |author = [[Tom Preston-Werner]] |url = https://github.com/mojombo/github-flavored-markdown/issues/1 |website = GitHub |accessdate = 2021-04-02 |archive-date = 2021-05-13 |archive-url = https://web.archive.org/web/20210513154115/https://github.com/mojombo/github-flavored-markdown/issues/1 |url-status = live }}</ref> which added support for additional formatting such as tables and nesting [[HTML element#Block elements|block 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.<ref name="gfm_on_github" /> It is a [[Superset|strict superset]] of CommonMark, following its specification exactly except for tables, [[strikethrough]], [[Automatic hyperlinking|autolinks]] and task lists, which GFM adds as extensions.<ref>{{Cite web |url = https://githubengineering.com/a-formal-spec-for-github-markdown/ |title = A formal spec for GitHub Flavored Markdown |website = GitHub Engineering |date = 14 March 2017 |access-date = 16 Mar 2017 |archive-date = 3 February 2020 |archive-url = https://web.archive.org/web/20200203205138/https://githubengineering.com/a-formal-spec-for-github-markdown/ |url-status = live }}</ref> | In 2017, GitHub released a formal specification of its GitHub Flavored Markdown (GFM) that is based on CommonMark.<ref name="gfm_on_github" /> It is a [[Superset|strict superset]] of CommonMark, following its specification exactly except for tables, [[strikethrough]], [[Automatic hyperlinking|autolinks]] and task lists, which GFM adds as extensions.<ref>{{Cite web |url = https://githubengineering.com/a-formal-spec-for-github-markdown/ |title = A formal spec for GitHub Flavored Markdown |website = GitHub Engineering |date = 14 March 2017 |access-date = 16 Mar 2017 |archive-date = 3 February 2020 |archive-url = https://web.archive.org/web/20200203205138/https://githubengineering.com/a-formal-spec-for-github-markdown/ |url-status = live }}</ref> | ||
Accordingly, GitHub also changed the parser used on their sites, which required that some documents be changed. For instance, GFM now requires that the [[number sign|hash symbol]] that creates a heading be separated from the heading text by a space character. | Accordingly, GitHub also changed the parser used on their sites, which required that some documents be changed. For instance, GFM now requires that the [[number sign|hash symbol]] that creates a heading be separated from the heading text by a space character. | ||
| Line 109: | Line 109: | ||
| archive-url = https://web.archive.org/web/20210117015819/https://michelf.ca/projects/php-markdown/extra/ | | archive-url = https://web.archive.org/web/20210117015819/https://michelf.ca/projects/php-markdown/extra/ | ||
| url-status = live | | url-status = live | ||
}}</ref> It adds the following features that are not available with regular Markdown: | }}</ref> It adds the following features that are not available with regular Markdown: | ||
* Markdown markup inside [[HTML]] blocks | * Markdown markup inside [[HTML]] blocks | ||
| Line 119: | Line 119: | ||
* Abbreviations | * Abbreviations | ||
Markdown Extra is supported in some [[content management system]]s such as [[Drupal]],<ref>{{cite web|url=https://drupal.org/project/markdowneditor|title=Markdown editor for BUEditor|date=4 December 2008|access-date=15 January 2017|archive-date=17 September 2020|archive-url=https://web.archive.org/web/20200917172201/https://www.drupal.org/project/markdowneditor|url-status=live}}</ref> [[Grav (CMS)]] and [[TYPO3]].<ref>{{cite web|url=https://extensions.typo3.org/extension/markdown_content/|title=Markdown for TYPO3 (markdown_content)|website=extensions.typo3.org|access-date=2019-02-06|archive-date=2021-02-01|archive-url=https://web.archive.org/web/20210201205749/https://extensions.typo3.org/extension/markdown_content/|url-status=live}}</ref> | Markdown Extra is supported in some [[content management system]]s such as [[Drupal]],<ref>{{cite web|url=https://drupal.org/project/markdowneditor|title=Markdown editor for BUEditor|date=4 December 2008|access-date=15 January 2017|archive-date=17 September 2020|archive-url=https://web.archive.org/web/20200917172201/https://www.drupal.org/project/markdowneditor|url-status=live}}</ref> [[Grav (CMS)]], [[Textpattern|Textpattern CMS]]<ref>{{Cite web |date=2025-04-27 |title=Plugin: wet_textfilter_markdown |url=https://plugins.textpattern.com/plugins/wet_textfilter_markdown |website=Textpattern CMS plugins |language=}}</ref> and [[TYPO3]].<ref>{{cite web|url=https://extensions.typo3.org/extension/markdown_content/|title=Markdown for TYPO3 (markdown_content)|website=extensions.typo3.org|access-date=2019-02-06|archive-date=2021-02-01|archive-url=https://web.archive.org/web/20210201205749/https://extensions.typo3.org/extension/markdown_content/|url-status=live}}</ref> | ||
== Examples == | == Examples == | ||
| Line 255: | Line 255: | ||
<p><img alt="Image" title="icon" src="Icon-pictures.png" /></p> | <p><img alt="Image" title="icon" src="Icon-pictures.png" /></p> | ||
<blockquote> | |||
<p>Markdown uses email-style characters for blockquoting.</p> | <p>Markdown uses email-style characters for blockquoting.</p> | ||
<p>Multiple paragraphs need to be prepended individually.</p> | <p>Multiple paragraphs need to be prepended individually.</p> | ||
</blockquote> | |||
<p>Most inline <abbr title="Hypertext Markup Language">HTML</abbr> tags are supported.</p> | <p>Most inline <abbr title="Hypertext Markup Language">HTML</abbr> tags are supported.</p> | ||
| Line 267: | Line 267: | ||
[[File:Icon-pictures.png|alt=Image|link=|icon]] | [[File:Icon-pictures.png|alt=Image|link=|icon]] | ||
<blockquote> | |||
Markdown uses email-style characters for blockquoting. | Markdown uses email-style characters for blockquoting. | ||
Multiple paragraphs need to be prepended individually. | Multiple paragraphs need to be prepended individually. | ||
</blockquote> | |||
Most inline <abbr title="Hypertext Markup Language">HTML</abbr> tags are supported. | Most inline <abbr title="Hypertext Markup Language">HTML</abbr> tags are supported. | ||
Latest revision as of 12:58, 23 June 2025
Template:Short description Script error: No such module "For". Script error: No such module "Infobox".Template:Template otherScript error: No such module "Check for unknown parameters".
Markdown[1] is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber created Markdown in 2004 as an easy-to-read markup language.[1] Markdown is widely used for blogging and instant messaging, and also used elsewhere in online forums, collaborative software, documentation pages, and readme files.
The initial description of Markdown[2] 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 released CommonMark, an unambiguous specification and test suite for Markdown.[3]
History
Markdown was inspired by pre-existing conventions for marking up plain text in email and usenet posts,[4] such as the earlier markup languages setext (Template:Circa), Textile (c. 2002), and reStructuredText (c. 2002).[1]
In 2002 Aaron Swartz created atx and referred to it as "the true structured text format". Gruber created the Markdown language in 2004 with Swartz as his "sounding board".[5] 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 valid XHTML (or HTML)".[6]
Another key design goal was readability, that the language be readable as-is, without looking like it has been marked up with tags or formatting instructions,Template:R unlike text formatted with "heavier" markup languages, such as Rich Text Format (RTF), HTML, or even wikitext (each of which have obvious in-line tags and formatting instructions which can make the text more difficult for humans to read).
Gruber wrote a Perl script, Markdown.pl, which converts marked-up text input to valid, well-formed XHTML or HTML, encoding angle brackets (<, >) and ampersands (&), which would be misinterpreted as special characters in those languages. It can take the role of a standalone script, a plugin for Blosxom or a Movable Type, or of a text filter for BBEdit.[6]
Rise and divergence
As Markdown's popularity grew rapidly, many Markdown implementations appeared, driven mostly by the need for additional features such as tables, 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 informal specification[7] and a Perl implementation for conversion to HTML.
At the same time, a number of ambiguities in the informal specification had attracted attention.[8] These issues spurred the creation of tools such as Babelmark[9][10] to compare the output of various implementations,[11] and an effort by some developers of Markdown parsers 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."[12]
Gruber avoided using curly braces in Markdown to unofficially reserve them for implementation-specific extensions.[13]
Standardization
Template:Primary sources section Script error: No such module "Infobox".Template:Template otherScript error: No such module "Check for unknown parameters".
From 2012, a group of people, including Jeff Atwood and John MacFarlane, launched what Atwood characterised as a standardisation effort.[3]
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".[14]
In September 2014, Gruber objected to the usage of "Markdown" in the name of this effort and it was rebranded as CommonMark.[4][15][16] 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".[17]
No 1.0 spec has since been released, as major issues still remain unsolved.[18]
Nonetheless, the following websites and projects have adopted CommonMark: Discourse, GitHub, GitLab, Reddit, Qt, Stack Exchange (Stack Overflow), and Swift.
In March 2016, two relevant informational Internet RFCs were published:
- Template:IETF RFC introduced MIME type
text/markdown. - Template:IETF RFC discussed and registered the variants MultiMarkdown, GitHub Flavored Markdown (GFM), Pandoc, and Markdown Extra among others.[19]
Variants
Websites like Bitbucket, Diaspora, Discord,[20] GitHub,[21] OpenStreetMap, Reddit,[22] SourceForge[23] and Stack Exchange[24] use variants of Markdown to make discussions between users easier.
Depending on implementation, basic inline HTML tags may be supported.[25]
Italic text may be implemented by _underscores_ or *single-asterisks*.[26]
GitHub Flavored Markdown
GitHub had been using its own variant of Markdown since as early as 2009,[27] which added support for additional formatting such as tables and nesting block 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.[21] It is a strict superset of CommonMark, following its specification exactly except for tables, strikethrough, autolinks and task lists, which GFM adds as extensions.[28]
Accordingly, GitHub also changed the parser used on their sites, which required that some documents be changed. For instance, GFM now requires that the hash symbol that creates a heading be separated from the heading text by a space character.
Markdown Extra
Markdown Extra is a lightweight markup language based on Markdown implemented in PHP (originally), Python and Ruby.[29] It adds the following features that are not available with regular Markdown:
- Markdown markup inside HTML blocks
- Elements with id/class attribute
- "Fenced code blocks" that span multiple lines of code
- Tables[30]
- Definition lists
- Footnotes
- Abbreviations
Markdown Extra is supported in some content management systems such as Drupal,[31] Grav (CMS), Textpattern CMS[32] and TYPO3.[33]
Examples
| Text using Markdown syntax | Corresponding HTML produced by a Markdown processor | Text viewed in a browser |
|---|---|---|
Heading
=======
Sub-heading
-----------
# Alternative heading
## Alternative sub-heading
Paragraphs 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 separated
by a blank line.</p>
<p>Two spaces at the end of a line<br />
produce a line break.</p>
|
Paragraphs are separated by 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 attributes italic, bold, monospace.
Horizontal rule: |
Bullet lists nested within numbered list:
1. fruits
* apple
* banana
2. 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-style
characters for blockquoting.
>
> Multiple paragraphs need to be prepended individually.
Most inline <abbr title="Hypertext Markup Language">HTML</abbr> tags are supported.
|
<p>A <a href="http://example.com">link</a>.</p>
<p><img alt="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 <abbr title="Hypertext Markup Language">HTML</abbr> tags are supported.</p>
|
A link.
Most inline HTML tags are supported. |
Implementations
Implementations of Markdown are available for over a dozen programming languages; in addition, many applications, platforms and frameworks support Markdown.[34] For example, Markdown plugins exist for every major blogging platform.[4]
While Markdown is a minimal markup language and is read and edited with a normal text editor, there are specially designed editors that preview the files with styles, which are available for all major platforms. Many general-purpose text and code editors have syntax 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 a WYSIWYG fashion.
See also
- Comparison of document markup languages
- Comparison of documentation generators
- Lightweight markup language
- Wiki markup
Explanatory notes
References
External links
- Template:Official website for original John Gruber markup
Template:Document markup languages Template:Authority control
- ↑ a b c Cite error: Invalid
<ref>tag; no text was provided for refs namedphilosophy - ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ a b c Cite error: Invalid
<ref>tag; no text was provided for refs namedArsTechnica2014 - ↑ Template:Cite tweet
- ↑ a b Markdown 1.0.1 readme source code Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Template:Cite tweet
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
Cite error: <ref> tags exist for a group named "note", but no corresponding <references group="note"/> tag was found