Skip to content

Runs entirely in your browser. Nothing you paste leaves this page.

Free / No sign-up

Markdown viewer and editor with live preview.

Write, paste or open a Markdown file and see it rendered as you type, with GitHub-style tables, task lists and code blocks. Export to HTML when you are done.

Show
sample.md
Contents (6)
Preview theme

Project README

A short tour of what this viewer renders. Edit anything on the left and the preview updates as you type.

Text

Write emphasis, strong, both, strikethrough and inline code. End a line with a backslash
for a hard break. Links work too: Nexzem tools, https://nexzem.com and bare URLs like https://nexzem.com/blog.

Markdown is meant to be readable as plain text, before it is ever rendered.

Lists

  1. Plan the release
  2. Ship it
    • write the changelog
    • tag the version
  3. Celebrate
  • Parser with GFM tables
  • Escape raw HTML
  • Your next idea

Code

js
// Fetch a project and print its name
async function load(id) {
  const res = await fetch(`/api/projects/${id}`)
  return (await res.json()).name ?? "untitled"
}

Table

FeatureCommonMarkGFM
Headingsyesyes
Tablesnoyes
Task listsnoyes
Strikethroughnoyes

Image

Nexzem badge


Raw HTML such as <script>alert("hi")</script> is shown as text, never run.

153 words, 1,490 characters, about 1 min read. Raw HTML is shown as text and only http, https, mailto and relative links are kept, so pasted documents cannot run code.

How to use it.

  1. 01

    Type or paste Markdown, open a .md file, or drop one onto the editor.

  2. 02

    Read the live preview beside it, jump around with Contents, and switch the preview between light and dark.

  3. 03

    Copy the rendered HTML, or download it as a standalone .html file or as .md.

What it does.

Everything this tool handles, all of it inside your browser tab.

  • Live preview as you type, with synced scrolling between editor and preview
  • Open .md, .markdown or .txt files up to 2 MB, or drag and drop them
  • CommonMark essentials plus GFM tables, task lists, strikethrough and autolinks
  • Fenced code blocks with light syntax colouring
  • Table of contents from your headings, with jump links
  • Light and dark preview themes
  • Word count, character count and reading time
  • Copy HTML, or download a standalone .html file or the .md source
  • Untrusted input made safe: raw HTML shown as text and unsafe links removed
  • Runs entirely in your browser: files are never uploaded

Worked examples.

  • Markdown table with column alignment

    | Item  | Qty | Price  |
    |:------|:---:|-------:|
    | Stand |  2  | 349.50 |
    | Menu  |  1  | 120.00 |

    Colons in the delimiter row set alignment: left, centre and right. Columns do not need to line up in the source.

  • Task list (GitHub Flavored Markdown)

    ## Release checklist
    
    - [x] Write release notes
    - [x] Update screenshots
    - [ ] Tag the release

    Renders as checkboxes, the same syntax GitHub uses in issues and pull requests.

  • Soft and hard line breaks

    Line one
    Line two          → one paragraph: 'Line one Line two'
    
    Line one··        (two trailing spaces)
    Line two          → two lines
    
    Line one\
    Line two          → two lines (backslash)

    This trips up almost everyone. A blank line starts a new paragraph; two trailing spaces or a backslash give a line break inside one.

  • Fenced code block with a language

    ```ts
    const total = items.reduce((sum, i) => sum + i.price * i.qty, 0)
    ```

    Three backticks or tildes open and close the block. The language label after the opening fence becomes class="language-ts" in the exported HTML, which most highlighters recognise.

  • Markdown to HTML

    **Bold**, _italic_, ~~gone~~ and [a link](https://example.com)
    
    <p><strong>Bold</strong>, <em>italic</em>, <del>gone</del> and
    <a href="https://example.com" rel="noopener noreferrer">a link</a></p>

    This is what Copy HTML produces. Links get rel="noopener noreferrer" and every piece of text is escaped.

What is Markdown?

Markdown is a plain-text format for writing structured documents, created by John Gruber in 2004. You mark structure with ordinary characters: # for headings, - or * for lists, **double asterisks** for bold, backticks for code, and square brackets followed by parentheses for links. It reads naturally as text and converts cleanly to HTML, which is why READMEs, documentation sites, wikis, issue trackers, note apps, chat tools and AI assistants all use it.

Because a Markdown file is just text, it works with version control, diffs cleanly, stays readable without any special software and moves easily between tools. Static site generators and headless CMS platforms often store content as Markdown for exactly these reasons.

Markdown is also the default output format of most AI assistants built on large language models. Pasting an AI-generated answer here is a quick way to read its tables and code properly, check its structure, or turn it into HTML for a page or an email.

How to open a .md file

A .md file is plain text, so any text editor can open it, but you will see the raw syntax rather than the formatted document. To read it formatted, press Open .md above or drag the file onto the editor; it is rendered immediately, with a table of contents for its headings. Files of up to 2 MB with .md, .markdown, .mdown or .txt extensions are supported.

The file is read by your browser and never uploaded, which makes the viewer safe for internal documentation, meeting notes and drafts. Edit it in place, then save it back as .md or export it as HTML.

CommonMark vs GitHub Flavored Markdown (GFM)

The original Markdown description left many cases ambiguous, so different tools rendered the same file differently. CommonMark, first released in 2014, is a precise specification of core Markdown with hundreds of examples: headings, emphasis, links, images, lists, block quotes and code. GitHub Flavored Markdown (GFM) is GitHub's formal superset of CommonMark. It adds tables with column alignment, task lists, strikethrough and automatic links for bare URLs and www. addresses.

This viewer implements the CommonMark essentials plus those GFM extensions, so a README previews here much as it will on GitHub or GitLab. GitHub also renders features that are outside the GFM specification, such as footnotes, alert callouts, Mermaid diagrams and maths; those appear here as plain text.

Markdown syntax supported in this viewer

Headings in both styles (# Heading, or a line underlined with === or ---), paragraphs, emphasis with * or _, strong text, strikethrough with ~~, inline code, links and images with optional titles, block quotes, nested bulleted and numbered lists, task lists with [ ] and [x], horizontal rules, tables with left, centre and right alignment, fenced code blocks with ``` or ~~~ and a language label, indented code blocks, and hard line breaks with two trailing spaces or a backslash. Backslash escapes such as \* show a literal character.

Code blocks get light, language-agnostic syntax colouring for comments, strings, numbers and keywords. Headings get stable anchor IDs and appear in the Contents menu, and the status bar shows the word count, character count and an estimated reading time. Reference-style links, raw HTML and HTML entities such as &copy; are not rendered.

Markdown to HTML: exporting your document

Copy HTML puts clean, escaped HTML on your clipboard, ready to paste into a CMS, an email template or a web page. The .html button downloads a standalone page with the document and simple, readable styles, which opens in any browser and can be printed to PDF from there. The .md button saves your edited Markdown, keeping the original file name.

The exported HTML contains only standard elements such as headings, paragraphs, lists, tables, code, links and images, without scripts or tracking, so it is easy to restyle with your own CSS.

Semantic HTML also helps accessibility and search. Use one top-level # heading per document, keep heading levels in order without skipping, give every image meaningful alt text, and write link text that makes sense out of context instead of 'click here'.

Why raw HTML is shown as text

Markdown allows raw HTML, and a document you paste or open may come from anywhere. Rendering it would let a <script> tag, an onerror attribute or a javascript: link run code in your browser, a classic cross-site scripting attack. This viewer treats every document as untrusted: raw HTML is displayed as text, links are limited to http, https, mailto and relative URLs, and images to http, https and embedded data images.

The same rule applies when you render user-written Markdown in your own product. Use a parser that escapes HTML or a well-maintained sanitiser after rendering, and never pass user content straight to innerHTML.

Common Markdown problems and how to fix them

Lines run together: a single line break inside a paragraph is a soft break and renders as a space. End the line with two spaces or a backslash for a line break, or leave a blank line for a new paragraph. Table not rendering: a table needs a header row followed by a delimiter row such as |---|:---:|---:|, and each row on its own line. Unexpected italics: an asterisk between characters, as in 2*3*4, starts emphasis; escape it as 2\*3\*4 or wrap the expression in backticks. Underscores inside words such as snake_case_name are left alone, as in CommonMark.

A numbered list that starts at another number, such as 3., keeps that start number. A list directly after a paragraph works when it starts with - or 1.; for other starting numbers, add a blank line first.

Questions, answered

Something else on your mind? Ask a consultant and get a reply within one business day.

How do I open and view a .md file?

Press Open .md or drag the file onto the editor. It is rendered immediately, with a table of contents for its headings, and you can edit it and save it back as .md.

Is my Markdown uploaded anywhere?

No. Parsing and rendering happen in this tab with our own parser, and files you open or drop are read locally. Nothing is sent to a server.

Does it support GitHub Flavored Markdown?

Yes: tables with alignment, task lists, strikethrough and automatic links, on top of CommonMark headings, emphasis, lists, quotes and code blocks. Reference-style links, footnotes and raw HTML blocks are not rendered.

What is the difference between CommonMark and GFM?

CommonMark is the precise specification of core Markdown. GitHub Flavored Markdown is a strict superset that adds tables, task lists, strikethrough and extended autolinks.

Why is my HTML shown as text?

For safety. A pasted document could contain scripts or event handlers, so raw HTML is displayed as text rather than executed, and links to javascript: or data: URLs are removed.

How do I convert Markdown to HTML?

Paste or open your Markdown and press Copy HTML, or download a standalone .html file with simple styles. The output is clean, escaped HTML ready for a CMS or email.

Can I convert Markdown to PDF?

Download the .html file, open it in your browser and use Print, then Save as PDF. The standalone file has simple, readable styles for headings, tables and code.

Why are my lines joined into one paragraph?

A single line break is a soft break in Markdown and renders as a space. End the line with two spaces or a backslash for a line break, or leave a blank line between paragraphs.

How do I make a table in Markdown?

Write a header row, then a delimiter row of dashes such as |---|---|, then one row per line, separating cells with |. Add colons to the delimiter row to align columns.

Does it work on a phone?

Yes. On small screens the editor and preview become Write and Preview tabs, and you can open .md files from your device's files app.

More free tools.

All tools

Need tooling like this inside your product?

We build internal tools, developer platforms and APIs. Tell us what your team keeps doing by hand.