PDF to Markdown Converter
Convert PDF to Markdown directly in your browser. Drop a file below and this PDF to Markdown converter reads its text layer, infers the headings, lists, tables, links and code blocks, and hands back clean Markdown you can edit, copy or download. The file never leaves your device.
Everything runs in this tab — your PDF is never uploaded.
Free, no signup, no file stored. Works offline once the page has loaded.
How it works
Four steps, all of them local to your machine.
A PDF does not store a document the way a word processor does. It stores instructions for painting glyphs at coordinates on a page. There is no record that a line is a heading, that three lines belong to the same list, or that a block of text is a table — that structure is something a reader infers from size, position and spacing. Converting a PDF to Markdown means rebuilding those inferences.
- Read the text layer. The file is opened with Mozilla's pdf.js inside your browser. Every text fragment comes back with its position, width and font, which is the raw material for everything else.
- Rebuild lines and columns. Fragments on the same baseline are joined into lines, and wide horizontal gaps within a line are treated as cell boundaries — the signal used later to spot tables.
- Classify each line. Text larger than the document's body
size becomes a heading, with the largest size mapped to
#, the next largest to##and so on. Lines starting with a bullet glyph or a number become list items. Lines set in a monospaced font become fenced code. Running headers and page numbers that repeat in the margins across pages are dropped. - Emit Markdown. Wrapped lines are rejoined into paragraphs, words hyphenated across a line break are repaired, link annotations become Markdown links, and characters that would be read as Markdown syntax are escaped.
Because the inference runs on geometry, the output quality tracks how conventionally the PDF was laid out. A report exported from Word, Google Docs, LaTeX or a static site generator converts well. A magazine spread does not.
Supported formatting
What the converter recognises, and how reliably.
| Element | Markdown output | Reliability |
|---|---|---|
| Headings | # to ###### | Good when heading sizes differ from body text |
| Paragraphs | Blank-line separated, wrapped lines rejoined | Good |
| Bulleted lists | - item, nested by indentation | Good |
| Numbered lists | 1. item, original numbers kept | Good |
| Links | [text](url) from PDF annotations | Good where the PDF stores real link annotations |
| Bare URLs | <https://…> | Good |
| Tables | GitHub-flavored pipe tables | Fair — simple grids only |
| Code blocks | Fenced with ``` | Fair — depends on a monospaced font being used |
| Bold and italic | Not emitted | Not supported — see limitations |
| Images | Not extracted | Not supported |
Unicode is preserved throughout, including non-Latin scripts, accented characters, mathematical symbols and emoji, provided the PDF embeds the correct character mapping.
Example
A two-page report, before and after.
Given a PDF page whose first line is set in 24pt, a subheading in 18pt, body copy in 11pt, three bulleted lines, and a two-column grid of figures, the converter produces:
# Quarterly Revenue Report
## Regional performance
Revenue grew across all three regions in the period, with the
strongest contribution from the northern territory.
- North: ahead of plan
- Central: on plan
- South: behind plan
| Region | Revenue |
| --- | --- |
| North | 412,000 |
| Central | 388,000 |
| South | 194,000 |
Full methodology is available at <https://example.com/methodology>. Note what happened: the 24pt line became an H1 and the 18pt line an H2, not because of any absolute size threshold but because they are the two largest sizes above body text. The wrapped sentence was rejoined into one paragraph. The figure grid became a table because both rows shared the same column edges. The footer URL became an autolink. The page number that sat at the bottom of both pages was removed.
Privacy
The file stays on your computer. This is architectural, not a policy.
There is no upload. The PDF is read through the browser's File API, decoded by a WebAssembly-free JavaScript parser running in a web worker on this same origin, and converted to Markdown in the page. No request carrying your file contents is ever made, because this site is a static page with no server-side component to receive one.
Two ways to verify that yourself: open your browser's network panel and watch it while you convert — you will see the parser being fetched and nothing being sent — or load this page, disconnect from the internet, and convert a file anyway. It works.
The practical consequence is that confidential material — contracts, medical records, unpublished drafts, anything under NDA — can be converted without it crossing a network boundary. It also means the size limits below exist: your own device is doing the work.
Limitations
Where this converter is weak, stated plainly.
No PDF-to-Markdown conversion is exact, and this one does not claim to be. Expect to edit the output — that is why it is presented in an editable box rather than as a finished download.
- Scanned documents produce nothing. A scan is an image. There is no text to extract, and you will get an empty result with a warning. Run the file through OCR first.
- Bold and italic are not detected. Emphasis in a PDF is usually a separate embedded font rather than a style flag, and inferring it reliably across arbitrary font naming conventions produces more false positives than it is worth. Emphasis is lost.
- Multi-column layouts interleave. Academic papers and newsletters set in two or three columns are read in visual line order, so text from adjacent columns can alternate. Single-column documents are what this handles well.
- Complex tables drift. Merged cells, cells wrapping onto several lines, and layouts using invisible tables purely for positioning will come out misaligned or be missed entirely.
- Images are not extracted. Figures, charts and logos are skipped; only text is converted.
- Footnotes lose their anchors. Footnote text is usually captured, but the superscript reference that pointed to it is not linked.
- Size limits apply. 25 MB and 500 pages, because the work happens on your device.
If your source document still exists in its original format, converting from that will always beat converting from its PDF export. Reach for this tool when the PDF is all you have.
Frequently asked questions
Is this PDF to Markdown converter free?
Yes. The converter is free and has no signup, no account, and no usage cap. It runs as a static page with the conversion happening in your own browser, so there are no per-file costs for us to pass on.
Are my PDFs uploaded to a server?
No. The file is read by JavaScript running in your browser tab and never leaves your device. There is no upload endpoint on this page — you can confirm it by opening your browser's network panel while converting, or by disconnecting from the internet after the page loads and converting offline.
Can it convert scanned PDFs?
No. A scanned PDF contains images of text rather than text, and this converter reads the text layer only. If you convert a scan you will get an empty result and a warning telling you so. Run the file through OCR software first, then convert the searchable PDF it produces.
Does it preserve tables from the PDF?
It reconstructs simple tables by detecting columns of text that share the same left edge across consecutive rows, then emits GitHub-flavored Markdown tables. Tables with merged cells, cells that wrap onto several lines, or borderless layouts used purely for visual alignment are where the detection is least reliable, so check those against the original.
Why does my converted Markdown have the wrong heading levels?
Heading level is inferred from font size, because PDFs record type size rather than document structure. The largest text above the body size becomes an H1, the next largest an H2, and so on. A document whose headings are distinguished by weight or color instead of size will not map cleanly, and the output is editable so you can correct it in place.
What is the maximum file size?
25 MB and 500 pages. Both limits exist because the conversion happens on your device rather than on a server — a much larger file can lock up the browser tab. For anything bigger, split the PDF and convert it in parts.