A fast, good-looking Markdown viewer and editor for Windows that actually shows your images.
Download the exe · Features · Screenshots · Keyboard shortcuts · Building from source
Many Markdown viewers show broken images for anything stored next to the document, such as
, <img src="docs/screenshot.jpg"> or ../assets/logo.svg. They render the
HTML from a string, so the page has no folder to resolve those paths against.
MarkView serves every document from its own folder, the same way a web server or GitHub does, so relative paths just work. It also handles the cases GitHub doesn't:
| Image reference | Example | MarkView |
|---|---|---|
| Relative path |  |
✅ |
| Parent folder |  |
✅ |
| Raw HTML | <img src="shot.jpg" width="300"> |
✅ |
| Absolute Windows path, even with spaces |  |
✅ |
| UNC / network share |  |
✅ |
file:/// URL |
 |
✅ |
| Remote image |  |
✅ |
The whole app is a single ~7 MB executable. There's no installer and no runtime to download.
Reading
- GitHub-flavored rendering: tables, task lists, footnotes, alerts (
> [!NOTE]), emoji shortcodes, heading anchors - Syntax highlighting for 50 languages, with a copy button on every code block
- Mermaid diagrams and KaTeX math (
$inline$and$$display$$) - Collapsible table of contents that tracks your scroll position
- Click any image to view it full size
- Light, dark, or system theme, with Windows 11 Mica and your accent color
Editing
- Built-in CodeMirror 6 editor with Read, Split, and Edit modes
- Live preview as you type, with the preview scrolling in sync with the editor
- Double-click anything in the preview to jump to its source line
- Paste a screenshot to save it to
images/and insert a link - Drag files from Explorer onto the editor to insert relative links
- Tick task-list checkboxes in the preview to update the source
- Keeps each file's line endings (CRLF or LF) and UTF-8 byte-order mark as they were
- Markdown examples (start screen or ⋯ menu): an editable tour of everything MarkView renders, from colors and font sizes to images, tables, math and diagrams
Working with files
- Live reload: the preview updates when the file, or any image it shows, changes on disk
- Links to other
.mdfiles open in place, with Back/Forward. Ctrl+click opens them in a new window. - Each document opens in its own window by default. Tabs are one click away (⋯ > Open files in tabs).
- Print, or export to PDF with images, diagrams, and math intact
- Recent files, drag-and-drop to open, single-instance file handling
- Offers to become your default
.mdapp on first run. This is per-user and needs no admin rights.
Languages
- English, Deutsch, Español, Français, Italiano, Nederlands, Polski, Português (Brasil), Türkçe, Русский, 日本語, 한국어 and 中文(简体)
- Follows your Windows display language. Pick another one under ⋯ > Language; it switches every open window instantly.
Split editor with live preview (dark theme)
Tabs, table of contents, Mermaid diagrams, math, and code
Get MarkView from the Microsoft Store. The Store
keeps it up to date and adds it to the Open with list for .md files, with no folder to manage.
- Download
MarkView.exefrom the latest release (MarkView-arm64.exeon ARM PCs such as Snapdragon laptops). - Put it in a permanent folder, for example
%LOCALAPPDATA%\Programs\MarkView\. - Run it. MarkView asks whether it should open
.mdfiles. If you say yes, Windows Settings opens so you can confirm it as the default app.
Important
The file association points at the exact location of MarkView.exe. If you move it later, open it once
from the new location and MarkView will offer to set things up again. You can also use
⋯ > Re-register .md files here.
You can also open files from the command line:
MarkView.exe README.md docs\guide.md- Windows 10 or 11 (x64 or ARM64)
- Microsoft Edge WebView2 Runtime. It's preinstalled on Windows 11 and on up-to-date Windows 10.
| Shortcut | Action |
|---|---|
| Ctrl+O / Ctrl+N | Open file / new document |
| Ctrl+S / Ctrl+Shift+S | Save / save as |
| Ctrl+1 / 2 / 3 | Read / split / edit mode |
| Ctrl+E | Cycle view mode |
| Ctrl+T | Toggle table of contents |
| Ctrl+F | Find in the editor |
| Ctrl+= / - / 0 | Zoom in / out / reset (or Ctrl+mouse wheel) |
| Alt+← / → | Back / forward between linked documents |
| F5 | Reload from disk |
| Ctrl+P | |
| Ctrl+W | Close document |
| Ctrl+Tab | Next tab (when tabs are on) |
flowchart LR
subgraph Window["MarkView window (WebView2)"]
Shell["App shell<br/>toolbar, tabs, CodeMirror editor"]
Preview["Preview iframe<br/>http://mdfile.localhost/C:/notes/readme.md"]
end
Rust["Rust core<br/>comrak renderer · file watcher<br/>window manager · PDF export"]
Disk[("Files on disk")]
Shell <-->|"commands & events"| Rust
Shell <-->|postMessage| Preview
Preview -->|"images/a.png, ../b.svg"| Rust
Rust -->|read| Disk
- The preview for
C:\notes\readme.mdloads fromhttp://mdfile.localhost/C:/notes/readme.md, served by a custom protocol handler in Rust. Because the page's URL is the document's own folder, the browser resolves relative images exactly as it would on a web server. - Markdown is rendered by comrak (GitHub-flavored Markdown) with source positions, which drive editor/preview scroll sync and task-list toggling.
- Preview pages run under a strict Content Security Policy. Only MarkView's own scripts can run, so raw HTML in a document can't execute code. MarkView sends no telemetry. The only network requests come from remote images or links in your documents.
Open an issue. If MarkView closed
unexpectedly, include its crash.log. MarkView writes the error and where it happened to this file before
it closes, and never sends it anywhere. It's in the same folder as the settings (⋯ > About MarkView shows it):
- Microsoft Store version:
%LOCALAPPDATA%\Packages\jgrimard.388874D7F8808_wgz7aqx4kv1ge\LocalState\crash.log - Portable exe:
%LOCALAPPDATA%\MarkView\crash.log
If a particular document triggers the problem, attaching it (or the smallest part that still does) helps most.
Prerequisites: Rust (stable, 1.82 or newer) and the MSVC build tools. You only need Node.js 18+ if you change the editor bundle.
git clone https://github.com/jgrimard/MarkView.git
cd MarkView\src-tauri
cargo test
cargo build --release
# -> src-tauri\target\release\markview.exe (all assets are embedded)To rebuild the CodeMirror editor bundle (ui/editor.bundle.js) after editing editor-src/editor.mjs:
cd editor-src
npm install
npm run buildTo build the Microsoft Store package (needs the Windows SDK for makeappx and makepri):
.\packaging\build-msix.ps1 # -> dist\MarkView_<version>_x64.msixupload, ready for Partner Center
.\packaging\build-msix.ps1 -Arch arm64 # -> dist\MarkView_<version>_arm64.msixupload
.\packaging\build-msix.ps1 -Install # also registers it for this user to try it (needs Developer Mode)
.\packaging\publish-store.ps1 # uploads both packages as a draft submission (-Commit to submit)The arm64 build needs rustup target add aarch64-pc-windows-msvc and the Visual Studio component
MSVC C++ ARM64/ARM64EC build tools.
The Store build gets its .md association from packaging/AppxManifest.xml
instead of the registry, and keeps its settings in its package folder.
| Path | Contents |
|---|---|
src-tauri/ |
Rust app: protocol handler, Markdown rendering, windows, file watching, PDF export, file association |
ui/ |
Front end embedded in the exe: app shell, preview page, vendored libraries |
editor-src/ |
Source for the CodeMirror 6 editor bundle |
packaging/ |
Microsoft Store (MSIX) manifest and build script |
samples/ |
Test documents covering every image-path case, plus the showcase used for the screenshots |
docs/images/ |
Logo and screenshots for this README |
Settings are stored in %LOCALAPPDATA%\MarkView\markview.json.
MarkView is built on Tauri, comrak, CodeMirror, Mermaid, KaTeX, highlight.js and github-markdown-css. See THIRD_PARTY_NOTICES.md for their licenses.
MIT © jgrimard