MDViewer Documentation

Complete guide to installation, features, keyboard shortcuts, and enterprise deployment for the professional Markdown viewer for Windows.

v1.7.0 Windows 10+ .NET 8 Free to download

🚀 Quick Start

New to MDViewer?

  1. Download the Portable ZIP or run the Install script from the Downloads page
  2. Extract and run MDViewer.exe, or let the installer set up file associations
  3. Open any .md file by double-clicking or dragging it onto the window
  4. Use Ctrl+E to open the built-in editor, Ctrl+P to export PDF

After first launch

  • File associations — right-click any .md file to see "Open with MDViewer" (MSI install only)
  • Recent files — File menu tracks your recently opened documents
  • Settings persist — window size, zoom level, and preferences are saved automatically to %LocalAppData%\MDViewer\settings.json
  • Repository detection — MDViewer walks up the directory tree to find your documentation root automatically

WebView2 requirement

MDViewer uses WebView2 (the Edge rendering engine) for Markdown display. It ships with Windows and is auto-updated via Windows Update. If MDViewer shows a blank window on first launch, see the Troubleshooting section.

💿 Installation

Method Best for Requires admin
Portable ZIP Quick start, no install needed, USB drives No
Install script (.bat) Standard per-machine install with file associations Yes
MSI Installer Enterprise deployment, Group Policy, silent install Yes

Portable ZIP

  1. Download MDViewer-vX.X.X-Portable.zip from the Downloads page
  2. Extract to any folder (e.g. C:\Tools\MDViewer\)
  3. Run MDViewer.exe — no install or admin rights required

Install script

  1. Download Install-MDViewer-vX.X.X.bat
  2. Right-click → Run as administrator
  3. The script downloads the MSI, installs it silently, and sets up file associations

Silent / enterprise MSI install

# PowerShell — download and install silently
$repo = "MDViewer-App/mdviewer.app"
$rel  = Invoke-RestMethod "https://api.github.com/repos/$repo/releases/latest"
$msi  = ($rel.assets | Where-Object { $_.name -like "*Setup.msi" }).browser_download_url
$out  = "$env:TEMP\MDViewer-Setup.msi"
Invoke-WebRequest $msi -OutFile $out
Start-Process msiexec.exe -ArgumentList "/i `"$out`" /quiet /norestart" -Wait
Remove-Item $out

Verifying downloads

# PowerShell SHA256 check
Get-FileHash .\MDViewer-vX.X.X-Portable.zip -Algorithm SHA256
# Compare against checksums-vX.X.X.txt on the release page

✨ Feature Overview

🧭 Smart Navigation

  • Auto-detects documentation root by walking up the directory tree looking for .git or markdown clusters
  • Breadcrumb header and footer added to every rendered page
  • Related files, subdirectory links, and parent navigation auto-generated
  • Relative and absolute links resolved correctly; Alt+← goes back through history

✏️ Built-in Editor

  • Open with Ctrl+E — full text editor window beside the viewer
  • New, Open, Save, Save As, Find, Replace, Word Wrap
  • Live preview — save a file and the viewer refreshes automatically
  • External editor support — configure VS Code, Notepad++, or any editor via Settings

📄 Export

  • PDF — high-quality via WebView2/Chromium print pipeline, preserves all formatting and images
  • Word (.docx) — via Pandoc (auto-downloaded on first use) + PowerShell
  • Save As dialog with configurable output path

🏢 Documentation Hub

  • Open with Ctrl+D or Tools → Documentation Hub
  • Category management with color coding and priority levels
  • Search across all tracked documents
  • Dashboard generation for team overviews

🔌 Embeddable Controls Library

New in v1.7.0 — the full engine as a drop-in WinForms control for .NET 8 and .NET Framework 4.8. See the Embeddable Controls section below.

✏️ Built-in Editor

Opening the editor

  • Ctrl+E from the viewer
  • Tools menu → Open Editor

File operations

ActionShortcut
New fileCtrl+N
Open fileCtrl+O
SaveCtrl+S
Save AsCtrl+Shift+S
FindCtrl+F
ReplaceCtrl+H

External editor

  1. Go to Settings → External Editor
  2. Set the path to your preferred editor (e.g. C:\Program Files\Microsoft VS Code\Code.exe)
  3. Press Ctrl+Shift+E in the viewer to open the current file in that editor

📄 Export

PDF export

How it works

Triggered by Ctrl+P or File → Export to PDF. MDViewer uses WebView2's Chromium print pipeline to render a clean PDF — same quality as printing a web page in Edge. A Save As dialog lets you choose the output path.

  • Preserves all markdown styling, images, and tables
  • Automatic page breaks and margins
  • Embedded images (relative paths resolved correctly)

Word export

How it works

File → Export to Word. MDViewer uses Pandoc (auto-downloaded on first use) invoked via PowerShell to convert the current Markdown source to .docx.

Requirement: PowerShell execution policy must allow scripts.

# If Word export fails, run this in PowerShell (as admin)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Common export issues

  • PDF hangs: Check disk space and WebView2 permissions; disable antivirus temporarily to test
  • Word fails: Check execution policy above; ensure internet access for Pandoc download
  • Missing images in PDF: Use relative paths; absolute paths outside the repository root may not resolve

🏢 Enterprise Features

Documentation Hub

Open via Ctrl+D or Tools → Documentation Hub. Designed for teams managing large documentation sets across departments.

Hub capabilities

  • Categories — organize documents by team, project, or type (API Docs, SOPs, User Guides…)
  • Priority levels — High / Medium / Low, with visual indicators
  • Pinned documents — quick access to frequently used files
  • Search & filter — find documents across all categories instantly
  • Dashboard generation — produce an overview index page for distribution

Deployment

Group Policy software installation

The MSI supports standard Windows Group Policy Software Installation. Deploy to a machine OU and MDViewer will install on next policy refresh with file associations and Start Menu shortcuts.

Registry pre-configuration

; Pre-configure external editor for all users
[HKEY_LOCAL_MACHINE\SOFTWARE\MDViewer]
"ExternalEditor"="C:\\Program Files\\Microsoft VS Code\\Code.exe"

Business license

Enterprise features — shared documentation hubs, network folder support, read-only/kiosk mode, and MSI deployment packaging — are available with a Business license ($79/seat/year). Contact us for volume pricing and early access.

🔌 Embeddable Controls Library

New in v1.7.0. MarkdownViewer.Controls packages the full MDViewer rendering engine as a WinForms UserControl you can drop into any .NET Windows desktop application — no separate process, no WebSocket server, no infrastructure.

What you get

  • Full GitHub-flavored Markdown rendering via Markdig + WebView2
  • Built-in navigation bar — ◀ Back button, breadcrumb label, history stack
  • Alt+← and Ctrl+R wired through the Markdown parser (not native browser-back)
  • ExportPdfAsync() and ExportWordAsync() export methods
  • FileNavigated and CanNavigateBackChanged events for host app integration
  • MarkdownViewerOptions for zoom, nav bar visibility, and navigation enhancements
TargetRenderingNavigationWord ExportPDF Export
.NET 8 (net8.0-windows)
.NET Framework 4.8 (net48)— ¹

¹ PDF export requires .NET 6+. On net48, ExportPdfAsync() throws PlatformNotSupportedException with a clear upgrade message.

Quick start — C#

var viewer = new MarkdownViewer.Controls.MarkdownViewerControl();
viewer.Dock = DockStyle.Fill;
this.Controls.Add(viewer);
viewer.LoadFile(@"C:\docs\README.md");

Quick start — VB.NET

Dim viewer As New MarkdownViewer.Controls.MarkdownViewerControl()
viewer.Dock = DockStyle.Fill
Me.Controls.Add(viewer)
viewer.LoadFile("C:\docs\README.md")

Loading inline Markdown

// Load from string instead of file
viewer.LoadMarkdown("# Hello World\n\nThis is **inline** content.", baseDirectory: @"C:\docs");

Listening to navigation events

viewer.FileNavigated += (s, path) => {
    titleBar.Text = Path.GetFileName(path);
};
viewer.CanNavigateBackChanged += (s, canGoBack) => {
    backButton.Enabled = canGoBack;
};

Available through professional services

MarkdownViewer.Controls is available as part of a professional services engagement. We can help with custom theming, authentication-gated content, search integration, or any other integration your application needs.

Contact: [email protected]

⌨️ Keyboard Shortcuts

Viewer

ShortcutAction
Ctrl+OOpen file picker
Ctrl+EOpen built-in editor
Ctrl+Shift+EOpen in external editor
Ctrl+PExport to PDF
F5 / Ctrl+RReload and re-parse through the Markdown engine
Alt+←Navigate back to previous document
Ctrl+DOpen Documentation Hub
Ctrl++Zoom in
Ctrl+-Zoom out
Ctrl+0Reset zoom to 100%
F12Open WebView2 developer tools

Editor window

ShortcutAction
Ctrl+NNew document
Ctrl+SSave
Ctrl+Shift+SSave As
Ctrl+FFind
Ctrl+HFind and Replace

🔧 Troubleshooting

Blank window on startup — WebView2 missing

Cause: WebView2 runtime not installed (unusual — it ships with Windows 10 and later).

Fix: Run Windows Update, or download the Evergreen Bootstrapper from Microsoft's WebView2 page.

Ctrl+R or Alt+← shows "file not found"

Cause: You're on a version older than v1.7.0. WebView2 was intercepting those shortcuts and trying to reload deleted temp files.

Fix: Update to v1.7.0. Both shortcuts now route through the Markdown parser correctly.

File associations missing — right-click "Open with" not appearing

  • Re-run the MSI installer with administrator privileges
  • Or: Right-click a .md file → Properties → Open with → Choose another app → browse to MDViewer.exe

Word export fails

  • Run in PowerShell (as admin): Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Ensure you have internet access — Pandoc is downloaded on first use
  • Check that the temp directory (%TEMP%) is writable

PDF export hangs or produces blank output

  • Check available disk space in the target directory
  • Temporarily disable antivirus or security software
  • Press F12 to open developer tools and check the Console for errors

Diagnostic mode

# Run built-in diagnostics from the command line
MDViewer.exe --test

This runs checks for .NET runtime availability, Markdig parsing, WebView2 presence, and filesystem access. Output is shown in the console.

Settings file location

If MDViewer is behaving unexpectedly, you can reset it by deleting the settings file:

%LocalAppData%\MDViewer\settings.json

⚙️ Advanced Usage

Command-line interface

# Open a specific file
MDViewer.exe "C:\Docs\README.md"

# Run diagnostics
MDViewer.exe --test

# Convert Markdown to PDF (headless)
MDViewer.exe convert input.md pdf output.pdf

# Convert Markdown to HTML
MDViewer.exe convert input.md html output.html

# Show version
MDViewer.exe --version

Settings file

User settings are stored at %LocalAppData%\MDViewer\settings.json. You can pre-configure them for deployment:

{
  "ZoomFactor": 1.0,
  "ExternalEditor": "C:\\Program Files\\Microsoft VS Code\\Code.exe",
  "Theme": "GitHub",
  "WindowWidth": 1200,
  "WindowHeight": 800
}

Custom CSS themes

/* Place in %LocalAppData%\MDViewer\Themes\custom.css */
body {
    font-family: 'Georgia', serif;
    background: #fafaf8;
    color: #2c2c2c;
}

h1, h2, h3 {
    color: #1a1a6e;
    border-bottom: 1px solid #ddd;
}

code {
    background: #f0f0f0;
    color: #c0392b;
}

Git integration notes

MDViewer detects .git folders to set the navigation root and resolve absolute image paths. If your repository has a non-standard structure (monorepo, sparse checkout), you can place a .mdviewer-root marker file in the directory you want treated as the documentation root.

💬 Support

Contact

When reporting a bug, please include

  • MDViewer version — Help → About MDViewer
  • Windows version — run winver
  • Steps to reproduce — exact sequence of actions
  • Error text — copy any error dialog text verbatim

Staying current

MDViewer checks for updates on startup (MSI install). You can also check manually via Help → Check for Updates, or watch the releases page.