apprun.icuWriting tool

Writing tool · GitHub-flavored Markdown

Render GitHub-flavored Markdown and export the HTML

Type or paste Markdown on the left and read it the way GitHub would render it on the right: tables with alignment, task lists, strikethrough, autolinks, fenced code with language labels and nested quotes. Nothing is uploaded, no library is loaded, and every copy button gives you clean HTML or Markdown.

Free no accountPrivate runs in this tabGFM tables, tasks, autolinksExport HTML and Markdown

1 · Markdown source

GFM in

Replaces the editor contents. Your current text is not saved anywhere.

2 · Copy and download

nothing leaves the tab

The standalone .html has the stylesheet inlined, so it renders the same when opened from disk.

iNo draft is stored, no request is made, and no remote image is ever loaded. Images become labelled placeholder boxes.

3 · Document outline

click to scroll

Heading ids follow the GitHub slug rules, so anchors keep working after export.

Rendered document

GitHub-flavoured
The preview is escaped HTML built in this tab.

How to use Markdown GFM Preview

Everything below runs in this tab. Nothing is uploaded, and no account is needed.

Step by step

  1. Paste or type Markdown into Markdown source, or load one of the three examples: a README, a changelog with task lists, or a table-heavy document.
  2. Watch the preview on the right update as you type. Switch the view toggle between Preview, HTML source and Split to read the markup this tool generates.
  3. Use the Document outline to jump to any heading, and read Counts for words, characters, lines and headings.
  4. Copy the rendered HTML fragment straight into a project, copy the Markdown back out, or download either file with the buttons under Copy and download.
  5. Open the downloaded .html in any browser to confirm the standalone export looks right before you publish it.

Details and limits

What is supported, and what is not

Supported: ATX headings with automatic or explicit ids, paragraphs, hard and soft line breaks, bold, italic, strikethrough, inline code, fenced code with a language label, inline and reference-style links, autolinks, images, nested blockquotes, ordered, unordered and nested lists, task lists, tables with alignment and horizontal rules. Not supported: footnotes, definition lists, maths, emoji shortcodes, YAML front matter, setext headings and raw HTML passthrough. Everything unsupported is shown as literal text rather than guessed at.

Why raw HTML is escaped

A Markdown file is untrusted input, and the preview is just another web page. If a <script> tag, an inline event handler or a javascript: link in the source were passed through, the preview would run code from the document you are reading. Every character of the source is HTML-escaped before it reaches the page, so tags appear as text and the exported file is safe to host anywhere. The trade-off is that you cannot embed your own HTML in the preview.

Images are placeholders, never downloads

The renderer never loads a remote image. An image becomes a labelled placeholder box showing the alt text and the URL, for three reasons: a preview should not phone home to a third-party host, a page that loads images is not offline-capable, and a pasted README can point at anything. To use the real image, copy the URL out of the box and add it to your own project, where you control the host.

Comparing the export with a real renderer

Open the exported .html next to the same file rendered on GitHub or in your editor and compare. Expect the structure to match: the same headings, the same table cells, the same list nesting. Expect small differences at the edges, because GitHub also supports HTML blocks, footnotes, alerts and maths, and it slugifies heading ids with a slightly different punctuation table. Use the comparison as a sanity check on your document, not as a specification of this renderer.

Read the guide on previewing Markdown safely · The simpler Markdown preview tool · Install for offline use

Frequently asked questions

Does this support GitHub-flavored Markdown?

Yes. The renderer handles the GFM extras that matter most: tables with left, centre and right alignment, task lists written as - [x] and - [ ], strikethrough with double tildes, fenced code blocks with a language label, bare autolinks for http, https and www, and reference-style links. Footnotes, alerts and maths are not implemented and appear as plain text.

Is my Markdown uploaded anywhere?

No. The parser, the renderer and the export all run in this tab with plain JavaScript. There are no libraries to load, no network requests of any kind, and nothing is written to local storage, so closing the tab discards the draft. The page keeps working offline once it has loaded.

Why is my script tag shown as text instead of running?

Because every character of the source is HTML-escaped before rendering. A Markdown document is untrusted input, and a preview that executes it would be an injection hole. Escaping also makes the exported file safe to host: open it in a browser and nothing from the source can run.

Why do images not load in the preview?

Remote images are replaced by a labelled placeholder that shows the alt text and the URL. Loading them would send a request to whichever host the Markdown names, would break offline use, and would leak the fact that you opened the file. The URL is right there in the box if you want to fetch the image yourself.

How do I export the rendered page?

Use Copy rendered HTML to put the HTML fragment on the clipboard, or Download standalone HTML for a complete .html document with the GitHub-flavoured stylesheet inlined and no external dependencies. Download Markdown saves the source with a .md extension. The file name comes from the first heading.

Can I use the exported HTML in my own site?

Yes. The fragment is plain semantic HTML with the classes this page styles, and the standalone document carries its own stylesheet, so it renders identically when opened from disk. Paste the fragment into your own template and bring the .markdown-body rules with it, or restyle them freely.