CLI tool
pluk-inc/markdown-preview avatar
pluk-inc/markdown-preview

Markdown Preview: a Mac-only Markdown reader that also edits, and ships test fixtures its docs never mention

A simple Markdown viewer for reading .md files

2,474 stars129 forksSwiftMIT

At a glance

What is it?
A native macOS app built on WKWebView and swift-markdown, with bundled Mermaid and KaTeX renderers, a Quick Look generator, and a repository full of edge-case sample files the README does not document.
Who is it for?
Markdown Preview earns its place by doing the small number of things a Markdown reader usually gets wrong: source line breaks stay visible by default, diagrams and equations render offline from bundled renderers, and Quick Look means the Finder preview matches the app. It also edits, which moves it from viewer toward the editor your other tools already fill.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 11, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the app is and where it comes from

pluk-inc/markdown-preview is a native macOS application for reading Markdown files, and the README leads with the pitch in one line: drop a `.md` on the icon, or set the app as your default handler, and you get a scrollable preview with a real document outline.

The stated requirements are macOS 15 or later and Swift 6.0, the license is MIT, and GitHub reports the language as Swift with 2,396 stars and 122 forks. It is distributed two ways: through the official Homebrew cask, or as a signed and notarized DMG from the releases page.

sh
brew install --cask markdown-preview

The pitch also says no Electron and no browser tab. That is accurate about the shipping model and slightly misleading about the rendering path, because the feature list states that rendering runs through a `WKWebView` pipeline backed by swift-markdown. What the claim really rules out is a bundled Chromium instance per window, which is the thing that makes most Markdown apps heavy. Worth knowing the distinction before you reason about memory use or about how faithfully CommonMark quirks are handled.

The company behind it is a small shop rather than a foundation, and the README carries both a Discord invite and a Buy Me a Coffee link.

Reading mode, edit mode, and what the toolbar does

The app has two modes and switches between them from the toolbar or with Command-E, saving with Command-S. Read Mode lets you select and copy text, follow links and browse tables without changing the document. Edit Mode edits the Markdown in place with a formatting toolbar covering headings, emphasis, lists, quotes, code and links.

Some Edit Mode details are unusually considered. Table cells show inline formatting until focused, then reveal their Markdown syntax for editing. Task markers become checkboxes once you type the closing bracket, Enter continues a task list, and Enter on an empty task exits it while preserving the blank separator.

Navigation is three panels deep. There is a document outline sidebar that mirrors your headings and jumps on click, a file navigator for browsing Markdown files in a folder tree where clicking a folder's name, icon or empty row space expands it, and a toggleable inspector panel showing file metadata. Search inside a document uses the toolbar field plus the standard Command-F, Command-G and Command-Shift-G.

Text zoom runs from 50% to 300% in discrete steps via the toolbar control, Command-plus, Command-minus, Command-zero, or a trackpad pinch in Read Mode. The toolbar itself is the standard AppKit customisation sheet, so you drag in Print, Copy, Zoom, Sidebar, Open With, Inspector, Share and Search, and the layout persists across launches.

Diagrams and equations without a network request

Fenced `mermaid` blocks render as diagrams in both the app and Quick Look previews, using a bundled renderer so previews work offline without a CDN request. That single implementation choice is what makes the app usable on a plane, and it is also why the build is larger than a bare Markdown renderer.

Math support follows the same pattern. LaTeX inline like `$x_1 + x_2$`, display math, and fenced `math` blocks all render through a bundled KaTeX, and selecting a rendered formula and copying yields the original LaTeX source via the official copy-tex extension. Copy-paste fidelity on equations is a detail most viewers get wrong, and this one clearly spent time on it.

text
$x_1 + x_2$
$$\int_0^1 x^2\,dx$$

Other details in the same category: heading anchors and link handling are built in, and bare `http://` and `https://` URLs are clickable in the app and in Quick Look previews. Bare URL autolinking is a common omission in small renderers, so its presence suggests the author tested with real notes rather than with a spec fixture.

Two integrations stand out as product decisions rather than features. Open With switches to your real editor, and the list filters to apps that actually declare an editor role for Markdown, remembering your pick; named options include VS Code, Cursor, Zed, Sublime, BBEdit, Nova, CotEditor, TextMate, MacVim, Xcode and TextEdit. Open in LLM sends the current file to Codex, Claude or ChatGPT from the toolbar, with file or folder context where the target supports it and a copy-and-open fallback for longer prompts.

Line break handling is the decision the README leads with

Single source newlines remain visible by default. That is the correct default for a tool aimed at people reading notes, and it is the wrong default for someone who wants rendered output from prose written without blank lines between sentences.

The escape hatch is a setting: Settings, General, Reading, Strict line breaks. Enabling it lets ordinary source lines flow into paragraphs in reading view and Quick Look. Two trailing spaces or a backslash still create an explicit hard break, blank lines still separate paragraphs, and code blocks keep their meaning. The documentation adds one operational detail that matters in practice, which is that an already-open Quick Look preview has to be reopened after changing the setting.

That this is the first feature described, ahead of diagrams and search, tells you where the author's own friction was. Most Markdown viewers silently pick one behaviour and never explain it.

The v0.0.63 release added a What's New window reachable from Help, plus the task checkboxes in Edit Mode and this optional paragraph wrapping, and notes that documents open faster because later windows reuse a prepared reader and startup avoids unnecessary font loading. The two prior releases, v0.0.61 on 2026-09-24 and v0.0.62 on 2026-09-25, covered floating Liquid Glass formatting controls on macOS 26 and later, code block copy and wrap controls, project document search, and read-mode scrolling fixes. Three releases in five days, still on the 0.0.x line.

Sample files the feature list never reaches

The `samples/` directory is the most useful undocumented part of this repository. It holds ten Markdown files that read like a test matrix: `rtl-test.md`, `toml-frontmatter.md`, `long-footnotes.md`, `mermaid-heavy.md`, `mermaid-block-arrows.md`, `codeblocks.md`, `navigation.md`, `rendering-layout.md`, `bullet-marker-spacing.md` and `full.md`.

Several of these test things the README does not claim. Right-to-left text handling is not mentioned anywhere in the feature list, yet there is a fixture for it. TOML front matter is not documented either. Footnote handling appears only implicitly, and `bullet-marker-spacing.md` suggests the author cared about the difference between tight and loose list rendering, which is one of the harder CommonMark details.

The other directories are more conventional: `md-preview/` for the app target, `quick-look/` for the Finder preview generator, `md-preview.xcodeproj/` for the Xcode project, `tests/` for the test target, `scripts/` for build automation, and `docs/` for the screenshots. `skills-lock.json` and the `.agents/`, `.claude/` and `.codex/` directories indicate the project develops itself partly through agent tooling, which is consistent with a codebase that ships its own test fixtures.

Editorial conclusion

Markdown Preview earns its place by doing the small number of things a Markdown reader usually gets wrong: source line breaks stay visible by default, diagrams and equations render offline from bundled renderers, and Quick Look means the Finder preview matches the app. It also edits, which moves it from viewer toward the editor your other tools already fill. The README is long and specific about features and silent about formats, and the sample files it ships cover cases the feature list never reaches, so judge it by opening `samples/full.md` rather than by reading the feature bullets.

Frequently asked questions

What is the best tool for previewing Markdown code?

It depends on the platform and on whether you want to edit as well as read. Markdown Preview is a good answer on macOS 15 or later because it renders Mermaid and LaTeX from bundled renderers, works in Quick Look, and can edit in place. Inside an editor, the built-in preview of VS Code or Zed covers the common cases without a separate app.

How do I preview Markdown?

On macOS, install Markdown Preview and either drop a .md file on its icon or set it as the default handler for Markdown. From there a scrollable preview opens with a document outline. Inside an editor, the usual path is the editor's own preview pane, which keeps the source and the rendering side by side.

Does Markdown Preview render Mermaid diagrams and LaTeX offline?

Yes for both. Fenced mermaid blocks render through a bundled renderer and LaTeX inline, display and fenced math blocks render through a bundled KaTeX, both without a CDN request, so previews work without a network connection.

Can Markdown Preview export to PDF?

The README does not describe a PDF export command. It does document Print as a toolbar item you can drag in from the native toolbar customisation sheet, and the share sheet is documented as feeding the Markdown source itself to the picker, so Copy yields raw text rather than a rendered file.

Official sources

  1. License: MIT
  2. pluk-inc/markdown-preview on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/pluk-inc-markdown-preview.svg)](https://hysenlabs.com/projects/pluk-inc-markdown-preview)