-
Notifications
You must be signed in to change notification settings - Fork 88
Home
Welcome to the documentation for Markdown Viewer. Markdown Viewer is a browser-based Markdown editor, viewer, reader, and previewer for opening .md and .markdown files, writing plain Markdown, and reading a split-screen live Markdown preview with sync scrolling. It includes document tabs, GitHub-Flavored Markdown, comments and suggestions, rich visual renderers, Markdown-to-PDF/HTML/PNG exports, Share Snapshot links, Live Share rooms, a PWA-capable web build, Docker deployment, and a lightweight Neutralinojs desktop build.
Most editing and rendering happens on your own device. The important exceptions are documented clearly: GitHub import contacts GitHub, remote diagram fallbacks contact third-party renderers, large Share Snapshot links use temporary Cloudflare KV storage, and Live Share relays temporary collaboration updates through Cloudflare Durable Objects. The web deployment also applies CSP and security headers, while the desktop build uses a restricted native API allowlist.
| Need | Page |
|---|---|
| Learn every feature, limitation, and data-handling detail | Features |
| Use the editor day to day | Usage Guide |
| Add and manage comments or suggestions | Usage Guide: Comments and Suggestions |
| Write supported Markdown, math, diagrams, maps, STL, and ABC notation | Markdown Reference |
| Install locally, in Docker, or as a desktop app | Installation |
| Tune deployment and runtime settings | Configuration |
| Deploy with Docker and reverse proxies | Docker Deployment |
| Build and understand the Neutralino desktop app | Desktop App |
| Understand Live Share on Cloudflare | Live Share Cloudflare |
| Add or maintain interface languages | Localization |
| Review project history and design decisions | Development Journey |
| Answer common privacy and troubleshooting questions | FAQ |
| Contribute changes | Contributing |
| Method | Command | URL |
|---|---|---|
| Python static server | python -m http.server 8080 |
http://localhost:8080 |
| Node static server | npx serve . -p 8080 |
http://localhost:8080 |
| Docker Compose | docker compose up -d |
http://localhost:8080 |
| Docker image | docker run -d --name markdown-viewer -p 8080:80 ghcr.io/thisis-developer/markdown-viewer:sha-15eafb0 |
http://localhost:8080 |
| Desktop app | Download from GitHub Releases or build from desktop-app/
|
Desktop window |
Run local web builds through localhost or another HTTP(S) server. Opening index.html with file:// can break Web Workers and Service Workers because browsers block those APIs from local files.
| Principle | What It Means |
|---|---|
| On-device editing | Normal typing, preview, tabs, exports, themes, and settings stay on the user's device. No login is required. |
| Explicit network features | Any feature that sends content elsewhere is user-triggered or tied to a renderer/importer that is documented. |
| Rich Markdown support | The live preview supports GFM tables/task lists, math, footnotes, alerts, Mermaid, PlantUML, Graphviz, D2, Vega-Lite, Markmap, WaveDrom, maps, STL, ABC notation, and more. |
| Responsive performance | Large documents use debounced rendering, optional worker rendering, DOM patching, and cached measurements. |
| Deploy anywhere | The app can run as static files, a PWA, a Docker container, or a lightweight Neutralinojs desktop build. |
- No accounts, cookies, analytics, ads, or telemetry are implemented.
- Normal documents and settings are stored in browser localStorage or local desktop storage.
- Comments and suggestions stay with normal local tabs, are excluded from exports and Share Snapshot, and synchronize only during an active Live Share room.
- Private mode clears document state and prevents normal document-state persistence until it is turned off; the About dialog also provides Clear local data.
- Small Share Snapshot links keep compressed content in the URL hash.
- Large Share Snapshot links upload the snapshot to Cloudflare KV for up to 90 days and remain bearer links for anyone who has the URL.
- Live Share sends real-time updates, display names, cursors, and presence through a Cloudflare Durable Object while the room is active.
- Live Share host, edit, and view capabilities are authenticated server-side, and unsupported WebSocket origins are rejected.
- Remote diagram renderers receive diagram source when PlantUML, D2, Graphviz, Vega-Lite, WaveDrom, or some preview helpers need them.
For the complete table of data flows, see Features.
Wiki Home · Open Markdown Viewer · Repository · Releases · Report an Issue
Markdown Viewer documentation · Apache-2.0 License · Maintained by ThisIs-Developer
Get Started
Deploy & Configure
Project
Open Markdown Viewer
Markdown Viewer Repository
Releases
Report an Issue