關於本站
一個小工具,以及它背後的想法
Docs 2 HTML 把文件轉成你願意署上自己名字的 HTML。這就是產品的全部。
由一個獨立開發者做和維護,全程在你的瀏覽器裡執行。
生效日期 2026-08-04
為什麼會有這個東西
每個寫作工具都能匯出 HTML。問題就在這兒。Word 的「另存為網頁」會產出幾千行,幾乎每個元素都掛著一個 mso- 樣式屬性。Google 文件遞給你的是 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 文件的貼上。這些話說在前面,而不是等你轉完一份要緊的東西之後才發現。
錢從哪來
工具免費,也沒有付費方案。主機費用打算靠廣告覆蓋,所以以後你可能會在這些頁面上看到廣告。廣告絕不會擺在容易被當成下載或轉換按鈕的位置,也不會在轉換完成後插進來、把頁面從你的游標底下頂開。
廣告不會改變轉換的運作方式。無論有沒有廣告,你的檔案都留在你自己的機器上 —— 這不是一條為了收入可以掀翻的政策,而是「一開始就沒有伺服器」這件事的必然結果。
姐妹站
DocsToMD 做的是反方向的同一件事:Word、PDF、HTML、CSV、Excel 轉成 Markdown。做法一樣,隱私模型一樣,輸出格式相反。如果你其實是來找 Markdown 的,那邊才是你要的。
這頁哪裡沒寫清楚,或者你希望改點什麼? 聯絡