Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Markdown Performance Comparison 3
A performance comparison of leading Javascript Markdown implementations.
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Linux; Android 5.1; A1601) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.74 Mobile Safari/537.36
Browser:
Chrome Mobile 95
Operating system:
Android 5.1
Device Platform:
Mobile
Date tested:
one year ago
Test name
Executions per second
Showdown.js
13.4 Ops/sec
Marked
73.9 Ops/sec
CommonMark
73.4 Ops/sec
Markdown-it
58.4 Ops/sec
Remarkable
98.3 Ops/sec
Micromarkdown
84.9 Ops/sec
Snarkdown
215.4 Ops/sec
HTML Preparation code:
<script type="text/javascript" src="https://unpkg.com/showdown@1.9.1/dist/showdown.min.js"></script> <script type="text/javascript" src="https://unpkg.com/marked@1.1.0/marked.min.js"></script> <script type="text/javascript" src="https://unpkg.com/commonmark@0.29.1/dist/commonmark.min.js"></script> <script type="text/javascript" src="https://unpkg.com/markdown-it@11.0.0/dist/markdown-it.min.js"></script> <script type="text/javascript" src="https://unpkg.com/remarkable@2.0.1/dist/remarkable.min.js"></script> <script type="text/javascript" src="https://unpkg.com/micromarkdown@0.3.0/dist/micromarkdown.min.js"></script> <script type="text/javascript" src="https://unpkg.com/snarkdown@1.2.2/dist/snarkdown.umd.js"></script>
Script Preparation code:
var conv = { showdown: new showdown.Converter(), marked: marked, cm: new commonmark.HtmlRenderer(), mdit: markdownit({ html: true }), remarkable: new remarkable.Remarkable(), micromarkdown: window.micromarkdown, snarkdown: window.snarkdown }; var pars = { cm: new commonmark.Parser() }; var md = [ "---", "__Advertisement :)__", "", "- __[pica](https://nodeca.github.io/pica/demo/)__ - high quality and fast image", " resize in browser.", "- __[babelfish](https://github.com/nodeca/babelfish/)__ - developer friendly", " i18n with plurals support and easy syntax.", "", "You will like those projects!", "", "---", "", "# h1 Heading 8-)", "## h2 Heading", "### h3 Heading", "#### h4 Heading", "##### h5 Heading", "###### h6 Heading", "", "", "## Horizontal Rules", "", "___", "", "---", "", "***", "", "", "## Typographic replacements", "", "Enable typographer option to see result.", "", "(c) (C) (r) (R) (tm) (TM) (p) (P) +-", "", "test.. test... test..... test?..... test!....", "", "!!!!!! ???? ,, -- ---", "", "\"Smartypants, double quotes\" and 'single quotes'", "", "", "## Emphasis", "", "**This is bold text**", "", "__This is bold text__", "", "*This is italic text*", "", "_This is italic text_", "", "~~Strikethrough~~", "", "", "## Blockquotes", "", "", "> Blockquotes can also be nested...", ">> ...by using additional greater-than signs right next to each other...", "> > > ...or with spaces between arrows.", "", "", "## Lists", "", "Unordered", "", "+ Create a list by starting a line with `+`, `-`, or `*`", "+ Sub-lists are made by indenting 2 spaces:", " - Marker character change forces new list start:", " * Ac tristique libero volutpat at", " + Facilisis in pretium nisl aliquet", " - Nulla volutpat aliquam velit", "+ Very easy!", "", "Ordered", "", "1. Lorem ipsum dolor sit amet", "2. Consectetur adipiscing elit", "3. Integer molestie lorem at massa", "", "", "1. You can use sequential numbers...", "1. ...or keep all the numbers as `1.`", "", "Start numbering with offset:", "", "57. foo", "1. bar", "", "", "## Code", "", "Inline `code`", "", "Indented code", "", " // Some comments", " line 1 of code", " line 2 of code", " line 3 of code", "", "", "Block code \"fences\"", "", "```", "Sample text here...", "```", "", "Syntax highlighting", "", "``` js", "var foo = function (bar) {", " return bar++;", "};", "", "console.log(foo(5));", "```", "", "## Tables", "", "| Option | Description |", "| ------ | ----------- |", "| data | path to data files to supply the data that will be passed into templates. |", "| engine | engine to be used for processing templates. Handlebars is the default. |", "| ext | extension to be used for dest files. |", "", "Right aligned columns", "", "| Option | Description |", "| ------:| -----------:|", "| data | path to data files to supply the data that will be passed into templates. |", "| engine | engine to be used for processing templates. Handlebars is the default. |", "| ext | extension to be used for dest files. |", "", "", "## Links", "", "[link text](http://dev.nodeca.com)", "", "[link with title](http://nodeca.github.io/pica/demo/ \"title text!\")", "", "Autoconverted link https://github.com/nodeca/pica (enable linkify to see)", "", "", "## Images", "", "", "", "", "Like links, Images also have a footnote style syntax", "", "![Alt text][id]", "", "With a reference later in the document defining the URL location:", "", "[id]: https://octodex.github.com/images/dojocat.jpg \"The Dojocat\"", "", "", "## Plugins", "", "The killer feature of `markdown-it` is very effective support of", "[syntax plugins](https://www.npmjs.org/browse/keyword/markdown-it-plugin).", "", "", "### [Emojies](https://github.com/markdown-it/markdown-it-emoji)", "", "> Classic markup: :wink: :crush: :cry: :tear: :laughing: :yum:", ">", "> Shortcuts (emoticons): :-) :-( 8-) ;)", "", "see [how to change output](https://github.com/markdown-it/markdown-it-emoji#change-output) with twemoji.", "", "", "### [Subscipt](https://github.com/markdown-it/markdown-it-sub) / [Superscirpt](https://github.com/markdown-it/markdown-it-sup)", "", "- 19^th^", "- H~2~O", "", "", "### [\<ins>](https://github.com/markdown-it/markdown-it-ins)", "", "++Inserted text++", "", "", "### [\<mark>](https://github.com/markdown-it/markdown-it-mark)", "", "==Marked text==", "", "", "### [Footnotes](https://github.com/markdown-it/markdown-it-footnote)", "", "Footnote 1 link[^first].", "", "Footnote 2 link[^second].", "", "Inline footnote^[Text of inline footnote] definition.", "", "Duplicated footnote reference[^second].", "", "[^first]: Footnote **can have markup**", "", " and multiple paragraphs.", "", "[^second]: Footnote text.", "", "", "### [Definition lists](https://github.com/markdown-it/markdown-it-deflist)", "", "Term 1", "", ": Definition 1", "with lazy continuation.", "", "Term 2 with *inline markup*", "", ": Definition 2", "", " { some code, part of Definition 2 }", "", " Third paragraph of definition 2.", "", "_Compact style:_", "", "Term 1", " ~ Definition 1", "", "Term 2", " ~ Definition 2a", " ~ Definition 2b", "", "", "### [Abbreviations](https://github.com/markdown-it/markdown-it-abbr)", "", "This is HTML abbreviation example.", "", "It converts \"HTML\", but keep intact partial entries like \"xxxHTMLyyy\" and so on.", "", "*[HTML]: Hyper Text Markup Language", "---", "__Advertisement :)__", "", "- __[pica](https://nodeca.github.io/pica/demo/)__ - high quality and fast image", " resize in browser.", "- __[babelfish](https://github.com/nodeca/babelfish/)__ - developer friendly", " i18n with plurals support and easy syntax.", "", "You will like those projects!", "", "---", "", "# h1 Heading 8-)", "## h2 Heading", "### h3 Heading", "#### h4 Heading", "##### h5 Heading", "###### h6 Heading", "", "", "## Horizontal Rules", "", "___", "", "---", "", "***", "", "", "## Typographic replacements", "", "Enable typographer option to see result.", "", "(c) (C) (r) (R) (tm) (TM) (p) (P) +-", "", "test.. test... test..... test?..... test!....", "", "!!!!!! ???? ,, -- ---", "", "\"Smartypants, double quotes\" and 'single quotes'", "", "", "## Emphasis", "", "**This is bold text**", "", "__This is bold text__", "", "*This is italic text*", "", "_This is italic text_", "", "~~Strikethrough~~", "", "", "## Blockquotes", "", "", "> Blockquotes can also be nested...", ">> ...by using additional greater-than signs right next to each other...", "> > > ...or with spaces between arrows.", "", "", "## Lists", "", "Unordered", "", "+ Create a list by starting a line with `+`, `-`, or `*`", "+ Sub-lists are made by indenting 2 spaces:", " - Marker character change forces new list start:", " * Ac tristique libero volutpat at", " + Facilisis in pretium nisl aliquet", " - Nulla volutpat aliquam velit", "+ Very easy!", "", "Ordered", "", "1. Lorem ipsum dolor sit amet", "2. Consectetur adipiscing elit", "3. Integer molestie lorem at massa", "", "", "1. You can use sequential numbers...", "1. ...or keep all the numbers as `1.`", "", "Start numbering with offset:", "", "57. foo", "1. bar", "", "", "## Code", "", "Inline `code`", "", "Indented code", "", " // Some comments", " line 1 of code", " line 2 of code", " line 3 of code", "", "", "Block code \"fences\"", "", "```", "Sample text here...", "```", "", "Syntax highlighting", "", "``` js", "var foo = function (bar) {", " return bar++;", "};", "", "console.log(foo(5));", "```", "", "## Tables", "", "| Option | Description |", "| ------ | ----------- |", "| data | path to data files to supply the data that will be passed into templates. |", "| engine | engine to be used for processing templates. Handlebars is the default. |", "| ext | extension to be used for dest files. |", "", "Right aligned columns", "", "| Option | Description |", "| ------:| -----------:|", "| data | path to data files to supply the data that will be passed into templates. |", "| engine | engine to be used for processing templates. Handlebars is the default. |", "| ext | extension to be used for dest files. |", "", "", "## Links", "", "[link text](http://dev.nodeca.com)", "", "[link with title](http://nodeca.github.io/pica/demo/ \"title text!\")", "", "Autoconverted link https://github.com/nodeca/pica (enable linkify to see)", "", "", "## Images", "", "", "", "", "Like links, Images also have a footnote style syntax", "", "![Alt text][id]", "", "With a reference later in the document defining the URL location:", "", "[id]: https://octodex.github.com/images/dojocat.jpg \"The Dojocat\"", "", "", "## Plugins", "", "The killer feature of `markdown-it` is very effective support of", "[syntax plugins](https://www.npmjs.org/browse/keyword/markdown-it-plugin).", "", "", "### [Emojies](https://github.com/markdown-it/markdown-it-emoji)", "", "> Classic markup: :wink: :crush: :cry: :tear: :laughing: :yum:", ">", "> Shortcuts (emoticons): :-) :-( 8-) ;)", "", "see [how to change output](https://github.com/markdown-it/markdown-it-emoji#change-output) with twemoji.", "", "", "### [Subscipt](https://github.com/markdown-it/markdown-it-sub) / [Superscirpt](https://github.com/markdown-it/markdown-it-sup)", "", "- 19^th^", "- H~2~O", "", "", "### [\<ins>](https://github.com/markdown-it/markdown-it-ins)", "", "++Inserted text++", "", "", "### [\<mark>](https://github.com/markdown-it/markdown-it-mark)", "", "==Marked text==", "", "", "### [Footnotes](https://github.com/markdown-it/markdown-it-footnote)", "", "Footnote 1 link[^first].", "", "Footnote 2 link[^second].", "", "Inline footnote^[Text of inline footnote] definition.", "", "Duplicated footnote reference[^second].", "", "[^first]: Footnote **can have markup**", "", " and multiple paragraphs.", "", "[^second]: Footnote text.", "", "", "### [Definition lists](https://github.com/markdown-it/markdown-it-deflist)", "", "Term 1", "", ": Definition 1", "with lazy continuation.", "", "Term 2 with *inline markup*", "", ": Definition 2", "", " { some code, part of Definition 2 }", "", " Third paragraph of definition 2.", "", "_Compact style:_", "", "Term 1", " ~ Definition 1", "", "Term 2", " ~ Definition 2a", " ~ Definition 2b", "", "", "### [Abbreviations](https://github.com/markdown-it/markdown-it-abbr)", "", "This is HTML abbreviation example.", "", "It converts \"HTML\", but keep intact partial entries like \"xxxHTMLyyy\" and so on.", "", "*[HTML]: Hyper Text Markup Language", "# The Static, Static Blog Generator\n\n### May 17th, 2014\n\nWe all like publishing our thoughts online - but why is it such a bother to run a CMS?\n\nManaging databases, updating software, and keeping track of our content often cuts into the most important activity: *expressing ourselves*.\n\nThe web makes it really easy to share our thoughts with millions of individuals from around the world. With it we are able to talk about the things we love.\n\nOnline publishing platform have a problem though - they require certain software to be installed on web servers in order to work. This often means running your own server or paying someone else who will setup the required parts for you.\n\nAfter you setup the system, constant updates are required to make sure that any bugs in the software you are running are patched immediately to prevent your site from being hacked. This often means having a recent backup of your database ready at all times.\n\n## Can't we simplify? \n\nBecause running websites and managing databases isn't always worth the effort, \"Static Content Generators\" like [Dr. jekyll](http://jekyllrb.com/) and [Mr. Hyde](http://hyde.github.io/) have begun to gain traction as people pre-build websites and then place the static HTML results onto their server. \n\nThis means the web server doesn't need to be configured with any special software or databases - it simply serves the generated static HTML files.\n\nHowever, you still have to install the generator and setup a \"build\" process of sorts after every article.\n\n## Meet Jr.\n\n`Jr` is a truly *static*, static content generator. All the processing of your files happens on the requesting client's computer as needed. The whole system is written in client-side JavaScript. This means:\n\n- minimal bandwidth requirements\n- better search engine indexing\n- awesome screen reader support\n- *zero* security vulnerabilities\n- and more!\n\nHowever, the neatest thing about `Jr` is that you don't have to configure, setup, or install _anything_! Simply download the files, create your articles, and upload everything to your server!\n\ndone.\n\n## GIT thee hence\n\nIf you want to be really awesome you can use `Jr` along with the ever useful *version-control* system [git](https://help.github.com/articles/set-up-git). This allows you to keep better track of changes insuring that you can always rollback your text to recover previous versions - very handy if you work with a team!\n\n## What About Markup?\n\nLike most systems, you can compose pages in `Jr` using the text-to-HTML format \"[markdown](http://daringfireball.net/projects/markdown/)\". You can also use plain HTML if you want.\n\n\n## Getting Started\n\n1. [Download](http://github.com/Xeoncross/Jr) `Jr`\n2. Make your `[article-name].html` files\n3. Paste the following code at the bottom of each page: \n <code><script src="jr.js"></script></code> \n\n\nOnce you have created your pages then simply upload the system to your website and enjoy.\n\n*P.S. Looking for a static social lifestream application? Checkout [MicroStream](https://github.com/Xeoncross/microstream).*\n\n\n\n# John Chapter 1\n\n_Ye 'ol Filler Text_\n\nIn the beginning was the Word, and the Word was with God, and the Word was God. The same was in the beginning with God.\n\nAll things were made by him; and without him was not any thing made that was made.\n\nIn him was life; and the life was the light of men. And the light shineth in darkness; and the darkness comprehended it not.\n\nThere was a man sent from God, whose name was John. The same came for a witness, to bear witness of the Light, that all men through him might believe.\n\nHe was not that Light, but was sent to bear witness of that Light. That was the true Light, which lighteth every man that cometh into the world.\n\nHe was in the world, and the world was made by him, and the world knew him not. He came unto his own, and his own received him not. But as many as received him, to them gave he power to become the sons of God, even to them that believe on his name: Which were born, not of blood, nor of the will of the flesh, nor of the will of man, but of God.\n\nAnd the Word was made flesh, and dwelt among us, (and we beheld his glory, the glory as of the only begotten of the Father,) full of grace and truth.\n\nJohn bare witness of him, and cried, saying, This was he of whom I spake, He that cometh after me is preferred before me: for he was before me. And of his fulness have all we received, and grace for grace.\n\nFor the law was given by Moses, but grace and truth came by Jesus Christ.\n\nNo man hath seen God at any time; the only begotten Son, which is in the bosom of the Father, he hath declared him. And this is the record of John, when the Jews sent priests and Levites from Jerusalem to ask him, Who art thou? And he confessed, and denied not; but confessed, I am not the Christ. And they asked him, What then? Art thou Elias? And he saith, I am not. Art thou that prophet? And he answered, No.\n\nThen said they unto him, Who art thou? that we may give an answer to them that sent us. What sayest thou of thyself? He said, I am the voice of one crying in the wilderness, Make straight the way of the Lord, as said the prophet Esaias. \n\nAnd they which were sent were of the Pharisees. And they asked him, and said unto him, Why baptizest thou then, if thou be not that Christ, nor Elias, neither that prophet?\n\nJohn answered them, saying, I baptize with water: but there standeth one among you, whom ye know not; He it is, who coming after me is preferred before me, whose shoe's latchet I am not worthy to unloose. These things were done in Bethabara beyond Jordan, where John was baptizing.\n\nThe next day John seeth Jesus coming unto him, and saith, Behold the Lamb of God, which taketh away the sin of the world. This is he of whom I said, After me cometh a man which is preferred before me: for he was before me. And I knew him not: but that he should be made manifest to Israel, therefore am I come baptizing with water. And John bare record, saying, I saw the Spirit descending from heaven like a dove, and it abode upon him.\n\nAnd I knew him not: but he that sent me to baptize with water, the same said unto me, Upon whom thou shalt see the Spirit descending, and remaining on him, the same is he which baptizeth with the Holy Ghost. And I saw, and bare record that this is the Son of God.\n\nAgain the next day after John stood, and two of his disciples; And looking upon Jesus as he walked, he saith, Behold the Lamb of God! And the two disciples heard him speak, and they followed Jesus.\n\nThen Jesus turned, and saw them following, and saith unto them, What seek ye? They said unto him, Rabbi, (which is to say, being interpreted, Master,) where dwellest thou?\n\nHe saith unto them, Come and see. They came and saw where he dwelt, and abode with him that day: for it was about the tenth hour.\n\nOne of the two which heard John speak, and followed him, was Andrew, Simon Peter's brother. He first findeth his own brother Simon, and saith unto him, We have found the Messias, which is, being interpreted, the Christ.\n\nAnd he brought him to Jesus. And when Jesus beheld him, he said, Thou art Simon the son of Jona: thou shalt be called Cephas, which is by interpretation, A stone.\n\nThe day following Jesus would go forth into Galilee, and findeth Philip, and saith unto him, Follow me.\n\nNow Philip was of Bethsaida, the city of Andrew and Peter. Philip findeth Nathanael, and saith unto him, We have found him, of whom Moses in the law, and the prophets, did write, Jesus of Nazareth, the son of Joseph.\n\nAnd Nathanael said unto him, Can there any good thing come out of Nazareth? Philip saith unto him, Come and see.\n\nJesus saw Nathanael coming to him, and saith of him, Behold an Israelite indeed, in whom is no guile!\n\nNathanael saith unto him, Whence knowest thou me? Jesus answered and said unto him, Before that Philip called thee, when thou wast under the fig tree, I saw thee.\n\nNathanael answered and saith unto him, Rabbi, thou art the Son of God; thou art the King of Israel.\n\nJesus answered and said unto him, Because I said unto thee, I saw thee under the fig tree, believest thou? thou shalt see greater things than these. And he saith unto him, Verily, verily, I say unto you, Hereafter ye shall see heaven open, and the angels of God ascending and descending upon the Son of man.\n\n[continue to chapter 2](http://1jn2.com/bible/John/2)\n\n[enable HTML to render MarkDown]: <pre>\n\n\n\n# Welcome to Jr!\n\nA static, static content generator that moves the \"generator\" part to the browser.\nThis site is pure text files with a single Javascript included on each page that renders\nthe theme and assets as needed.\n\nGo ahead, take a look at the source code for this page.\n\n You want my page, fine, you render it! \n ~ Nginx\n\n\nYou see, there is really no need for the server to generate anything for simple\narticle-based sites like this. If the user wants to read your blog, they can spend\na few processor cycles to render the page themselves.", ""].join("\n");
Tests:
Showdown.js
conv.showdown.makeHtml(md);
Marked
conv.marked(md);
CommonMark
conv.cm.render(pars.cm.parse(md));
Markdown-it
conv.mdit.render(md);
Remarkable
conv.remarkable.render(md);
Micromarkdown
conv.micromarkdown.parse(md);
Snarkdown
conv.snarkdown(md);