A local-first Markdown editor and viewer with live preview.
Open, write, organize, review, render, export, and optionally share Markdown in a browser, as a Progressive Web App (PWA), in Docker, or in the Neutralino desktop application.
English · 日本語 · 한국어 · 简体中文 · 繁體中文
Open the web app · Start with the documentation · Report an issue · View releases
Table of contents (click to expand)
Markdown Viewer is an open source, local-first workspace for developers, writers, students, researchers, and anyone working with .md or .markdown files. Go beyond plain text. Organize multiple documents, review with comments and suggestions without changing the Markdown, and render diagrams, maps, charts, math, 3D models, and music—all in one focused workspace.
Turn a document into a Share Snapshot link for quick handoffs, or start access-controlled Live Share for real-time co-editing, live cursors, comments, and suggestions. Everyday editing stays on your device. No account is required, and the application includes no ads, analytics, telemetry, or subscriptions.
- Workspace and documents: organize up to 50 documents in nested folders; use Recent, Favorites, search, tabs, bulk actions, and an encrypted Secret Workspace.
- Editing and review: switch among Editor, Split view, and Preview; use formatting tools, custom undo/redo, Find and Replace, LTR/RTL direction, comments, and suggestions.
- Markdown rendering: use CommonMark-style Markdown, GitHub-Flavored Markdown (GFM), tables, task lists, alerts, footnotes, definition lists, syntax highlighting, sanitized HTML, and MathJax.
- Visual content: render Mermaid, PlantUML, Graphviz/DOT, D2, Vega-Lite, WaveDrom, Markmap, GeoJSON, TopoJSON, STL, and ABC notation.
-
Import and export: open local files or public GitHub content; export Markdown, standalone HTML, PNG, Browser Print/Save as PDF, or a legacy raster PDF.
-
Optional sharing: create a Share Snapshot with View only or Can edit access, or start a temporary Live Share room with host, Can edit, and View only capabilities.
- Multiple delivery options: use the hosted web app, install the PWA, self-host static files, run Docker, deploy on Cloudflare, or build the Neutralino desktop application.
For verified behavior, limits, and implementation notes, read the feature reference.
Use the hosted application at markdownviewer.pages.dev, or run the repository through a local HTTP server:
git clone https://github.com/ThisIs-Developer/Markdown-Viewer.git
cd Markdown-Viewer
python -m http.server 8080Open http://localhost:8080. Do not rely on file://; browser security rules can block Web Workers and Service Workers.
Other options:
| Target | Start here |
|---|---|
| PWA or static web hosting | Installation |
| Docker | Docker Deployment |
| Cloudflare Pages, KV, and Durable Objects | Configuration |
| Neutralino desktop application | Desktop Application |
Markdown Viewer is local-first, not network-free. The following table shows the main boundary:
| Workflow | Default data path |
|---|---|
| Editing, local imports, Preview, Workspace autosave, and most exports | On the device |
| Web libraries and uncached renderer dependencies | CDN requests in the web/PWA build |
| Public GitHub import and emoji lookup | GitHub APIs and raw-content hosts |
| PlantUML, D2, Graphviz, Vega-Lite, WaveDrom, and some diagram previews | Diagram source can be sent to PlantUML, Kroki, or mermaid.ink |
| Consented image, GIF, and video insertion | Public, content-addressed Cloudflare media storage for 90 days |
| Large Share Snapshot | Cloudflare KV for 90 days |
| Live Share | WebSocket relay through a Cloudflare Durable Object; document content is not persisted server-side |
| External images, media, links, and map tiles | The referenced external host |
Share Snapshot and Live Share URLs are bearer links. Anyone who obtains a valid link and capability can use the access it grants. Live Share is not end-to-end encrypted. See Privacy and Security before using network features with sensitive content.
| Fence | Rendering path |
|---|---|
mermaid |
Client-side; insertion previews can use mermaid.ink or Kroki |
plantuml |
PlantUML server; Kroki fallback |
d2, graphviz, dot, vega-lite, vegalite, wavedrom |
Kroki |
markmap |
Client-side Markmap and D3 |
geojson, topojson |
Client-side Leaflet; map tiles can use the network |
stl |
Client-side Three.js/WebGL |
abc |
Client-side ABCJS; playback needs browser audio support |
math and LaTeX delimiters |
Client-side MathJax |
Remote renderer services receive the source of the diagram they render. Do not send sensitive diagram source unless you trust the configured service. See the Markdown Reference for syntax and the feature reference for limitations.
| Need | Page |
|---|---|
| Choose a starting point | Documentation Home |
| Review all product capabilities and limits | Features |
| Learn day-to-day workflows and shortcuts | Usage Guide |
| Write supported Markdown and rich fences | Markdown Reference |
| Understand Share Snapshot | Share Snapshot |
| Understand Live Share | Live Share |
| Review data handling and security boundaries | Privacy and Security |
| Install or deploy the product | Installation |
| Configure storage, renderers, and Cloudflare | Configuration |
| Resolve common problems | Troubleshooting and FAQ |
| Contribute code, documentation, or translations | Contributing |
| Maintain translations and approved multilingual terms | Localization and Terminology |
- The Workspace limit is 50 documents, including locked Secret Workspace counts and temporary Share Snapshot or Live Share tabs.
- A local Markdown file larger than 10 MB is rejected.
- The public GitHub importer shows at most 30 Markdown files for a repository or folder result.
- Managed source media is limited to 25 MiB before processing; stored payload limits are 300 KiB for still images, 5 MiB for GIFs, and 10 MiB for videos.
- Stored Share Snapshot content is limited to 8,000,000 characters and expires after 90 days.
- Live Share allows up to 64 WebSocket participants and 8 MB per live message.
- STL source is limited to 2 MiB and rendered geometry to 300,000 vertices.
- Raster PDF and PNG exports remain subject to browser memory, canvas, and cross-origin resource limits.
See Features: Known Technical Limits for context.
The following community project builds on Markdown Viewer and is maintained independently:
- Markdown Desk: A native macOS wrapper built with Tauri that adds native file dialogs and handlers, menu-bar integration, automatic reloads, and in-app updates.
Markdown Viewer started as a small personal project on a PC: a simple Markdown viewer built with curiosity, mistakes, fixes, and a lot of care. The original version is still online and remains at the heart of the project.
Read the Development Journey for the longer project history.
Markdown Viewer grows through contributions from its community.
Read Contributing before opening a pull request. Use the issue tracker for reproducible bugs and focused feature requests.
Do not publish vulnerability details in a normal issue. Use the repository's private security-reporting channel when available, as described in Contributing: Security Reports.
Markdown Viewer is licensed under the Apache License 2.0.





