提供实时预览的本地优先 Markdown 编辑器与查看器
在浏览器、渐进式 Web 应用(PWA)、Docker 或 Neutralino 桌面应用中打开、编写、整理、审阅、渲染和导出 Markdown;需要时还可使用分享与协作功能。
Markdown Viewer 是一个开源、本地优先的工作区,适合开发者、写作者、学生、研究人员以及所有使用 .md 或 .markdown 文件的用户。它不止于纯文本:在一个专注的工作区中整理多个文档,在不改动 Markdown 的情况下通过与所选内容锚定的评论进行审阅,并渲染图表、地图、数据图、数学公式、3D 模型和音乐。
将文档转换为 Share Snapshot 链接以便快速分享,或启动带访问控制的 Live Share,进行实时协同编辑并使用实时光标、锚定评论和线程回复。日常编辑在设备上完成。无需账号,应用也不包含广告、分析、遥测或订阅。
- 工作区与文档: 在 Web 端使用按文档划分的 IndexedDB 存储,并在嵌套文件夹中整理文档。还可使用最近使用、收藏夹、搜索、标签页、批量操作和加密的 Secret Workspace(秘密工作区)。
- 备份与恢复: 导出或导入保留文件夹结构的工作区 ZIP。可以选择包含加密的 Secret Workspace 文件,但回收站和桌面历史记录不包含在备份中。
- 编辑与审阅: 在编辑器、分屏视图和预览之间切换,使用格式工具、效率快捷键、自定义撤销/重做、查找和替换、LTR/RTL、锚定到所选内容的评论与线程回复。
- Markdown 渲染: 支持 CommonMark 风格基础语法、GitHub-Flavored Markdown(GFM)、表格、任务列表、提示块、脚注、定义列表、代码语法高亮、已清理的 HTML 和 MathJax。
- 可视化内容: 渲染 Mermaid、PlantUML、Graphviz/DOT、D2、Vega-Lite、WaveDrom、Markmap、GeoJSON、TopoJSON、STL 和 ABC 记谱。
- 导入与导出: 打开本地文件,或打开来自分支、标签、提交 SHA 以及可选私有仓库的 GitHub 内容;支持导出 Markdown、独立 HTML、PNG、浏览器打印/另存为 PDF 或旧版栅格 PDF。
- 可选分享: 创建“仅供查看”或“可以编辑”模式的 Share Snapshot(分享快照),或者启动具有主持人、可以编辑和仅供查看权限的临时 Live Share(实时共享)房间。
- 多种运行方式: 使用托管 Web 应用、PWA、静态托管、Docker、Cloudflare 或 Neutralino 桌面应用。
有关已实现的行为和限制,请参阅功能参考(英文)。
直接使用托管 Web 应用,或通过本地 HTTP 服务器运行仓库:
git clone https://github.com/ThisIs-Developer/Markdown-Viewer.git
cd Markdown-Viewer
python -m http.server 8080打开 http://localhost:8080。不要依赖 file://;浏览器安全规则可能会阻止 Web Worker 和 Service Worker。
| 运行目标 | 详细文档(英文) |
|---|---|
| PWA/静态 Web 托管 | 安装 |
| Docker | Docker 部署 |
| Cloudflare Pages/KV/Durable Objects | 配置 |
| Neutralino 桌面应用 | 桌面应用 |
Markdown Viewer 以本地处理为优先,但并非所有功能都能离线运行。
| 操作 | 默认数据路径 |
|---|---|
| 编辑、本地导入、预览、工作区自动保存和大多数导出 | 设备本地 |
| Web 库与未缓存的渲染器依赖 | Web/PWA 版本向 CDN 发出请求 |
| GitHub 导入与表情符号查询 | 公开内容使用 GitHub API/原始内容主机;私有内容和 PAT 仅使用 api.github.com |
| PlantUML、D2、Graphviz、Vega-Lite、WaveDrom 和部分图表预览 | 图表源码可能发送到 PlantUML、Kroki 或 mermaid.ink |
| 经同意后插入的图片、GIF 和视频 | 通过公开链接访问的 Cloudflare 临时媒体存储(90 天) |
| 大型 Share Snapshot | Cloudflare KV(90 天) |
| Live Share | Cloudflare Durable Object WebSocket 中继;文档内容不会在服务器端持久保存 |
| 外部图片、媒体、链接和地图图块 | 文档指定的外部主机 |
Share Snapshot 和 Live Share URL 都是持有者链接。任何获得有效链接的人都可以使用其中包含的权限。Live Share 不提供端到端加密。在对敏感文档使用网络功能之前,请阅读隐私与安全(英文)。
| 代码围栏 | 渲染路径 |
|---|---|
mermaid |
客户端渲染;插入预览可能使用 mermaid.ink 或 Kroki |
plantuml |
PlantUML 服务器;Kroki 作为后备 |
d2、graphviz、dot、vega-lite、vegalite、wavedrom |
Kroki |
markmap |
客户端 Markmap 和 D3 |
geojson、topojson |
客户端 Leaflet;地图图块可能使用网络 |
stl |
客户端 Three.js/WebGL |
abc |
客户端 ABCJS;播放需要浏览器音频支持 |
math 和 LaTeX 分隔符 |
客户端 MathJax |
远程渲染服务会接收其渲染的图表源码。如果不信任所配置的服务,请勿发送敏感图表源码。语法请参阅 Markdown Reference(英文),限制请参阅功能参考(英文)。
详细页面以英文维护。
| 目的 | 页面(英文) |
|---|---|
| 选择起始页面 | Documentation Home |
| 完整功能与限制 | Features |
| 日常使用与快捷键 | Usage Guide |
| Markdown/图表语法 | Markdown Reference |
| Share Snapshot | Share Snapshot |
| Live Share | Live Share |
| 隐私与安全 | Privacy and Security |
| 安装与部署 | Installation |
| 配置存储、渲染器和 Cloudflare | Configuration |
| 故障排除 | Troubleshooting/FAQ |
| 参与贡献 | Contributing |
| 社区行为准则 | Code of Conduct(英文) |
| 漏洞报告与安全支持 | Security Policy(英文) |
| 多语言术语与本地化 | Localization and Terminology |
- 工作区备份导入不会合并工作区;确认后会永久替换当前工作区。
- 工作区备份不包含回收站、桌面历史记录或崩溃恢复日志。
- 大于 10 MB 的本地 Markdown 文件会被拒绝。
- GitHub 凭据保管库最多可保存 50 个命名 PAT;每个令牌名称最长为 60 个字符。
- 处理前的媒体源文件最大为 25 MiB;存储上限为静态图片 300 KiB、GIF 5 MiB、视频 10 MiB。
- 存储型 Share Snapshot 最多包含 8,000,000 个字符,并在 90 天后过期。
- Live Share 最多允许 64 个 WebSocket 参与者,单条实时消息最大为 8 MB。
- STL 源码最大为 2 MiB,渲染后的几何体最多为 300,000 个顶点。
- 桌面保管库为每个文档最多保留 20 个最近历史副本。
- 栅格 PDF/PNG 导出受浏览器内存、Canvas 与 CORS 限制。
详情请参阅 Features: Known Technical Limits(英文)。
以下基于 Markdown Viewer 的社区项目由其开发者独立维护。
- Markdown Desk:使用 Tauri 构建的原生 macOS 封装应用,增加了原生文件对话框与文件处理程序、菜单栏集成、自动重新加载和应用内更新功能。
Markdown Viewer 最初是 PC 上的一个小型个人项目:一款源于好奇心、经历过错误与修正,并倾注了许多心力的简单 Markdown 查看器。初始版本目前仍可在线访问,也始终是这个项目的初心所在。
如需了解更完整的项目历史,请阅读 Development Journey(英文)。
Markdown Viewer 在社区贡献者的共同参与下不断成长。
请参阅 Contributing(英文)、Code of Conduct(英文)和 Security Policy(英文)。缺陷报告与功能建议可使用 Issue Tracker。
Markdown Viewer 采用 Apache License 2.0。





