A fast, offline Markdown viewer — and the rare one that prints properly. Point it at a .md
file and it renders a clean, navigable document, lays it onto paper the way it will actually print,
and lets you pick how that paper should look. No Electron, no network access, no telemetry: a native
OS WebView driven by Photino + Blazor and
Microsoft Fluent UI on .NET 10.
📖 The
docs/folder is a self-contained sample wiki that doubles as a feature tour. Open it withMarkdownBlaze docs/.
- Eleven document themes — Book, Classic, Elegant, Newspaper, Academic, Report, Modern, Simple,
Writer, Typewriter and Night, plus Follow app theme. Each changes the paper colour, the typeface
and the spacing of the document only: the toolbar and sidebar keep the appearance you chose.
Pick one from the toolbar or step through them with
F9. - Two views — Continuous, one column that scrolls, and Pages, the document laid onto A4
sheets with real print margins and page breaks, fitted either to the pane's width or to a whole
sheet.
F2cycles. Page view is a live preview of the printed result. - Zoom the document, not the app —
Ctrl+ wheel,Ctrl +/Ctrl -, a trackpad pinch, or the toolbar's− 100% + ↺. The window itself never scales, so the interface stays where you put it. - Nothing scrolls sideways — long code wraps, diagrams scale to the column, wide tables fit the sheet.
Ctrl + Popens a bar along the bottom to choose the theme for that one print; the document changes as you look at it, so you see what the printer will produce.Ctrl + Pagain sends it.- Only the document is printed — no toolbar, no sidebar, no menus — always in a light palette, with syntax highlighting and Mermaid diagrams re-drawn to match rather than dumped as dark blocks.
- Code wraps, diagrams scale and tables shrink to the sheet, because paper cannot be scrolled.
- Folder tree — the sidebar's Headers tab shows the folder you are reading, with other folders and documents closed and the current document expanded to its own headings. One tree for moving between files and within one.
- The folder you point at is the root. Open a file and you get its folder; open a folder and it
reads that folder's
index,mainorreadme, else the first document alphabetically. Following a link never moves the root. - History that keeps its order — entries stay where you last saw them instead of jumping to the top when reopened. Right-click for Open, Open in new window, Copy filename, Open containing folder.
- Smart link rewriting relative to the opened file: extension-less links and
[[wiki links]]get.md; folder links resolve toindex.md. Local links open in-app, external ones in your browser. - Auto-refresh — edit the file and the view reloads, keeping your place.
- CommonMark + extensions via Markdig: tables, task lists,
footnotes, definition lists, auto-identifiers,
==highlight==,~~strikethrough~~, sub/superscript. - Syntax highlighting with a bundled highlight.js (~190 languages), following the document's theme rather than the app's.
- Math via bundled KaTeX — inline
$…$, display$$…$$,```mathblocks. - Mermaid diagrams, re-drawn whenever the document's theme changes so they never sit dark on a light page.
- Admonitions / callouts in Docusaurus (
:::tip), MkDocs (!!! note) and GitHub/Obsidian (> [!note], collapsible> [!tip]-) syntaxes. - Emoji shortcodes, YAML front matter parsed and hidden, local images inlined as data URIs.
- Wiki links —
[[Page]],[[Page|alias]],[[Page#Heading]]navigate in-app;![[img.png]]inlines;![[Note]]becomes a link. - Tags —
#project,#todo/studyrender as pills (C#and#123are correctly ignored). - Comments — Obsidian
%%…%%, inline and fenced, are hidden.
Rendering comes from the standalone
bwets.Markdig.Extensions package.
- Explorer right-click — Open with MarkdownBlaze on Markdown files and on folders.
markdown://links — the address of the document you are reading is a working link, so anything that can open a URL can hand a document over:markdown://C:/notes/Report.md.- Both register themselves on first run under
HKEY_CURRENT_USER— no elevation, nothing to switch on — and repair themselves if the app moves. Linux and macOS packages register the handler through the.desktopentry andInfo.plist. - Remembers window size, position, maximized state, sidebar width, view, theme and zoom.
| Shortcut | Action |
|---|---|
Alt + ← / Alt + → |
Back / Forward |
Ctrl + O / Ctrl + Shift + O |
Open a file / a folder |
F2 / Shift + F2 |
Next / previous view |
F9 / Shift + F9 |
Next / previous document theme |
Ctrl + wheel, Ctrl + / Ctrl - |
Zoom the document (Ctrl 0 resets) |
Ctrl + P |
Print — once to choose a theme, again to print |
F5 / Ctrl + R |
Refresh |
Ctrl + B / F1 |
Toggle sidebar |
F11 |
Fullscreen (Esc leaves it) |
? |
All shortcuts |
- .NET 10 SDK
- Windows: the WebView2 Runtime (preinstalled on current Windows)
- Linux: WebKitGTK + GTK —
webkit2gtk-4.1andgtk3(Arch/CachyOS:sudo pacman -S --needed gtk3 webkit2gtk-4.1 dbus)
dotnet run --project src/MarkdownBlaze -- "docs/index.md" # a file
dotnet run --project src/MarkdownBlaze -- "docs" # or a whole folderPrebuilt, self-contained binaries (Windows zip/installer/MSIX, Linux tar.gz/.deb/.pkg.tar.zst,
macOS .dmg) come from the manual release workflow. On Linux,
packaging/linux/install-linux.sh installs the .desktop entry and registers MarkdownBlaze for
.md files and markdown:// links.
- .NET 10, PhotinoX.Blazor 5 (native OS WebView host), Microsoft Fluent UI Blazor
- Markdig + bwets.Markdig.Extensions for Markdown → HTML
- highlight.js, Mermaid and KaTeX, all bundled for offline use
docs/ Sample wiki / feature showcase
src/
MarkdownBlaze/
Program.cs Photino + Blazor host, markdown:// scheme, shell integration
App.razor Root (app theme, view switch)
ViewerView.razor Toolbar, folder tree, print bar, view modes, zoom
SettingsView.razor Settings page
Services/
MarkdownService Markdown → HTML, startup file/folder resolution
NavigationService Current document, back/forward, links, file watching
FileTreeService The folder being read, as a lazily-read tree
ContentThemes The document themes and their light/dark character
ViewModes Continuous vs page view
ShellIntegration Explorer verbs and the markdown:// handler
UriScheme markdown:// addresses, both directions
HistoryStore Persisted history, order preserved
wwwroot/
app.css / app.js Shell styling, pagination, zoom, printing, theming
lib/ Offline highlight.js, Mermaid, KaTeX, document themes
packaging/ Linux .desktop/.deb/PKGBUILD, Windows installer/MSIX, macOS .app/.dmg
Personal project — all rights reserved unless stated otherwise.