Free · Runs in your browser · No sign-up
PDF to Markdown Converter
Drop a PDF and get its text back as Markdown — headings and paragraphs reconstructed, lists too when the PDF stores its bullets as text, repeated headers and page numbers dropped. Nothing is uploaded; the conversion runs on this page.
Drop your .pdf file here
It never leaves your browser — the conversion runs on this page.
The PDF is opened and read by JavaScript on this page — it is never uploaded, and the limit is 25 MB. A long document takes a few seconds, because every page has to be laid out before its text can be read in order.
Markdown
Drop a PDF above and the Markdown appears here.
Where does the Markdown go next?
Bulguritto keeps your notes as plain Markdown files on iPhone, iPad and Mac, synced and searchable — the same format this converter just handed you. Free.
A PDF does not know what a heading is
This is the fact that explains everything else on this page, so it is worth stating first. A PDF describes a printed page. Inside it there are no headings, no lists, no paragraphs and no tables — only instructions of the form draw this glyph, in this font, at this size, at these coordinates. The structure you see is assembled in your eye out of position and size; nothing in the file says “this line is a section title”.
Everything this converter produces is therefore an inference — a good one on an ordinary document, a poor one on an unusual layout. A .docx, by contrast, carries real named styles, which is why converting the Word file gives a far better result than converting a PDF printed from it. If the source exists as a .docx, go and find it — the difference is not marginal.
What the converter actually does
The text comes out of the file in whatever order the generator wrote it, so the first job is geometry. Glyphs sharing a baseline are grouped into lines, and lines sorted down the page. The size covering the most characters is taken as the body size, and every line judged against it: a short line noticeably larger becomes a heading, and the distinct heading sizes are ranked so the biggest becomes #, the next ##, and so on. Short bold lines that sit in their own white space and do not end in sentence punctuation are promoted too — that is how a document using weight rather than size still gets structure.
Lists are found from their leading glyph — a bullet character, or a number followed by a full stop or bracket — which means the glyph has to be part of the page’s text for the list to be recognised at all. Nesting depth comes from left indentation measured against the margin the page actually uses, and a numbered list keeps the number it started at, so a list running from 5 comes back starting at 5. Bold and italic are recovered from the font each run is drawn in. Lines that stop without sentence punctuation, or run to the right edge of the column, are rejoined with the line beneath, because they are one wrapped paragraph rather than two sentences; hyphens split across a break are healed. Lines repeating at the top or bottom of most pages are treated as running heads and dropped, along with anything that is just a page number.
In the PDF As Markdown
────────────────────────── ────────────────────────
Q3 Report (18pt bold) # Q3 Report
Revenue (14pt bold) ## Revenue
Revenue rose 12% year on Revenue rose 12% year on year,
year, driven by renewals. driven by renewals.
• Enterprise up 21% - Enterprise up 21%
• Self-serve flat - Self-serve flat
5. Renew the contract 5. Renew the contract
6. Re-price the plan 6. Re-price the plan
Q3 Report · 4 (7pt) (dropped: running head)Scanned PDFs have nothing to extract
The most common disappointment is a scan. A PDF from a scanner, photocopier or phone camera contains an image of each page and no text layer at all, so there is nothing for any extractor to read — this tool says so when it sees one, and it does not perform OCR. The fix is to recognise the text first: Acrobat’s Scan & OCR → Recognise Text, macOS Preview, or any dedicated OCR tool. Save the recognised copy and convert that. You can check any PDF in seconds: try to select a sentence — if it highlights, there is text to extract.
What does not survive
Bullets, sometimes — and this one surprises people, because the bullets are plainly there on the page. A bullet is only recoverable when the PDF stores it as a character in its text layer, which is what exports from Word, Pages, LibreOffice and LaTeX do. Several print-to-PDF paths do not: Chrome’s prints the disc as a small vector circle instead, so there is no bullet character anywhere in the file for any extractor to find, and pdftotext comes up just as empty. Those items still convert, with their text intact, but they arrive as an ordinary paragraph each rather than a - list. Putting the dashes back is a find-and-replace; better still, export the PDF from the word processor rather than printing it from a browser.
Lettered and roman lists lose their list-ness for a different reason: Markdown can only number, so a) b) c) and i. ii. iii. have no equivalent to convert into. Rather than silently renumbering them to 1, 2, 3 — which changes what the document says — those lines keep their labels verbatim as plain text. Numbered lists are fine, and keep the number they started at.
Tables are the big one. A PDF table is only text at positions, with the ruled lines drawn separately as graphics, so the rows come back as plain lines rather than a Markdown table. If the data started life in a spreadsheet, use Excel to Markdown or CSV to Markdown on the original instead.
Multi-column layouts interleave, because the reading order is down the page rather than down a column: a two-column paper alternates a line from each side. Export a single-column PDF if the source is yours. Images are dropped — Markdown can only link to a picture, and there is nowhere for these to live. Footnotes lose their tie to the reference and land wherever they sat on the page. Equations set as vector art vanish; equations set as text arrive scrambled. Fonts, colours and page layout go too, which is the point of Markdown rather than a failure of the conversion.
When it works well
Very well, for the ordinary case: single-column reports, papers, ebooks, manuals, contracts and documentation exported from a word processor. Those have one text column, a clear size hierarchy and real bullet characters, which is exactly what the heuristics look for. Expect the body text to be essentially perfect and the headings right most of the time.
Cleaning up the result
Budget a couple of minutes. Read down the headings and check the levels descend sensibly — an ### that should be a ## is the most common artefact. Then search for stray digits on their own line: page numbers the running-head detection missed. If paragraphs have been glued together where they should not be, turn off Rejoin wrapped lines and re-run. Anything that was a table needs rebuilding by hand. If the Markdown is headed for a Word document, Markdown to Word takes it the other way with real styles applied.
Where the Markdown goes next
Most people converting a PDF want a document out of a format built for printing and into one they can search, edit, diff or hand to a model. Bulguritto is a notes app built on the same idea: every note is stored as a plain .md file rather than a database row that exports Markdown on request, and those files sync across iPhone, iPad and Mac. Paste the output of this converter into a note and it stays a document any other program can read. It is free.
Frequently asked questions
- How do I convert a PDF to Markdown?
- Drop the PDF onto the box above, or click Choose a file and pick it. The Markdown appears underneath once every page has been read — a few seconds for a long document. Copy it, or download it as a .md file. The PDF is parsed by JavaScript in your own browser and never uploaded.
- Why are some headings wrong, or missing?
- Because a PDF does not record what a heading is. It records glyphs at coordinates, so the converter has to infer structure: it measures the size that covers most of the text, calls that the body size, and promotes short lines that are larger or bold to headings, ranked biggest to smallest. A document whose headings are the same size as its body text, or whose body text is unusually varied, will confuse that guess. Fixing the levels by hand afterwards is usually a minute's work.
- Why did my bullet points come out as separate paragraphs?
- Because that PDF has no bullet characters in it. A converter can only find a list by its leading glyph, and the glyph has to be text. Word, Pages, LibreOffice and LaTeX all write the bullet as a character, so their lists convert. Some print-to-PDF paths, Chrome's among them, draw the disc as a small vector circle instead — there is nothing in the text layer at that position, as pdftotext will also tell you. The text of each item still converts perfectly; it just arrives as a paragraph. Re-exporting from the original word processor, rather than printing the page to PDF, gets the bullets back.
- My PDF is a scan and nothing came out. What now?
- A scanned PDF is a photograph of a page with no text layer underneath, so there is nothing to extract, and this converter does not do OCR. Run the file through text recognition first — Acrobat's Scan & OCR, macOS Preview, or any OCR tool — and convert the recognised copy here. You can tell a scan apart in a second: open the PDF and try to select a sentence. If nothing highlights, there is no text in it.
- Do tables survive the conversion?
- Usually not as tables. A table in a PDF is not a table at all — it is text placed in a grid of positions, sometimes with lines drawn behind it, and the cell boundaries exist only in the reader's eye. The rows come out as text lines instead. For spreadsheet-shaped data it is far quicker to convert the original file with the Excel to Markdown or CSV to Markdown tool than to rebuild the grid from a PDF.
- What happens to two-column layouts?
- They interleave. The converter reads down the page, so a two-column academic paper produces a line from the left column, then a line from the right, alternating all the way down. If you control the source, export a single-column PDF and convert that. If you do not, converting page by page and reflowing the text by hand is the honest answer.
- Is my PDF uploaded to a server?
- No. The whole converter is on this page. Your PDF is read by pdf.js running in your browser, never sent over the network, and never stored. You can disconnect from the internet after the page loads and it still works — which also means confidential documents stay on your machine.
More Markdown converters
All free, all running in your browser, none of them asking for an account.
HTML → Markdown
HTML to Markdown
Paste HTML or a whole web page's source and get GitHub-flavoured Markdown, tables and all.
Word → Markdown
Word to Markdown
Convert a .docx into Markdown in the browser — headings, bold, lists, links and tables survive the trip.
Excel → Markdown
Excel to Markdown
Drop in an .xlsx or .csv and get a Markdown table per sheet, with alignment and escaping handled.
JSON → Markdown
JSON to Markdown
Turn a JSON array into a Markdown table, or a nested object into a readable Markdown outline.
CSV → Markdown
CSV to Markdown
Paste CSV or TSV — or drop the file — and get a GitHub-flavoured Markdown table you can paste anywhere.
Markdown → Word
Markdown to Word
Turn a Markdown document into a real .docx with styled headings, lists, tables and code blocks.
Notes that are already Markdown.
No export step, no lock-in, no conversion tool needed next time. Free on iPhone, iPad and Mac.