pdf2md

PDF to Markdown, in your browser. The file never leaves this tab.

Drop a PDF here or tap to choose one — nothing is uploaded
Options
Include

What this is

A PDF parser compiled to WebAssembly, running in this page. Your file is read into memory, converted, and forgotten when you close the tab. There is no upload and no queue. A few conversions are free without an account; a free account at auth.dudko.dev has many more, and a paid plan lifts the limit — the file still never leaves this tab, only the count does.

It reads headings from font sizes, keeps lists and tables, follows multi-column layouts in the right order, and decodes CJK fonts. Download .zip with images adds the pictures as PNG and JPEG files and the charts, diagrams and logos drawn with vectors as SVG, shows them under the Markdown that links to them, and saves the pair. It does not do OCR: a scanned document is reported as such so you know to run it through an OCR tool first.

Beyond this page

The same converter, three other ways — the module this page runs, reached differently. Each counts against the same allowance as the page does.

In your own code

An HTTP API, for pipelines

POST /api/v1/convert takes the document and answers Markdown. /api documents every option and has a form to try it in. It needs an API key from your account, and answers on this hostname as well as at pdf2md-api.dudko.dev.

MCP, so an assistant can do it

Claude and other MCP clients get the API explained and a ready-to-run request — options checked, a short-lived credential for your account included — to hand to whatever has the file. No document passes through the assistant, in either direction. Add it once:

  1. Copy the address —
  2. In Claude, open Settings → Connectors → Add custom connector and paste it in.
  3. Sign in when it asks. The connector gets a token of its own, good for this server and no other; the requests it builds spend the same allowance as this page. You can see it and take it away again at your account.