MDViewer Documentation
Complete guide to installation, features, keyboard shortcuts, and enterprise deployment for the professional Markdown viewer for Windows.
🚀 Quick Start
New to MDViewer?
- Download the Portable ZIP or run the Install script from the Downloads page
- Extract and run
MDViewer.exe, or let the installer set up file associations - Open any
.mdfile by double-clicking or dragging it onto the window - Use Ctrl+E to open the built-in editor, Ctrl+P to export PDF
After first launch
- File associations — right-click any
.mdfile 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
- Download
MDViewer-vX.X.X-Portable.zipfrom the Downloads page - Extract to any folder (e.g.
C:\Tools\MDViewer\) - Run
MDViewer.exe— no install or admin rights required
Install script
- Download
Install-MDViewer-vX.X.X.bat - Right-click → Run as administrator
- 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
.gitor 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
| Action | Shortcut |
|---|---|
| New file | Ctrl+N |
| Open file | Ctrl+O |
| Save | Ctrl+S |
| Save As | Ctrl+Shift+S |
| Find | Ctrl+F |
| Replace | Ctrl+H |
External editor
- Go to Settings → External Editor
- Set the path to your preferred editor (e.g.
C:\Program Files\Microsoft VS Code\Code.exe) - 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()andExportWordAsync()export methodsFileNavigatedandCanNavigateBackChangedevents for host app integrationMarkdownViewerOptionsfor zoom, nav bar visibility, and navigation enhancements
| Target | Rendering | Navigation | Word Export | PDF 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
| Shortcut | Action |
|---|---|
| Ctrl+O | Open file picker |
| Ctrl+E | Open built-in editor |
| Ctrl+Shift+E | Open in external editor |
| Ctrl+P | Export to PDF |
| F5 / Ctrl+R | Reload and re-parse through the Markdown engine |
| Alt+← | Navigate back to previous document |
| Ctrl+D | Open Documentation Hub |
| Ctrl++ | Zoom in |
| Ctrl+- | Zoom out |
| Ctrl+0 | Reset zoom to 100% |
| F12 | Open WebView2 developer tools |
Editor window
| Shortcut | Action |
|---|---|
| Ctrl+N | New document |
| Ctrl+S | Save |
| Ctrl+Shift+S | Save As |
| Ctrl+F | Find |
| Ctrl+H | Find 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
.mdfile → Properties → Open with → Choose another app → browse toMDViewer.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
- General support & bug reports: [email protected]
- Business & Pro licensing: [email protected]
- GitHub releases & changelogs: github.com/MDViewer-App/mdviewer.app/releases
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.