Show HN: Docx-to-Markdown – layout-aware Word to Markdown converter Eigenpal released docx-to-markdown, an open-source Apache 2.0 TypeScript library that converts Word documents into per-page Markdown blocks using the company's Word-compatible layout engine, the author announced on Hacker News. The library preserves headers, footers, and image references and handles fonts via Google Fonts fallback or user-supplied font files for accurate content measurement. The author said the tool replaces a LibreOffice sidecar-to-PDF-to-Markdown pipeline previously used to preprocess Word documents for agentic workflows. Hey HN, I’m the author of the https://github.com/eigenpal/docx-editor https://github.com/eigenpal/docx-editor , it’s an SDK that implements Word-compatible layout engine in Typescript. Today, we are releasing Word to markdown converter library. It’s open source and published under Apache 2.0 license. It uses our layout engine, so it can return accurate, per-page markdown blocks with headers, footers, and image references . We also handle fonts Google fonts as fallback or let you pass your font files upfront for accurate content measurement. To our surprise, Word to per-page Markdown conversion is not a solved problem even in 2026 We initially faced this friction when preprocessing Word documents for agentic workflows. For our use case, it was important to represent per-page content in markdown. Initially, we ended up using LibreOffice sidecar to convert to PDF and then using .pdf - .md library. This was not ideal given that LibreOffice sidecar that was sitting idle most of the time. This issue is addressed with docx-to-markdown library. it can be used directly in your Typescript ingestion pipeline. Try with your docs at https://www.docx-editor.dev/solutions/word-to-markdown https://www.docx-editor.dev/solutions/word-to-markdown . if you catch any bugs please let us know in the comments / or file gh issues Comments URL: https://news.ycombinator.com/item?id=49728477 https://news.ycombinator.com/item?id=49728477 Points: 2 Comments: 2