This is an unofficial un-minified version of
0.10 (2016-03-22), releases are signed with Minisign.
Minisign is a ‘dead simple tool to sign files and verify signatures’. Signed files will be accompanied by a corresponding
You can verify the signature using my Minisign public key:
minisign -Vm -P RWSmY4o5Bad1vS60aYAiQUswWYVV2EuSdqc3ry7CWWF1E6bVbFG9kR/y
Authenticate the key above by copying the signature below, into keybase.io/verify. It's signed by 14C1182BC57936B2.
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNATURE-----
-----END PGP SIGNATURE-----
Markdeep is a technology for writing plain text documents that will look good in any web browser. It supports diagrams, common styling conventions, and equations as extensions of Markdown syntax.
Markdeep is free and easy to use. It doesn't need a plugin, or Internet connection. There's nothing to install. Just start writing in Vi, Nodepad, Emacs, Visual Studio, Atom, or another editor! You don't have to export, compile, or otherwise process your document.
Markdeep is ideal for design documents, specifications, README files, code documentation, lab reports, and technical web pages. Because the source is plain text, Markdeep works well with software development toolchains.
Markdeep was created by Morgan McGuire at Casual Effects with inspiration from John Gruber's Markdown. The current minified-only beta release is public in order to find bugs and get feedback, but a full and stable version with natural source is coming soon after some more code cleanup.
* Title formatting
* CSS stylable
* Title and subtitle detection
* Section numbering
* Equation typesetting and numbering
* Works in any browser by adding one line to the bottom of a text document
* Fallback to ASCII in a browser if you have neither the local file or Internet access
Plus, best-of-breed Maruku Markdown features:
* Paragraph formatting
* Automatic e-mail address and URL linking
* Nested, numbered and bulleted lists
* Fenced code blocks
* Bold, italic, code, strikethrough
* Doesn't italicize math with * or words containing underscores
* HTML passthrough
* Optionally process server-side or offline in Node.js
To create a Markdeep document, just open any text editor and start writing. Paste the following at the bottom of your document as a single line. Then, save it as plain text with a filename with extension
You can drag your document into a web browser or double click on it to see it with formatting. You can also read the document in a browser when you don't have an Internet connection. If you want to avoid losing formatting when offline, just keep markdeep.min.js in the same folder.
View the plain source of the feature demo to learn the formatting styles that you can use. Markdeep extends Markdown, and to quote John Gruber:
The overriding design goal for Markdown's formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it's been marked up with tags or formatting instructions.
To inspect the original text source for a Markdeep document in a browser, just add
?noformat to the end of its URL.
Origin and Credits
I created Markdeep because I was no longer willing to choose between design documents that looked good and those that worked well with programming tools. I liked what Markdown did on web servers, so I used that as a starting point and added more styling features and a way to directly view the documents client side in a browser.
HTML is "markup" that extends plain text with formatting. Unfortunately, the formatting tags often make original document source hard to read and write. This is slow and annoying, especially for those of us who use programming tools for document editing or want formatting in documentation files.
John Gruber invented Markdown to address HTML's editing problems. The name "markdown" conveys styling in the opposite direction of the "markup" tag syntax. Markdown beautifies text without explicit tags, based on common practices from ASCII e-mail and plain-text documents
Markdeep was created by Morgan McGuire. It extends the work of:
- John Grubber's original Markdown concept and specification
- Ben Hollis' Maruku (aka "Githib") Markdown dialect specification
- Michel Fortin's Extra Markdown dialect specification
- Dominic Baggott's markdown.js implementation for table and list processing
- Ivan Sagalaev's highlight.js for syntax coloring
- Contributors to the above open source projects
Markdeep is open source. You may use, extend, and redistribute Markdeep without charge under the terms of the BSD license:
Copyright 2015, Morgan McGuire
All rights reserved.
Redistribution and use in source and binary forms,
with or without modification, are permitted provided that the
following conditions are met:
1. Redistributions of source code must retain the above
copyright notice, this list of conditions and the following
2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
Markdeep includes markdown.js, so you are also bound by the MIT license (which is BSD-compatible):
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
...and the highlight.js BSD license:
Copyright (c) 2006, Ivan Sagalaev
All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of highlight.js nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
Old releases are archived as:
You can modify the Markdeep line at the bottom of a document to hardcode to a specific version instead of the default version of "
You can report bugs to [email protected] by sending a Markdeep document and what you think is wrong about the way that it appears.
2018-09-03 Version 1.02
- Documented how to add Atom support.
- Added .webm video support.
- Improved Swedish localization.
- Fixed mixed task/bullet/number lists.
- Permitted ATX-style headers with # in them.
- Fixed trailing blank line in diagrams.
- Added support for audio files using video link syntax.
- Added optional line numbers on code listings.
2018-07-04 Version 1.01
- Fixed alignment of diagrams with no right border of *
- Fixed \pagebreak requiring other characters on the same line
- Added Czech localization by Jan Toušek
- Added support for localized "section" appearing before or after a section title
- Made reference link parsing more robust, allowing newlines within the text
- Added [x] github style task lists
- Fixed multiple (insert ... here) statements in a document
- Made the apidoc.md.html sample not flash the raw source on load
- Stripped links from section titles in the table of contents
- Added support for reference images
2018-04-28 Version 1.00: Feature Complete
- Fixed use of (include here) with implicit email links.
- Added Portuguese localization by Tiago Antão
- Added Italian localization by Leonardo Taglialegne
- Fixed references not working for localized figure variants
- Added support for Gravizo SVG format graphs
- Removed browser header/footer when printing to PDF
- Support for IE11
- Added Lithuanian localization by Warmist
2017-12-31 Version 0.23: Code
- Tweaked the apidoc.css style.
- Fixed top-level header formatting broken in the previous release.
- Code blocks now use four-space tabs (instead of eight spaces).
- Added syntax coloring for Go, Rust, R, Lua, TypeScript, and Swift code blocks.
- Added support for back-to-back code blocks with no text between them.
- Improved robustness of schedule list detection and removed warning messages from speculative parser.
- Localized smart quotation marks to the same region as other keywords, following this spec.
- Fixed email address detection for 2-letter domains with a patch by Michael Smirnov.
2017-11-25 Version 0.22: Unity
- Added support for long <-- and --> arrows in body text.
- Added support for ordered lists that begin with numbers other than 1.
- Markdeep now strips HTML comments that are not in code blocks at the beginning of processing.
- Added Japanese localization by Takashi Masuyama.
- Added optional CSS classes to fenced code blocks.
- Added multiple unioned code blocks for use in highlighting and multi-language examples.
- Fixed CSS to not leak outside Markdeep blocks when in html embedding mode.
- Added support for LaTeX when in doxygen and html embedding modes.
- Added admonitions (callout notes for the reader).
apidoc.css stylesheet and corresponding template by Aras Pranckevičius.
2017-10-03 Version 0.21: Robustness
- Upgraded to
highlight.js 9.12.0, included shell session highlighting.
- Fixed excess whitespace due to
tags being generated near section headers.
- Capitalized "Contents" in English.
- Made title and list pattern detection more robust.
- Improved parsing of image grids when near other individual images.
- Made all images hyperlink to their full-resolution versions.
- Improved wide character support for diagrams contributed by Torsten Grust.
- Changed implicit URL parsing to consider a trailing period as punctuation instead of part of the URL. Use explicit URL syntax of to force it to be part of the URL.
- Added an explicit CSS class for
tocNumber to support hiding them.
- Added support for nested blockquotes.
- Fixed indented lists immediately after a header.
2017-06-30 Version 0.20: Customization
- Updated Mathjax for files included via (insert) to use cloudflare.
wkhtmltopdf instructions to work around bugs in their
- Avoided generating empty tags to work around a longstanding
- Improved colors for tables in the dark template.
- Added Swedish localization by Nils Nilsson.
- Added captionAbove option for figures, listings, and tables.
2017-05-27 Version 0.19: Layout
- Adjusted the generation of paragraph tags around lists to better support HTML post-processing.
- Fixed recursive (insert X here) statements triggering multiple tables of contents.
- Renamed showURLs to showLabels and made it display both labels and URLs.
- Added localization for the Contents text in the table of contents.
- Switched to cloudflare CDN for Mathjax.
- Fixed table layout in the presence of an empty first or last column cell.
\un Latex macro for units in math.
- Added slide template (thanks to Torsten Grust).
- Allowed leading space before tables with outside borders.
- Added support for single-column tables.
- Avoided page breaks after headers.
- Improved rendering of high-index Unicode characters in diagrams.
- Fixed font-weight of unnumbered H2 sections.
- Removed stroke borders from grayscale Unicode blocks in diagrams.
- Support for
\newpage, and page breaks with
- Made the
dark.css style sheet print with a white background.
2017-03-31 Version 0.18: Lists and links
- Improved detection of the end of lists followed by indented content
- Improved handling of multiple lists within a single schedule list day
- Removed console debug output that was accidentally enabled in version 0.17
- Defaulted to including the markdeep.min.js script with a trailing ?, to force updates under new aggressive browser caching
- Support for subfigures in references, e.g., Figure
- Support for quoted URLs (needed for URLs containing unescaped parentheses)
- Allowed fenced code blocks to be indented
- Added support for both single and double arrows
- Fixed incorrect floating on diagrams that lack a right border
- Fixed citations at the end of figure captions
2017-02-12 Version 0.17: Style
- Diagrams that are not floating may now omit the right-edge markers
- Workarounds for Wordpress compatibility
- Workaround for Firefox-specific bug with canvas in iframe affecting include statements
- Allowed listing captions to be up to four lines long
- Improved robustness of underscores and italics within words
- Added Polish translation by Dariusz Kuśnierek
- Added Latex and Dark style sheets.
- Documented paragraph numbering
2016-12-20 Version 0.16: Printing support
- Removed hyperlinking of svn and perforce URLs (they are still typset as URLs)
- Improved Latex single-$ parsing
- Fixed lists after unnumbered sections needing too much whitespace
- Made horizontal rule parsing more permissive
- Made layout avoid page breaks in tables, listings, and images when printed
- Added version number to Markdeep footer
2016-10-28 Version 0.15: Proof support
- Changed windows code font to Consolas because Lucida Console's capital 'V' character is confusingly small.
- Now only only floating images have constrained caption widths
- Captions are always justified within the centered block
- Added showURLs option
- Added German and Hungarian localization contributed by Berczi Sándor
- "Contents"/"Table of Contents" header is now localized
- Added console warnings for broken reference links
- Added console warnings for unused reference links
- Added console warnings for unreferenced figures, tables, etc.
- Added console warnings for broken links to figures, tables, etc
2016-09-10 Version 0.14: Robustness
- Switched double minus signs to parse as em dash instead of en dash, since they visually resemble em dash in the text.
- Corrected parsing of lists with spaces between the elements.
- Grids of images are recognized and preserved.
- Made table of contents work for documents with incorrect header nesting
- Fixed an obscure browser-lockup bug resulting from parsing protected substrings as numbers for later markdown
- Fixed protect accidentally generating sequences that look like dimensions.
- Fixed links and images within footnotes and bibliography entries.
- Increased character count for "short" definition lists to 160 characters.
2016-08-01 Version 0.13: Book support
- Added support for youtu.be URL shortened videos
- Documented lang advanced option
- Exposed tocStyle advanced option
- Added support for multiple entries per date in schedule lists
- Added support for auto-hiding weekends in schedule lists
- Switched all date computations to UTC to avoid daylight time problems
- Added parenthesized entries for schedule lists
- Added support for arbitrary attributes on regular links
- Terse formatting for definition lists with short definitions
- Fixed fancy quotes in non-unicode documents
- Reduced file size slightly
- Improved syntax auto-highlighting in code blocks
2016-06-28 Version 0.12: Localization
- Prevented double underscores in variable names inside of diagrams, e.g.,
__FILE__, from being parsed as lines
- Prevented decoration characters from being stripped from diagrams when on false-diagonal lines composed entirely of decorations
- Matched fixed-width fonts between diagrams and code blocks, and code block font sizes across platforms
- Added localization support via markdeepOptions.lang and
- Increased robustness of section links
- Added unnumbered sections using (#)
2016-05-14 STANDBY Morgan erased /0.11/markdeep.min.js from his server. Wish he used version control.
2016-05-06 Version 0.11: Integration
- Added ?export option to extract raw HTML
- Switched to font-rendering: antialiased; for lighter fonts
- Added support for numeric exponents outside of math mode
- Made spaces in figure/listing/table references unbreakable
- Fixed processing of max-width and width on images
- Added default max-width of 100% on images (can be overriden per image)
- Extended minus-sign beautification to negative numbers immediately following an open parenthesis
- Tweaked code syntax highlighting
- Updated to use highlight.js 0.9.3
- Fixed smart quotes after numbers
- Made fancy quotes fully CSS-stylable
- Made diagrams CSS-stylable
- Protected style tags
- Protected table of contents link names
- Fixed long table of contents link to first section
- Added gravizo support
2016-03-22 Version 0.10: Calendars and Images
- Fixed alignment in table cells
- Added support for links with no text
- Added starter.md.html to web page
- Switched default raw URL font to Georgia for more weight and better slashes
- Table of contents now becomes its own section if it is longer than the abstract
- Added support for Latex equation, eqnarray, and equation* environments
- Fixed current-day highlighting on calendars
- Fixed multiple single-$ Latex expressions on a single line
- Allowed definition list terms to begin with non-word characters
- Added support for daylight saving time independent of country
- Improved robustness of parsing links within image captions
- Added support for floating, captioned images
- Fixed centering of multiple images in separate blocks
- Allowed definition lists to have a single space between the colon and definition
2016-02-02 Version 0.09: References and Internal Links
- Added support for schedule lists
- 10x performance increase over version 0.08
- Added IE11 support
- Added support for calendars
- Added support for HTML attributes on images
- Added support for video
- Added CSS classes for different list bullets
- Added support for Youtube and Vimeo video
- Fixed multiple centered images in a group
- Fixed multiple colons in schedule event titles
- Added fancy quotes
- Highlighted current day on calendars
2016-01-18 Version 0.08: References and Internal Links
- Prevented HTML tags in the title from appearing in the browser tab
- Fixed single-character bold and italic text hanging across lines
- Fixed indented bold and italic text crossing lines
- Added reference-style links
- Added footnotes/endnotes
- Added citations
- Allowed code blocks within other formatting
- Code blocks can now contain diagram syntax without it becoming a diagram
- Optimized performance of documents with many blocks
- Updated Markdeep line hides the document until formatting succeeds or loading markdeep.js times out
- Added smart quotes for double quotation marks
- Fixed strict mode for Firefox
- Protected raw
blocks from processing
- Added automatic section links
- Added table and listing captions
- Added figure, table, and listing numbering and references
- Fixed single-letter italic words in lists
- Allowed lists to omit the leading blank line if the previous line ends in a colon or comma
- Allowed inline code to wrap around a line
~~~~code blocks appropriately for listings, while leaving ```` blocks unadorned
- Fixed URLs with underscores and tildes
- Added robust processing of lists with inconsistent indenting
- Added support for lists within definition lists
- Fixed definition lists with multiple :-indented lines
- Added support for multiple paragraphs in definition lists
- Added support for multiple paragraphs in regular lists
2015-12-31 Version 0.07: Polish
- Fixed white dot decorations next to lines in diagrams
- Fixed floating images (broken in 0.06)
- Fixed diagonal up-left arrows not reaching boxes
- Added support for captionless images
- Added captions below images
- Added support for centered images
- Fixed processing of tables with short delimiters
- Fixed diagonals appearing inside curves with vertices in diagrams
- Allowed points vertically and horizontally adjacent to lines and points in diagrams
- Improved unicode line and box character appearance in diagrams
- Allowed leading space and shorter lines for Setext-style headers
- Added Unicode block character support for diagrams
- Enlarged Unicode hexagons to form tighter grids
- Text is now selectable in diagrams
- Added tiny grid examples to features.md.html
- Added dot grid examples to features.md.html
- Added Unicode examples to features.md.html
- Added beautification of a number followed by "degrees"
- Single linebreaks now allowed in italics, bold, and strikethrough
- Hid the document until formatting is complete, once it is known that the script is available
- Increased spacing between section numbers and titles
2015-11-30 Version 0.06: Bug Fixes
- Improved arrowheads at points
- Improved arrowheads at boxes
- Improved processing of words with 'o' in boxes
- Script tag workaround for C++ template/Java generic syntax in code examples with capitalized classes
- Fixed blocks beginning at the top of the document
- Allow LaTeX expressions at the end of a sentence
- Relaxed whitespace rules for LaTeX expressions
- Fixed URLs in subtitles
- Centered diagrams by default
- Switched to https by default for Markdeep and Mathjax
2015-11-10 Version 0.05: Beta
- Added named anchors to all sections
$$ in code blocks
- Fixed header on the first line of a document
- Added table of contents generation
- Adjusted link styling
- Added markdeepOptions.detectMath
==> arrows in html mode
- Released implementation source code
2015-10-27 Version 0.04: Optimization
- Reduced minified script size to 56k (v0.03 was 88k)
- Added notes about Unicode source
- En dash
(--), em dash
(---), and minus sign
- Transform x into × in cases such as "1920×1080"
- Fixed e-mail addresses in subtitles
- Fixed arrows in the middle of lines not appearing
- Removed borders around diagrams in the default stylesheet
- Made tables centered in the default stylesheet
- Added support for left floating diagrams
2015-10-21 Version 0.03: Embedding Support
- Improved handling of underscore lines and parentheses in diagrams
- Added support for short verticals in diagrams, e.g.,
- Added support for hyperlinking of URLs containing ? and &
- Added CSS class support for
tags to allow reinterpretation of em vs. em syntax.
- Fixed single quotes and dollar signs in fenced code blocks
2015-10-18 Version 0.02: Conformance
- Reduced minified script size by 1k (to 83k)
- Added support for as a list bullet
- Explicitly protected script and style blocks (CommonMark)
- No longer allow spaces between flanking bold and italic delimiter runs and enclosed words (CommonMark)
- Switched to
&emstrong> tags from explicit italic and bold ones
2015-10-15 Version 0.01: Initial release