Skip to content

Repository files navigation

Markdown Viewer logo

Markdown Viewer

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.

License Latest release

Explore Markdown Viewer on CodeWiki Explore Markdown Viewer on DeepWiki

English · 日本語 · 한국어 · 简体中文 · 繁體中文

Open the web app · Start with the documentation · Report an issue · View releases

Table of contents (click to expand)

What Markdown Viewer Does

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.

Application UI

Highlights

  • 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.

Insert diagram module Diagrams 3D STL 3D STL Full screen

  • 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.

Live share

  • 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.

Quick Start

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 8080

Open 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

Local and Network Behavior

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.

Visual Renderer Summary

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.

Documentation

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

Important Limits

  • 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.

Showcase Projects

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.

Development Journey

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.

Contributors

Markdown Viewer grows through contributions from its community.

Markdown Viewer contributors

Contributing and Support

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.

License

Markdown Viewer is licensed under the Apache License 2.0.

About

A Markdown Editor That Lives in Your Browser, Desktop, and a Single URL. Fast GitHub-style Markdown editing with live preview, diagrams, LaTeX, syntax highlighting, PDF export, and multi-tab support across web, desktop, and Docker.

Topics

Resources

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Contributors

Languages