The most readable way to preview any .md file on macOS.
A free, native Quick Look extension that renders Markdown beautifully — press Space in Finder and go.
Website · Install · Features · Build from Source
Requires macOS 26 (Tahoe) or later.
brew install --cask johannesnagl/tap/showmdThen open showmd once, go to System Settings → Privacy & Security → Extensions → Quick Look, and enable it. After that, pressing Space on any Markdown file in Finder will use showmd automatically.
Note: On first launch, macOS will ask showmd to "access data from other apps." This is required so the host app and the Quick Look extension can share your settings (theme, font size, etc.) via App Groups. Click Allow — it only happens once.
- Full GitHub Flavored Markdown — tables, task lists, strikethrough, fenced code blocks
- Syntax highlighting for 190+ languages (highlight.js, bundled offline)
- Math rendering — LaTeX via KaTeX, inline
$...$and block$$...$$ - Mermaid diagrams — optional, toggle in settings
- YAML frontmatter — parsed and rendered as a collapsible metadata table
- Emoji shortcodes —
:rocket:→ 🚀 - GitHub-style alerts —
> [!NOTE],> [!TIP],> [!IMPORTANT],> [!WARNING],> [!CAUTION] - Agentic AI XML tags —
<example>,<instructions>,<thinking>,<context>, and more rendered as labeled blocks - Footnotes, highlight, superscript, subscript, smart quotes
- Rendered / Source toggle — switch between rendered HTML and raw Markdown
- Copy as HTML — one click to copy the rendered output
- Dark mode — follows macOS appearance, or override in settings (Light / Dark / Auto)
- Adjustable font size — Small, Medium, or Large
- Menu bar mode — optionally hide the Dock icon and keep showmd in the menu bar instead
- Fully offline — all JS/CSS dependencies are bundled, no network needed
- XSS-hardened — all user content is escaped and raw HTML is sanitized
.md, .markdown, .mdx, .mdc, .rmd, .qmd, .mdown, .mkd, .mkdn, .mdtext, .mdtxt
- macOS 26 or later
- Xcode 16 or later
- XcodeGen —
brew install xcodegen
# Clone the repo
git clone https://github.com/johannesnagl/showmd.git
cd show.md
# Generate the Xcode project
xcodegen generate
# Open in Xcode
open show.md.xcodeprojIn Xcode:
- Set your Development Team in Signing & Capabilities for both the
ShowMdandShowMdExtensiontargets - Build and run the
ShowMdscheme
The
.xcodeprojis generated fromproject.ymland excluded from git. Always regenerate it after pulling changes.
cd MarkdownRenderer
swift testshow.md/
├── ShowMd/ # Host app (SwiftUI settings window)
├── ShowMdExtension/ # Quick Look preview extension
├── MarkdownRenderer/ # Swift package (shared between both targets)
│ ├── Sources/
│ │ └── MarkdownRenderer/
│ │ ├── HTMLVisitor.swift # Markdown → HTML conversion
│ │ ├── HTMLTemplate.swift # HTML page wrapper + theme
│ │ ├── HTMLPostProcessor.swift # Emoji, footnotes, autolinks, etc.
│ │ ├── HTMLEscape.swift # XSS prevention
│ │ ├── FrontmatterParser.swift # YAML frontmatter extraction
│ │ ├── ResourceLoader.swift # Bundled JS/CSS loader
│ │ ├── Settings.swift # UserDefaults via App Groups
│ │ └── Resources/ # highlight.js, KaTeX, Mermaid (offline)
│ └── Tests/
├── docs/ # Marketing website (showmd)
└── project.yml # XcodeGen project definition
Settings are shared between the host app and the Quick Look extension via App Groups (group.one.yetanother.showmd).
| Dependency | Purpose |
|---|---|
| apple/swift-markdown | Markdown parsing (GFM) |
| highlight.js | Syntax highlighting (bundled) |
| KaTeX | Math rendering (bundled) |
| Mermaid | Diagram rendering (bundled) |
Thanks to everyone who has contributed to showmd:
- @oschrenk — Homebrew cask fix
- @boxpositron (David Ibia) — Menu bar mode
- @gsamat — Surfacing macOS version requirement
- @arhtwk — Reporting Quarto callout and hyperlink issues
- @TokkeDev — Reporting sandbox-blocked link opening
MIT
Johannes Nagl — showmd
Concept, growth, and everything except coding — coded with Claude.