Markdown, preview in your terminal — the way a browser would show it, mapped to what a terminal can show. Zero dependencies
mdpreview README.md # render
mdpreview --tui doc.md # full-screen pager: j/k scroll, / search, q quit
mdpreview --tui --watch doc.md # live preview, re-renders on save


Real pixels, in a terminal — examples/gallery.md, artworks via The Met Open Access.
npm install -g @marttinn/mdpreview # or try it first: npx @marttinn/mdpreview README.md
Requires Node ≥ 22. Also runs on Bun, which adds JPEG/WebP/GIF image decoding (Node renders PNG only).
Or build a standalone binary from a clone: bun run build:binary → ./mdpreview.
--images)"dependencies": {} — parser, layout, renderer, diagrams, and pixel font are
all in this repo, on the Node stdlib alone. Safe on
untrusted files: terminal-escape bytes are stripped at parse time.
Bun.Image
also transcodes JPEG/WebP → PNG for kitty (which is PNG-only) and decodes
them for cell art — still zero npm dependencies.tools/make-blockfont.ts), drawn as half-blocks with edge-collision
kerning.examples/gallery.md): artworks by Sargent, Hokusai, Van Gogh,
Bruegel, and Dürer via The Met Open Access
(CC0), plus NASA image library photos (public
domain). Per-image credits inline in the file.15 commits
TypeScript
99.7%
Markdown, preview in your terminal — the way a browser would show it, mapped to what a terminal can show. Zero dependencies
mdpreview README.md # render
mdpreview --tui doc.md # full-screen pager: j/k scroll, / search, q quit
mdpreview --tui --watch doc.md # live preview, re-renders on save


Real pixels, in a terminal — examples/gallery.md, artworks via The Met Open Access.
npm install -g @marttinn/mdpreview # or try it first: npx @marttinn/mdpreview README.md
Requires Node ≥ 22. Also runs on Bun, which adds JPEG/WebP/GIF image decoding (Node renders PNG only).
Or build a standalone binary from a clone: bun run build:binary → ./mdpreview.
--images)"dependencies": {} — parser, layout, renderer, diagrams, and pixel font are
all in this repo, on the Node stdlib alone. Safe on
untrusted files: terminal-escape bytes are stripped at parse time.
Bun.Image
also transcodes JPEG/WebP → PNG for kitty (which is PNG-only) and decodes
them for cell art — still zero npm dependencies.tools/make-blockfont.ts), drawn as half-blocks with edge-collision
kerning.examples/gallery.md): artworks by Sargent, Hokusai, Van Gogh,
Bruegel, and Dürer via The Met Open Access
(CC0), plus NASA image library photos (public
domain). Per-image credits inline in the file.15 commits
TypeScript
99.7%