All features
Every shipped feature in MD View — a native Markdown reader for Windows. Workspace search, PDF/DOCX/HTML export, split view, focus mode, KaTeX math, Mermaid diagrams.
Last updated
MD View is a native Markdown reader for Windows. This page lists every shipped user-facing feature, grouped by purpose. Before designing or scoping a new feature, search this page first — odds are good it already exists.
For a print-friendly shortcut reference, see keyboard shortcuts.
At a glance — one row per feature. Full descriptions follow below.
| Category | Feature | Shortcut |
|---|---|---|
| Reading | Themes | Alt+T |
| Reading typography | Ctrl+= / - / 0 | |
| Focus mode | Ctrl+D | |
| Line numbers | Ctrl+Shift+L | |
| Frontmatter metadata card | Ctrl+Shift+M | |
| Hover preview | ||
| Sticky file strip | ||
| Scroll memory | ||
| Reading HUD | ||
| Mermaid interactions | ||
| Image lightbox | ||
| Live reload | ||
| Navigation | Find in document | Ctrl+F |
| Outline (TOC) sidebar | Alt+O | |
| Heading jump | [ / ] | |
| Heading-anchor copy | ||
| Collapsible sections | ||
| Back / forward history | Alt+← / → | |
| Recent files | ||
| Quick open | Ctrl+K | |
| Multi-path file open | ||
| Internal Markdown links | ||
| Workspace | Workspace tree | Ctrl+Shift+O |
| Workspace search | Ctrl+Shift+F | |
| Split view · Pro | Ctrl+Alt+S | |
| Verification | Verification layer · Pro | Ctrl+Shift+V |
| Git-diff overlay · Pro | Ctrl+Shift+D | |
| Export & Print | Ctrl+P | |
| PDF export with bookmarks · Pro | Ctrl+Shift+E | |
| Save as HTML | Ctrl+Shift+H | |
| DOCX export · Pro | Ctrl+Shift+W | |
| Mermaid SVG export | ||
| Customization | Persisted reading toggles | |
| Per-document fold state | ||
| OS-theme tracking | ||
| CLI | mdview file.md | |
mdview <folder> and mdview . | ||
mdview --stdin and mdview - | ||
| Auto-detected piping | ||
| Single-instance reuse | ||
| BOM-aware decoding |
Reading
Themes
Shortcut: Alt+T
Four built-in themes — light, dark, sepia, and black — cycled with the shortcut. The default tracks your operating-system theme; the override is sticky once you pick one. Mermaid diagrams re-render with the active theme so contrast holds in dark and black.
Reading typography
Shortcut: Ctrl+= · Ctrl+- · Ctrl+0
Zoom the reading column in, out, or back to the default. Persists
across sessions per window. Implemented in JS keydown rather than
through WebView2’s zoom — zoomHotkeysEnabled is off so the page
chrome doesn’t reflow.
Focus mode
Shortcut: Ctrl+D
Dims paragraphs and blocks that are out of the current reading
viewport, keeping the active block at full contrast. Driven by
IntersectionObserver, so scrolling moves the focus naturally.
Toggle off to return every block to full contrast.
Line numbers
Shortcut: Ctrl+Shift+L
A subtle gutter aligned to direct-child block-level elements, off
by default. Numbers come from the data-line attribute the render
pipeline stamps on every block-open token, so the same source-line
metadata is shared with the verification layer and any other
overlay.
Frontmatter metadata card
Shortcut: Ctrl+Shift+M
YAML front-matter is parsed and stripped from the rendered document. Toggle the card to see the extracted fields in a small panel — useful for files that carry title, tags, dates, or other metadata that you want to read without scrolling back to the top.
Hover preview
Hovering an internal Markdown link previews the target’s first paragraph in a small floating tooltip. No click required, no network — the resolver reads the linked file from disk and renders just enough to give context before you commit to navigating.
Sticky file strip
The active document’s tab and close button stay pinned to the top of the window while you scroll. In split view the strip shows two tabs, one per pane, each with its own close button that closes only that pane’s document.
Scroll memory
Every file remembers where you left off. When you reopen it — via
recent files, the workspace tree, or mdview from the CLI — the
view restores to the prior scroll position. Persistence is keyed by
absolute path, so renames start fresh.
Reading HUD
A small floating indicator shows reading progress and a few quick stats while you scroll. Fades out when the page is idle so it doesn’t compete with the prose, and reappears on the next scroll.
Mermaid interactions
Mermaid diagrams render lazily and ship with a full set of in-place controls. One feature, several pieces:
- Inline hover-toolbar: zoom in / out / reset / fullscreen.
- Inline drag-pan; wheel intentionally does not zoom inline so the page keeps scrolling naturally.
- Double-click inline to enter fullscreen; Esc closes, R resets, wheel zoom is cursor-anchored.
- Smart Fit auto-scales wide diagrams to fit the container, with ~12% margin in fullscreen and never any upscaling.
- Mini-map appears in fullscreen for diagrams Smart Fit had to shrink below ~95%; click or drag to navigate, viewport rectangle tracks pan and zoom.
- Copy SVG and Save SVG live in the fullscreen toolbar.
Image lightbox
Click any image to open it in a full-window overlay; ← and → cycle through every image in the document, and Esc closes. Useful for screenshots and diagrams where the in-flow size is too small to read details.
Live reload
When the file on disk changes, MD View re-renders in place and
keeps the scroll position. No refresh button, no flash to blank.
A debounced filesystem watcher around the open document’s parent
directory re-reads on any matching event, so external editors,
build steps, and AI agents rewriting CLAUDE.md show up
immediately.
Navigation
Find in document
Shortcut: Ctrl+F
In-page incremental search using the CSS Custom Highlight API. Enter jumps to the next match, Shift+Enter to the previous, Esc closes. Collapsed sections that contain a match auto-expand for the duration of the search and collapse again afterwards without dirtying saved fold state.
Outline (TOC) sidebar
Shortcut: Alt+O
A table of contents built automatically from the document’s headings, with scrollspy that highlights the heading the reader is currently on. Toggleable per session. Auto-shown for documents with three or more headings; click any item to scroll there.
Heading jump
Shortcut: [ · ]
Step backwards or forwards by one heading regardless of level. Pairs with the outline for quick scanning of a long document without taking your hand off the keyboard.
Heading-anchor copy
Hover any heading in the rendered document and a # button
appears; click it to copy the anchor URL to the clipboard. Useful
for citing a specific section in chat or in another Markdown file.
Collapsible sections
Every heading from H1 to H6 collapses its section. Fold state is persisted per document, so reopening a long file remembers what you’d hidden. Internal anchor navigation auto-expands the target’s ancestors before scrolling, and find / verify temporarily expand without dirtying the saved fold state.
Back / forward history
Shortcut: Alt+← · Alt+→
Browser-style history across files and intra-document anchors. Each file open or anchor jump pushes onto the stack; back and forward restore the prior position with scroll memory honored. Independent per pane in split view.
Recent files
The File menu’s “Open Recent” submenu lists the last documents you opened across launches. Persisted in window state. Picking an entry behaves the same as opening from disk — scroll memory and fold state are restored.
Quick open
Shortcut: Ctrl+K
A palette that searches across recent files plus every Markdown file in the open workspace. Type to filter, Enter to open, Esc to dismiss. Faster than walking the file tree when you know roughly what you want.
Multi-path file open
Documents open from multiple sources: the File → Open menu,
drag-and-drop onto the window, the mdview CLI, the workspace
tree, the recent-files menu, and quick open. Every path lands in
the same single document model so behavior stays consistent
regardless of how the file got there.
Internal Markdown links
Relative links between local Markdown files resolve through the
shared href resolver. Anchors (#some-heading) auto-expand any
collapsed ancestors before the browser scrolls — a capture-phase
hook on every internal click — so jumping into a folded section
just works without manual unfolding.
Workspace
Workspace tree
Shortcut: Ctrl+Shift+O
Open a folder as a workspace via the shortcut, the File → Open
Folder menu, or mdview <folder> from the CLI. A side tree shows
every Markdown file; clicking opens it in the active pane. The
window auto-lands on README.md or index.md if present, else
the first .md in the folder.
Workspace search
Shortcut: Ctrl+Shift+F
Recursive full-text search across every Markdown file in the open
workspace (also called global search or project search). Results
group by file in the sidebar; click a hit to open that file with
the in-doc find bar pre-filled to highlight the same match. Heavy
folders (node_modules, .git, dist, build, target,
vendor) are skipped.
Split view
Shortcut: Ctrl+Alt+S · Pro
A second document pane opens to the right of the primary, sharing the same window. The vertical splitter is drag-resizable (clamped 25–75%) and the ratio persists. Each pane has independent scroll, render, navigation history, and fold state. The last-clicked pane is the active one and owns the global overlays (find, verify, TOC). CLI, stdin, print, and export operate on the primary pane only in v1.
Verification
Verification layer
Shortcut: Ctrl+Shift+V · Pro
A deterministic, no-AI inspector that flags four classes of risk inline and in a sidebar list. Off by default, persisted per session.
- Fabricated paths. Strict inline-code-only path detection with a batch IPC to a Rust filesystem check; disabled with a visible notice for stdin or no-root documents.
- Risky shell commands. A curated 10-pattern registry over
sh|bash|zsh|powershell|cmd|consolefenced blocks (rm -rf /,curl … | bash, fork bomb,format C:,chmod -R 777 /, …). - Structure health. Heading-level skips, broken intra-doc anchors, duplicate headings at the same level, empty sections, oversized documents.
- Claim highlighting. Strong-language regex (always, never,
guaranteed, …) and numeric / date claims, with a per-block cap
of three findings plus a collapsed
claims_denseoverflow.
Git-diff overlay
Shortcut: Ctrl+Shift+D · Pro
A unified diff for the current file, computed against the working copy’s git index. Hunks, file boundaries, additions, and deletions are classified separately so you can see at a glance what changed since the last commit while reading the rendered prose.
Export & Print
Shortcut: Ctrl+P
The browser-style print dialog. A dedicated print stylesheet hides chrome (top bar, sidebars, overlays, line numbers, mermaid toolbar) and expands every collapsed section so the printed output is the document as a continuous read. Useful for a quick PDF when you don’t need bookmarks.
PDF export with bookmarks
Shortcut: Ctrl+Shift+E · Pro
Native PDF export with nested bookmarks built from the heading
tree. Implemented via a hidden WebView2 driving Chromium’s
DevTools Protocol Page.printToPDF with generateDocumentOutline
on, so the PDF carries clickable bookmarks per heading. Output
matches the in-app reading typography.
Save as HTML
Shortcut: Ctrl+Shift+H
Export the current document as a single self-contained HTML file
through File → Save as HTML. Useful for handing off a Markdown
read to someone without mdview, or for archival.
DOCX export
Shortcut: Ctrl+Shift+W · Pro
Export to Word (.docx) via a native Rust OOXML emitter — no
Pandoc, no external tools. Headings, paragraphs, formatting,
tables, lists, hyperlinks, blockquotes, and embedded images
translate natively; Mermaid, math, alerts, task lists, and
footnotes use a visible-fallback policy (source text preserved,
never silently dropped). Output opens cleanly in Microsoft Word,
LibreOffice Writer, Google Docs, and Apple Pages.
Mermaid SVG export
From any Mermaid diagram’s fullscreen overlay you can copy the SVG
to the clipboard or save it to disk. Copy clones the live SVG,
strips the applied transform, ensures xmlns, and prepends the
XML declaration so the result pastes cleanly into editors. Save
opens a native file dialog with <docname>-diagram.svg as the
default filename.
Customization
Persisted reading toggles
Reader state survives across launches: the active theme, the zoom level, and the on/off state of line numbers, the verification layer, and the metadata card. Toggle once, get the same view next time you open the app — no settings dialog to remember.
Per-document fold state
Collapsing or expanding sections is remembered per document, keyed by absolute path. Reopen a long file later and the same sections are still folded. Find and the verification layer expand sections temporarily when needed without dirtying the saved state.
OS-theme tracking
By default the app follows your operating-system light / dark preference, switching as you toggle Windows’ theme. Pressing Alt+T overrides with an explicit theme; the override is sticky until you cycle back to OS-tracking.
CLI
mdview file.md
The mdview shim is a separate console binary that ships next to
the GUI and is added to per-user PATH by the installer. Pass a
single Markdown path and it opens in the reader with scroll memory
and fold state restored.
mdview <folder> and mdview .
Pass a directory (or . for the current working directory) and
mdview opens it as a workspace — the side tree appears, and the
reader auto-lands on README.md / index.md if present, else the
first .md it finds.
mdview --stdin and mdview -
Open piped or redirected input as an ephemeral document. The doc
gets the sentinel path: "<stdin>"; the watcher and recents skip
it; menu actions that don’t apply (Reload, Open Containing Folder,
Copy Path) emit a transient notice rather than failing silently.
Auto-detected piping
cat foo.md | mdview, git diff | mdview, echo "# hi" | mdview
— if stdin is a pipe, mdview opens it as a stdin document
without the explicit flag. Pipeline does a 50 MB hard reject
plus a 2 MB soft warn, sniffs for null bytes to refuse
binaries, and stages the text under
%LOCALAPPDATA%\MDView\stdin\; leftovers older than 24 hours are
swept on launch.
Single-instance reuse
A second mdview invocation routes to the running primary instead
of spawning a fresh window: the window is brought forward and the
new file, folder, or stdin payload opens in it. --help and
--version print to stdout and exit, useful in scripts.
BOM-aware decoding
The stdin pipeline detects the byte-order mark and decodes UTF-8,
UTF-16-LE, and UTF-16-BE inputs through encoding_rs so files
saved by Notepad or other Windows tooling don’t render as
mojibake.