Local-first · markdown-it · highlight.js

AI gives you markdown. The world wants a document.

Every model returns markdown. Every doc reviewer wants a PDF, a Google Doc, or a styled Word file. The Markdown Renderer closes that gap in one tab: paste the model's output, watch it render with GFM, footnotes, task lists, emoji, and highlight.js code blocks, then export to HTML, PDF, or DOCX. The text never leaves your browser.

Paste markdown. Export a real DOCX in about 10 seconds.

  • 0 conversion servers
  • 100+ languages highlighted
  • 3 export formats
source -> rendered markdown-it · GFM · highlight.js
// markdown source
# Q3 Postmortem

- [x] root cause identified
- [ ] writeup approved

| Service | Downtime | Owner |
|---------|----------|-------|
| auth    | 4m 12s   | Jamie |
| billing | 0s       | Pat   |

```js
function retry(fn, n = 3) {
  return fn().catch(e => n ? retry(fn, n-1) : Promise.reject(e));
}
```

See the runbook[^1] for follow-ups.

rendered in this tab

Q3 Postmortem

  • root cause identified
  • writeup approved
ServiceDowntimeOwner
auth4m 12sJamie
billing0sPat

retry() with JavaScript syntax highlighting [1]

source above, rendered below - same tab, no conversion server

markdown-it core The canonical CommonMark + GFM parser. Strict, fast, and easy to inspect.
Plugin set ships with the page footnotes, task lists, emoji, math. All loaded from temp_libs, no CDN.
highlight.js for code 100+ languages, github-dark-dimmed theme. Same engine used by GitHub itself.

Plugins built-in

CommonMark is not enough. This handles the rest.

The plain CommonMark spec covers headings and bold. It does not cover the things AI output actually uses: task lists, footnotes, emoji shortcodes, fenced code blocks with language hints. Every one of those is loaded by default so the markdown a model emits renders the way the model expects.

What each plugin handles markdown-it + 4 plugins + highlight.js
// GFM core (built in)
| tables | fenced code | autolinks | strikethrough |

// markdown-it-footnote
Reference[^1] -> numbered footnote at the bottom
[^1]: with backlinks to the reference

// markdown-it-task-lists
- [x] checked item
- [ ] unchecked item

// markdown-it-emoji
:rocket: :white_check_mark: :warning: :gear:

// highlight.js
```python
def add(a, b):
    return a + b
```
syntax-colored, no flash of unstyled code
  1. Tables stay tables.GFM pipe tables render with proper column widths and alignment markers. Numbers in the rightmost column right-align. Headers bold themselves.
  2. Code blocks know their language.A fenced block tagged js, python, sql, or go gets its own grammar from highlight.js. github-dark-dimmed is the default theme; it matches the rest of the workbench.
  3. Task lists keep their checkmarks.A list with [x] and [ ] renders as actual checkbox glyphs. Useful when the model returns a checklist you want to paste into a Notion doc or a PR description.
  4. Footnotes link both ways.A reference like [^1] jumps to the footnote. The footnote's backlink jumps back. Useful for AI output that cites its sources at the bottom.

Render once. Export anywhere.

The rendered preview is the source of truth. Every export target reads from it. HTML is the cheapest: a copy of the rendered DOM, ready to paste into an email or a CMS. PDF runs through the browser's print pipeline with a print-friendly stylesheet so headings and code blocks survive the trip. DOCX is the heaviest lift, and is reserved for Pro: a real Office Open XML file with styles preserved.

Markdown round-trip is also available. Paste rendered text back into the source pane and it lints into the same markdown you started with, minus formatting quirks the model added.

  • HTML copyCopy the rendered output as HTML to paste into email, Notion, or a CMS
  • Styled PDFBrowser print pipeline with a print stylesheet tuned for code, tables, and headings
  • DOCX (Pro)Real Office Open XML with heading styles, table styles, code styles, and lists
  • Markdown round-tripNormalize messy model output back into clean, lint-clean markdown
  • Plain textStripped output for paste destinations that hate any formatting

DOCX export is the part of this workflow people pay for.

Most teams can live with HTML and PDF for a long time. The moment a doc has to land in a corporate Word template or a contract reviewer's track-changes pipeline, you need a real .docx file with real styles. Pro adds that, plus every future Pro export.

Stop shuttling AI output through three converters.

The Markdown Renderer is built into Prompt Organizer. Paste once, render once, export to the format the recipient actually needs. The text stays in this browser unless you choose to move it.