Skip to content



Getting Started: Awesome Markdown Awesome⚓︎

Getting Started

An overview of Markdown, how it works, and what you can do with it.

What is Markdown?⚓︎

What is Markdown?

Markdown is a lightweight markup language that you can use to add formatting elements to plaintext text documents. Created by John Gruber in 2004, Markdown is now one of the world’s most popular markup languages.

Using Markdown is different than using a WYSIWYG editor. In an application like Microsoft Word, you click buttons to format words and phrases, and the changes are visible immediately. Markdown isn’t like that. When you create a Markdown-formatted file, you add Markdown syntax to the text to indicate which words and phrases should look different.

For example, to denote a heading, you add a number sign before it (e.g., # Heading One). Or to make a phrase bold, you add two asterisks before and after it (e.g., this text is bold). It may take a while to get used to seeing Markdown syntax in your text, especially if you’re accustomed to WYSIWYG applications. The screenshot below shows a Markdown file displayed in the Visual Studio Code Text Editor.

You can add Markdown formatting elements to a plaintext file using a text editor application. Or you can use one of the many Markdown applications for macOS, Windows, Linux, iOS, and Android operating systems. There are also several web-based applications specifically designed for writing in Markdown.

Depending on the application you use, you may not be able to preview the formatted document in real time. But that’s okay. According to Gruber, Markdown syntax is designed to be readable and unobtrusive, so the text in Markdown files can be read even if it isn’t rendered.

Overriding Design Goal

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.

Why Use Markdown?⚓︎

Why Use Markdown?

You might be wondering why people use Markdown instead of a WYSIWYG editor. Why write with Markdown when you can press buttons in an interface to format your text? As it turns out, there are several reasons why people use Markdown instead of WYSIWYG editors.

  • Markdown can be used for everything. People use it to create websites, documents, notes, books, presentations, email messages, and technical documentation.
  • Markdown is portable. Files containing Markdown-formatted text can be opened using virtually any application. If you decide you don’t like the Markdown application you’re currently using, you can import your Markdown files into another Markdown application. That’s in stark contrast to word processing applications like Microsoft Word that lock your content into a proprietary file format.
  • Markdown is platform independent. You can create Markdown-formatted text on any device running any operating system.
  • Markdown is future proof. Even if the application you’re using stops working at some point in the future, you’ll still be able to read your Markdown-formatted text using a text editing application. This is an important consideration when it comes to books, university theses, and other milestone documents that need to be preserved indefinitely.
  • Markdown is everywhere. Websites like Reddit and GitHub support Markdown, and lots of desktop and web-based applications support it.

Kicking the Tires⚓︎

Kicking the Tires

The best way to get started with Markdown is to use it. That’s easier than ever before thanks to a variety of free tools.

You don’t even need to download anything. There are several online Markdown editors that you can use to try writing in Markdown. Dillinger is one of the best online Markdown editors. Just open the site and start typing in the left pane. A preview of the rendered document appears in the right pane.


Dillinger Markdown editor

Click Image: Dillinger Markdown Editor.


You’ll probably want to keep the Dillinger website open as you read through this guide. That way you can try the syntax as you learn about it. After you’ve become familiar with Markdown, you may want to use a Markdown application that can be installed on your desktop computer or mobile device.

How Does it Work?⚓︎

How Does it Work?

Dillinger makes writing in Markdown easy because it hides the stuff happening behind the scenes, but it’s worth exploring how the process works in general.

When you write in Markdown, the text is stored in a plaintext file that has an .md or .markdown extension. But then what? How is your Markdown-formatted file converted into HTML or a print-ready document?

The short answer is that you need a Markdown application capable of processing the Markdown file. There are lots of applications available — everything from simple scripts to desktop applications that look like Microsoft Word. Despite their visual differences, all of the applications do the same thing. Like Dillinger, they all convert Markdown-formatted text to HTML so it can be displayed in web browsers.

Markdown applications use something called a Markdown processor (also commonly referred to as a “parser” or an “implementation”) to take the Markdown-formatted text and output it to HTML format. At that point, your document can be viewed in a web browser or combined with a style sheet and printed. You can see a visual representation of this process below.

Technical Note

The Markdown application and processor are two separate components. For the sake of brevity, I've combined them into one element ("Markdown app") in the figure below.

The Markdown Process

The Markdown Process

The Markdown Process⚓︎

To summarize, this is a four-part process:

  1. Create a Markdown file using a text editor or a dedicated Markdown application. The file should have an .md or .markdown extension.
  2. Open the Markdown file in a Markdown application.
  3. Use the Markdown application to convert the Markdown file to an HTML document.
  4. View the HTML file in a web browser or use the Markdown application to convert it to another file format, like PDF.

From your perspective, the process will vary somewhat depending on the application you use. For example, Dillinger essentially combines steps 1-3 into a single, seamless interface — all you have to do is type in the left pane and the rendered output magically appears in the right pane. But if you use other tools, like a text editor with a static website generator, you’ll find that the process is much more visible.

What’s Markdown Good For?⚓︎

What’s Markdown Good For?

Markdown is a fast and easy way to take notes, create content for a website, and produce print-ready documents.

It doesn’t take long to learn the Markdown syntax, and once you know how to use it, you can write using Markdown just about everywhere. Most people use Markdown to create content for the web, but Markdown is good for formatting everything from email messages to grocery lists.

Here are some examples of what you can do with Markdown.

Websites⚓︎

Websites

Markdown was designed for the web, so it should come as no surprise that there are plenty of applications specifically designed for creating website content.

If you’re looking for the simplest possible way to create a website with Markdown files, check out blot.im. After you sign up for Blot, it creates a Dropbox folder on your computer. Just drag and drop your Markdown files into the folder and — poof! — they’re on your website. It couldn’t be easier.

If you’re familiar with HTML, CSS, and version control, check out Jekyll, a popular static site generator that takes Markdown files and builds an HTML website. One advantage to this approach is that GitHub Pages provides free hosting for Jekyll-generated websites. If Jekyll isn’t your cup of tea, just pick one of the many other static site generators available.

Recommended Reading

Shameless plug! If you want to learn how to build static websites from scratch, check out The Static Site Guide, another book I wrote.

If you’d like to use a content management system (CMS) to power your website, take a look at Ghost. It’s a free and open-source blogging platform with a nice Markdown editor. If you’re a WordPress user, you’ll be happy to know there’s Markdown support for websites hosted on WordPress.com. Self-hosted WordPress sites can use the Jetpack plugin.

Documents⚓︎

Documents

Markdown doesn’t have all the bells and whistles of word processors like Microsoft Word, but it’s good enough for creating basic documents like assignments and letters. You can use a Markdown document authoring application to create and export Markdown-formatted documents to PDF or HTML file format. The PDF part is key, because once you have a PDF document, you can do anything with it — print it, email it, or upload it to a website.

Here are some Markdown document authoring applications I recommend:

Pro Tip

iA Writer provides templates for previewing, printing, and exporting Markdown-formatted documents. For example, the "Academic – MLA Style" template indents paragraphs and adds double sentence spacing.

Notes⚓︎

Notes

In nearly every way, Markdown is the ideal syntax for taking notes. Sadly, Evernote and OneNote, two of the most popular note applications, don’t currently support Markdown. The good news is that several other note applications do support Markdown:

  • Obsidian is a popular Markdown note-taking application loaded with features.
  • Simplenote is a free, barebones note-taking application available for every platform.
  • Notable is a note-taking application that runs on a variety of platforms.
  • Bear is an Evernote-like application available for Mac and iOS devices. It doesn’t exclusively use Markdown by default, but you can enable Markdown compatibility mode.
  • Joplin is a note taking application that respects your privacy. It’s available for every platform.
  • Boostnote bills itself as an “open source note-taking app designed for programmers.”

If you can’t part with Evernote, check out Marxico, a subscription-based Markdown editor for Evernote, or use Markdown Here with the Evernote website.

Books⚓︎

Books

Looking to self-publish a novel? Try Leanpub, a service that takes your Markdown-formatted files and turns them into an electronic book. Leanpub outputs your book in PDF, EPUB, and MOBI file format. If you’d like to create paperback copies of your book, you can upload the PDF file to another service such as Kindle Direct Publishing. To learn more about writing and self-publishing a book using Markdown, read this blog post.

Presentations⚓︎

Presentations

Believe it or not, you can generate presentations from Markdown-formatted files. Creating presentations in Markdown takes a little getting used to, but once you get the hang of it, it’s a lot faster and easier than using an application like PowerPoint or Keynote.

Remark (GitHub project) is a popular browser-based Markdown slideshow tool, as are Cleaver (GitHub project) and Marp (GitHub project). If you use a Mac and would prefer to use an application, check out Deckset or Hyperdeck.

Email⚓︎

Email

If you send a lot of email and you’re tired of the formatting controls available on most email provider websites, you’ll be happy to learn there’s an easy way to write email messages using Markdown. Markdown Here is a free and open-source browser extension that converts Markdown-formatted text into HTML that’s ready to send.

Collaboration⚓︎

Collaboration

Collaboration and team messaging applications are a popular way of communicating with coworkers and friends at work and home. These applications don’t utilize all of Markdown’s features, but the features they do provide are fairly useful. For example, the ability to bold and italicize text without using the WYSIWYG interface is pretty handy.

Slack, Discord, Wiki.js, and Mattermost are all good collaboration applications.

Documentation⚓︎

Documentation

Markdown is a natural fit for technical documentation. Companies like GitHub are increasingly switching to Markdown for their documentation — check out their blog post about how they migrated to Jekyll. If you write documentation, take a look at these tools:

Flavors of Markdown⚓︎

Flavors of Markdown

One of the most confusing aspects of using Markdown is that practically every application implements a slightly different version, commonly referred to as flavors. It’s your job to master whatever flavor your application has implemented.

Think of them as language dialects. People in New York and London both speak English, but with substantial differences. Similarly, using Dillinger is a vastly different experience than using Ulysses.

Practically speaking, you never know exactly what a company means when they say they support “Markdown.” Are they talking about basic syntax, extended syntax, or an arbitrary combination?

Pro Tip: Pick an application with good support to maintain the portability of your files. You can use the tool directory to find one that fits the bill.

Additional Resources⚓︎

Additional Resources

There are lots of resources you can use to learn Markdown:


Awesome Series @ Write Kit

Markdown (Syntax & Extensions, etc.) •
Markdown Editors & Viewers •
Books (Services & Open Data)

Awesome Markdown⚓︎

Awesome Markdown

A collection of awesome markdown goodies (libraries, services, editors, tools, cheatsheets, etc.)

Note: :octocat: stands for the GitHub page and 💎 stands for the RubyGems page.

Announcement

Looking for the latest news, tools, tips & tricks, and more about markdown and friends? Follow along the Manuscripts News (@manuscriptsnews) channel on twitter for updates.

Contributions welcome

Anything missing? Send in a pull request. Thanks.

Table of Contents⚓︎


Markdown⚓︎

Email-style writing for the web by John Gruber and Aaron Swartz

  • Markdown (daringfireball.net) - original Markdown syntax write-up and processor in Perl by John Gruber; no longer maintained (last update in December 2004).

History / Genesis⚓︎

Introducing Markdown — March 15, 2004

I've written a text-to-HTML formatting tool called Markdown, which is now available for download. Markdown allows web writers to compose text using a simple, readable, plain text formatting syntax; Markdown takes care of translating it to valid XHTML (or, if you prefer, HTML).

Dive into Markdown — March 19, 2004

You don't need to "preview" an email before you send it -- you write it, you read it, you edit it, right there. Thus, Markdown. Email-style writing for the web.

Markdown by Aaron Swartz — March 22, 2004

For months I've been working with John Gruber on a new project. The idea was to make writing simple web pages, and especially weblog entries, as easy as writing an email... Together we pored over the syntax details from top to bottom, trying to develop the perfect format, and I think we've got something pretty darn great.

Documentation⚓︎

Markdown Syntax Extensions⚓︎

Syntax Extensions

MultiMarkdown (MMD)⚓︎

MultiMarkdown

Markdown Extra & Extended⚓︎

Extra & Extended

Markdown Extra
* Markdown Extra – Extensions by Michel Fortin.
* Dingus – Try it in your browser.

Markdown Extended (MDE)
* MDE @ awesome-markdown (Spec | Cheatsheet)
* Code :octocat: – PHP converter script.

Manuscripts⚓︎

Manuscripts

Free book format for Markdown

Manuscripts (:octocat:) adds book.yml for metadata and contents.yml for structure.

CommonMark & GFM⚓︎

CommonMark

A highly compatible implementation of Markdown

GitHub Flavored Markdown (GFM)

CommonMark with GitHub Extensions

Extensions include:
* Leaf Blocks: Tables
* Container Blocks: Task lists
* Inlines: Strikethrough, Autolinks, and Disallowed Raw HTML.

Vanilla Flavored Markdown (VFMD)⚓︎

Vanilla Flavored Markdown (VFMD)

A variant with an unambiguous specification of its syntax.

Key Differences:
* Intra-word emphasis & simplified link/image syntax.
* Strict 4-space rule for lists and better auto-link detection.
* Double blank lines to end blocks and character encoding improvements.

Markdown Documentation⚓︎

Markdown Building Blocks⚓︎

Core Libraries & Tools

  • Pandoc (web | :octocat:) – The universal document converter (Haskell).
  • kramdown (web | :octocat:) – Library & CLI tool (Ruby).
  • marked (web | :octocat:) – Built for speed (JavaScript).
  • markdown-it (web | :octocat:) – 100% CommonMark support + plugins (JS).

Workflow Utilities

  • concat-md (github) – CLI to concatenate files and fix title levels.
  • mdcode (github) – Syncs code blocks with source files.
  • quikdown (web | :octocat:) – Lightweight (10KB) parser with XSS protection.
  • mq (web | :octocat:) – A jq-like tool for Markdown (Rust).

Babelmark & Style Guides⚓︎

Babelmark

Linting & Formatting⚓︎

Markdown Lint / Style Rule Checkers

  • markdownlint (:octocat:) – Node.js style checker with customizable defaults.
  • mdformat (:octocat:) – CommonMark compliant formatter.
  • mdsf (:octocat:) – Formats code snippets inside Markdown using your preferred code formatters.
  • vscode-markdownlint (:octocat:) – VS Code Plugin for in-place linting.
  • mado (:octocat:) – Fast linter written in Rust; supports GitHub Actions.

Web Components⚓︎

Custom Elements

  • Markdown-Tag (:octocat:) – Render Markdown to HTML on any site using a <md-block> tag.

Markdown to Website / Blog⚓︎

Static Site Generators

  • Jekyll (web | :octocat:) – The Ruby-based classic for blogs and sites.
  • Middleman (web | :octocat:) – Professional site development in Ruby.
  • Slate (:octocat:) – Beautiful API documentation (Middleman-based).
  • Shins (:octocat:) – Node.js port of Slate for API docs.

Local Servers & Previewers

  • md-fileserver (:octocat:) – View Markdown files locally in your browser.
  • Compiiile (:octocat:) – Serve folders with full-text search and presentation slide support.
  • ZenMD (:octocat:) – Simple folder-to-HTML site conversion.

Email & Presentations⚓︎

Markdown to Email

  • Markdown Here (web | :octocat:) – Extension for Chrome, Firefox, and Thunderbird. Works with Gmail, Evernote, and more.

Presentations & Slideshows

  • Slidev (:octocat:) – Create slideshows with Vue components and HTML.
  • Deckset (web) – macOS app for beautifully designed templates.
  • Slide Show (S9) (:octocat:) – Ruby-based PowerPoint alternative.
  • GitPitch (:octocat:) – Presentations for GitHub, GitLab, and Bitbucket.
  • zoetic (:octocat:) – Use your webcam as a background for Markdown slides.

Publishing & Structure⚓︎

Books & PDF

TOC & Pre-Processing

  • markdown-toc (:octocat:) – Generate TOCs with Remarkable.
  • markedpp (:octocat:) – Pre-processor for numbered headings and file includes.
  • mdtoc (:octocat:) – Standalone TOC generator for CI pipelines.

Conversion Tools⚓︎

Office & Web to Markdown

  • Word to Markdown (:octocat:) – "Liberate" content from .docx files.
  • heckyesmarkdown.com – Instant web-to-markdown service using Readability.
  • Markitdown (:octocat:) – Paste rich text to get Markdown output.

HTML to Markdown (By Language)

Ruby
* reverse_markdown, upmark, or remark.

JavaScript / Node.js
* turndown (formerly to-markdown) or html2markdown.

Source Code & Data to Markdown

  • widdershins – OpenAPI/Swagger to Markdown.
  • Moxygen – Doxygen (C++, PHP, Java, etc.) to Markdown.
  • jsdoc-to-markdown – JavaScript JSDoc to Markdown.
  • json2md / ts-markdown – Convert JSON/TypeScript objects to Markdown.

Final Services⚓︎

Book Publishing Services

  • Softcover.io (:octocat:) – Command-line publishing by Michael Hartl.
  • GitBook.com – Write and publish books with Markdown and Git.