TL;DR

docx2md là CLI viết bằng Go của Yasuhiro Matsumoto (mattn) dùng để convert file Microsoft Word .docx sang Markdown. Một dòng go install, một binary vài MB, không dependency runtime, chạy offline — hợp cho dev và technical writer muốn migrate docs Word sang Git-friendly workflow mà không phải upload file lên web converter.

Repo: 736 stars, 55 forks, MIT license, v0.0.13 (27/03/2026). Đang trend lại trên X qua tweet của @tom_doerr.

Có gì đáng chú ý?

Bản thân docx2md không phải tool mới — mattn đã maintain vài năm — nhưng nó đáng nhắc lại vì giải quyết gọn một bài toán dai dẳng: convert Word sang Markdown mà không cần Pandoc (binary ~150MB, phụ thuộc Haskell runtime) và không cần upload tài liệu nhạy cảm lên web service.

Công thức cài đặt ngắn gọn:

go install github.com/mattn/docx2md@latest
docx2md NewDocument.docx > output.md

Hoặc dùng Docker, không cần cài Go:

docker run -it --rm ghcr.io/mattn/docx2md NewDocument.docx

Vì sao đáng quan tâm?

Ngày càng nhiều team muốn chuyển docs nội bộ (SOW, brief, contract, knowledge base) từ Word sang Markdown để version control trong Git và render bằng Docusaurus, MkDocs hay Hugo. Ba lựa chọn phổ biến đều có điểm khó chịu:

  • Pandoc — mạnh nhưng nặng, output nested list/table đôi khi lộn xộn, overkill nếu chỉ convert một chiều docx → md.
  • word2md.com — tiện nhưng phải upload file lên server bên thứ ba, không batch được, không plug vào CI.
  • Copy-paste thủ công — mất hết formatting, tốn giờ, không scale.

docx2md là middle ground: một binary tĩnh, pipeable, chạy được trong CI runner, xử lý batch bằng shell loop, và không để file ra khỏi máy bạn.

Technical facts

PropertyValue
Ngôn ngữGo (90.5% codebase)
LicenseMIT
AuthorYasuhiro Matsumoto (mattn)
Latest releasev0.0.13 — 27/03/2026
Repo stats736 stars · 55 forks · 52 commits
Distributiongo install + Docker image ghcr.io/mattn/docx2md

Formatting được giữ lại khi convert:

  • Headers (H1–H6)
  • Hyperlinks
  • Indentation
  • Tables
  • Ordered & unordered lists
  • Bold, italic, strike-through
  • Embedded images (extract ra file riêng)

So với các lựa chọn khác

ToolSetupOfflineBatch/CIPrivacyĐộ phức tạp hỗ trợ
mattn/docx2md1 lệnh GoFile không rời máyTrung bình
PandocNặng (~150MB + Haskell)LocalCao
word2md.com0 setupKhôngKhôngUpload lên serverCơ bản
gonzalopezgil/docx2md-cliGoLocalCao (vMerge, footnotes, bibliography)

Nếu bạn cần convert doc học thuật với footnotes, bibliography, hoặc bảng vMerge phức tạp, fork gonzalopezgil/docx2md-cli là lựa chọn đáng xem xét — được xây dựng specifically cho những case Pandoc fail.

Use cases thực tế

  • Migrate knowledge base: batch convert hàng trăm file Word thành Markdown để đưa lên Docusaurus hoặc Notion replacement.
  • Client handoff: nhận brief/SOW/contract từ client dưới dạng .docx, convert sang Markdown để review và commit vào repo dự án.
  • CI pipeline: khi contributor push .docx vào /docs, một GitHub Action chạy docx2md và auto-generate MD counterpart.
  • Blog migration: dev/writer có kho bài cũ viết Word — convert loạt kèm extract ảnh embedded, giữ được cả formatting lẫn media.
  • Batch một dòng shell:
for f in *.docx; do docx2md "$f" > "${f%.docx}.md"; done

Limitations & pricing

Hoàn toàn miễn phí, MIT license. Tuy nhiên nên biết trước một số giới hạn:

  • One-way only: docx → md, không hỗ trợ chiều ngược lại.
  • Word nâng cao: text boxes, SmartArt, equations (OMML), comments, tracked changes, macros — không được document là support.
  • Maintenance nhẹ: 52 commits tổng, version vẫn ở v0.0.x — ổn định nhưng đừng kỳ vọng feature mới nhanh.
  • Table phức tạp: với bảng merged cell nhiều cấp hoặc footnote-heavy, output có thể không hoàn hảo — cân nhắc fork gonzalopezgil/docx2md-cli.

Kết luận

docx2md không cố gắng thay Pandoc hay word2md. Nó là công cụ đơn mục tiêu, làm tốt 90% case Word-sang-Markdown phổ thông, nhẹ, offline, scriptable. Nếu stack của bạn đã có Go (hoặc Docker) và bạn cần giải pháp CLI có thể đưa vào Makefile/CI — đây là lựa chọn tiết kiệm thời gian setup nhất.

Một dòng go install, một dòng convert, xong việc.

Nguồn: github.com/mattn/docx2md, @tom_doerr tweet.