关于本站
一个小工具,以及它背后的想法
Docs 2 HTML 把文档转成你愿意署上自己名字的 HTML。这就是产品的全部。
由一个独立开发者做和维护,全程在你的浏览器里运行。
生效日期 2026-08-04
为什么会有这个东西
每个写作工具都能导出 HTML。问题就在这儿。Word 的「另存为网页」会产出几千行,几乎每个元素都挂着一个 mso- 样式属性。Google Docs 递给你的是 c1、c17 这样的类名,而对应的样式表并没有给你。这两样从技术上说都是 HTML,作为一个网页的源码都无法使用 —— 你读不了,改不动,贴进模板就跟你的 CSS 打架。
人们真正想要的是自己会手写的那种标记:有标题的地方一个 <h2>,有表格的地方一个 <table>,别的什么都没有。从官方导出走到这一步,删掉的比留下的多,所以大多数人要么手工干,要么放弃、把那堆乱码直接贴上去。
这个站替你删。它读你文档的结构,据此写出语义化的 HTML,把表现扔掉,而不是试图复现它。
为什么跑在浏览器里
大多数转换工具的做法是:把文件传到服务器,在那边转好,再给你一个下载链接。这个设计是合理的,同时也意味着你的文档会在别人的电脑上待一会儿。对一篇博客草稿无所谓。对一份合同、一份病历、一套内部数据或者一部还没发表的书稿,就不是无所谓。
所以转换跑在你自己的机器上,用 JavaScript,就在你已经打开的这个标签页里。这里没有上传这一步,因为根本没有可以上传到的地方。这件事你可以自己验:把网络断开再转一次,或者在拖文件进来的同时看着浏览器的网络面板。
实际是怎么跑的
你把文件拖进来,浏览器在本地读它,把字节交给同样跑在浏览器里的解析器。解析器产出一个结构,结构变成 HTML,HTML 在你看到之前先被净化。解析器都是开源库,按格式选:
- markdown-it 解析 Markdown,遵循 CommonMark 规范,外加 GitHub 的表格、任务列表和删除线。
- Mammoth 读 .docx。老式 .doc 由我们自己写的读取器一个字节一个字节解析 —— 那是 2007 年前的二进制格式,没有能在浏览器里跑的现成库。
- DOMPurify 净化每一段经过的 HTML —— 包括我们自己生成的那些,因为里面的文字来自你的文档。
- Papa Parse 读 CSV 和 TSV;read-excel-file 读 .xlsx 工作簿。
关于安全那部分
一个输出 HTML 的工具,肩上有个 Markdown 转换器没有的责任:它交给你的东西可能被贴到一个正在运行的网站上,然后在那儿执行。所以净化在这里不是功能,是底线。script 标签、事件属性、javascript: 链接、iframe、object、embed 从任何输出里删掉,而没净化过的 HTML 一律不会插进这个页面的 DOM。
预览是另一件事,它渲染在一个禁用脚本、拥有独立源的 sandbox iframe 里。也就是说它碰不到这个页面、读不到任何东西、也执行不起来 —— 即便净化真漏了什么。两道相互独立的墙,因为一道墙就是单点故障。
刻意不做的事
没有账号,因为没有东西要存。没有 API,因为没有服务器可以调。不接 Google 云端硬盘,因为那意味着要申请你全部文件的权限,还要替你保管一个令牌。
每种转换也都有真实的限制,每个工具页都写着自己的那份。合并单元格会散开。Excel 的颜色和字体不还原。图片过不了 Google Docs 的粘贴。这些话说在前面,而不是等你转完一份要紧的东西之后才发现。
钱从哪来
工具免费,也没有付费档。托管费打算靠广告覆盖,所以以后你可能会在这些页面上看到广告。广告绝不会摆在容易被当成下载或转换按钮的位置,也不会在转换完成后插进来、把页面从你的光标底下顶开。
广告不会改变转换的工作方式。无论有没有广告,你的文件都留在你自己的机器上 —— 这不是一条为了收入可以掀翻的政策,而是「一开始就没有服务器」这件事的必然结果。
姐妹站
DocsToMD 做的是反方向的同一件事:Word、PDF、HTML、CSV、Excel 转成 Markdown。做法一样,隐私模型一样,输出格式相反。如果你其实是来找 Markdown 的,那边才是你要的。
这页哪里没写清楚,或者你希望改点什么? 联系