About this site

A small tool, and the reasoning behind it

Docs to MD turns documents into Markdown. That's the whole product.

It's built and maintained by one independent developer, and it runs entirely inside your browser.

In effect since 2026-08-04

Why this exists

Writing happens in Word, Google Docs and spreadsheets. Publishing happens in Markdown — in a static site, a wiki, a README, a docs folder in a git repository. The gap between the two gets crossed by hand more often than it should, and doing it by hand means retyping headings, rebuilding tables and re-adding links.

There is no shortage of converters that do this. Almost all of them work the same way: you upload your file to a server, a program there converts it, and you download the result. That's a reasonable design, and it's also a design where your document sits on someone else's computer for a while. For a blog draft that's fine. For a contract, a medical record, a set of internal figures or an unpublished manuscript, it isn't.

So this site is built the other way around. The conversion runs in your browser, with JavaScript, on your own machine. There is no upload step because there is nowhere to upload to.

How it actually works

When you drop a file in, your browser reads it locally and hands the bytes to a parser that is also running in your browser. The parser turns the document into a structure, and that structure is written out as Markdown. All of it happens between your file and your screen.

The parsers are open-source libraries, chosen per format:

  • Mammoth reads .docx. Legacy .doc is parsed by our own reader, byte by byte, since it's a pre-2007 binary format with no library that runs in a browser.
  • Mozilla's pdf.js reads PDFs. It, and its font and character-map data, are served from this site rather than a CDN — a document parser fetching things from third parties would undo the point.
  • DOMPurify sanitises HTML before anything is read, and Turndown converts the cleaned HTML into Markdown.
  • Papa Parse reads CSV and TSV; read-excel-file reads .xlsx workbooks.

What it deliberately doesn't do

There are no accounts, because there's nothing to store. There's no API, because there's no server to call. There's no OCR, so scanned PDFs won't work — and the tool says so rather than handing you an empty file. There's no Google Drive connection, because that would mean asking for access to all your files and holding a token for them.

Every conversion also has real limits, and each tool page lists its own. Merged table cells flatten, because Markdown pipe tables can't express them. Tracked changes are dropped. A PDF's heading levels are inferred from font size, not read, because a PDF doesn't record them. Those are stated up front rather than discovered after you've converted something important.

How it's paid for

The tool is free and has no paid tier. The plan is to cover hosting with advertising, which is why you may see ads on these pages in future. Ads will never be placed so as to be mistaken for a download or convert button, and they won't be injected after a conversion in a way that shifts the page under your cursor.

Advertising does not change how conversion works. Your files stay on your machine either way — that isn't a policy decision that could be reversed for revenue, it's a consequence of there being no server in the first place.

The sister site

Docs2HTML does the same job in the other direction: Markdown, DOCX, CSV and Excel into HTML. Same approach, same privacy model, different output format.

Something here unclear, or something you want changed? Contact