Markdown Preview

No upload · runs in your browser
Markdown
32 lines
Rendered preview

Release notes, v2.4

A live preview with emphasis, strikethrough and inline code.

What changed

  • Tables render about 4× faster
    • Nested bullets work too
  • Task lists render as checkboxes
  • Reference-style links (not yet)
  1. Ordered lists
  2. Keep their numbering

Pasted markup such as <script>alert(1)</script> is escaped, never executed.

FeatureStatusShipped
TablesDone2.4
FootnotesSkipped,
const html = render('# hello');
document.body.innerHTML = html;

Read the CommonMark spec for the full grammar.


A placeholder banner

1,452 characters of HTML
Words
107
Characters
689
Headings
2
Read time
1 min

Parsed and rendered on your device, no draft is ever uploaded.

How it works

Markdown Preview : Write on the Left, Rendered on the Right

Write Markdown on the left and watch it render on the right, then flip to the HTML tab to copy the markup. Everything is parsed in your browser and every character is escaped first.

What this does
  • Editor and preview side by side, re-rendered on every keystroke
  • Flip the preview to an HTML tab to copy the markup or download it as a file
  • Pipe tables with column alignment, task lists, strikethrough, fenced code and nested lists
  • Counts words, characters, headings and lines, with a read time at 225 words a minute
FAQ

No, and that is deliberate. Every angle bracket, quote and ampersand in your input is escaped before parsing, so a pasted <script> tag or an onerror attribute is displayed as literal text instead of running. Renderers that pass raw HTML straight through are the usual source of stored-XSS bugs, and this one closes that off by never trusting the input at all; link targets using the javascript:, vbscript: or a non-image data: scheme are rewritten to # for the same reason. Use a fenced code block when you want to show markup.

Keep going