pluk-inc/md-preview
pluk-inc/md-previewA simple Markdown viewer for reading .md files
From the README
Markdown Preview
A fast, native macOS app for reading Markdown files.
Drop a
.mdon the icon (or set Markdown Preview as your default handler) and get a clean, scrollable preview with a real document outline — no Electron, no browser tab.
Screenshots
Quick Look preview — spacebar a .md in Finder:
Features
- Native rendering —
WKWebViewpipeline backed by swift-markdown, with heading anchors and link handling. - Mermaid diagrams — fenced
mermaidcode blocks render as diagrams in both the app and Quick Look previews, using a bundled renderer so previews work offline without a CDN request. - Document outline — sidebar TOC that mirrors your headings; click to jump.
- Inspector panel — toggleable side panel with file metadata.
- In-document search — toolbar search field plus standard ⌘F / ⌘G / ⌘⇧G for next/previous match.
- Open With — switch to your real editor (VS Code, Cursor, Zed, Sublime, BBEdit, Nova, CotEditor, TextMate, MacVim, Xcode, TextEdit) without leaving the preview. The list filters to apps that actually declare an editor role for Markdown, and remembers your pick.
- Share = copy the source — the share toolbar feeds the picker the Markdown text itself, so Copy writes the raw source to the clipboard (great for pasting into ChatGPT / Claude), and Mail, Messages, and Notes get the content in the body instead of a file URL.
- Quick Look extension — system-wide
.mdpreviews from Finder spacebar, Spotlight, and Mail attachments without launching the app. - Default handler — offers to register itself as the default
.mdopener on first launch.
Supported file types
.md, .markdown, .mdown, .txt
UTI: net.daringfireball.markdown
Installation
Grab the latest signed and notarized DMG from the Releases page.
Requirements
- macOS 15 or later
- Apple Silicon or Intel
Building from source
git clone git@github.com:pluk-inc/md-preview.app.git
cd md-preview.app
open md-preview.xcodeproj
Build and run the md-preview scheme. Swift Package Manager will resolve Sparkle and swift-markdown on first build.
Project layout
md-preview/ Main app target (AppKit, WKWebView)
quick-look/ Quick Look extension (.appex)
scripts/ Release & rollback automation
Version.xcconfig Marketing & build version (single source of truth)
appcast.xml Sparkle update feed
Releasing
Releases are driven by Amore — it handles building, code signing, notarization, DMG creation, S3 upload, and Sparkle appcast publishing in one shot.
Bump MARKETING_VERSION and CURRENT_PROJECT_VERSION in Version.xcconfig, then:
./scripts/release.sh
Use ./scripts/rollback-release.sh to revert the appcast pointer if a release misbehaves.
Contributing
Pull requests are welcome. For larger changes, please open an issue first to discuss what you'd like to chang