Extractor · No upload

Convert a PDF to Markdown

Drop a PDF to get a Markdown (.md) file and a page-by-page report on what the file contained. Headings are read from its tags or bookmarks, lists from its tags, links from its link areas, and bold and italic from its fonts.

Status idle Pages — Structure — Headings — Links — Tables — Line-end hyphens — Pages mostly image — Unmapped glyphs — Network since file read —

Refused by name: protected files (this page does not open protected files), cross-reference or object streams under other filters (only Flate is read), and a file where every page is mostly image with no text (no OCR); one such page is marked on its row. Structure comes only from what the file declares; tables come out as plain lines; images, and headers and footers the file marks as such, are left out. Takes .pdf.

How this converter works

Your browser reads the PDF with its File API, and the same first-party reader the PDF merger on this site uses walks it in memory: header, cross-reference chain, object streams and page tree. It hands back the document only after checking every object for an encryption dictionary. Each page is then decoded on its own and released before the next one, because a page's content can inflate to several times the size of the whole file. Text comes out in the order the page draws it: on all six documents this engine was measured against, that order read better than sorting the text by position. Each glyph is decoded through the font's /ToUnicode map first and its encoding second, and a glyph the file gives no mapping for is dropped and counted. A word broken at a line end is joined where the file spells it whole elsewhere, keeps its hyphen where the file hyphenates it elsewhere, and is otherwise left hyphenated and counted. Values typed into a form are read from each field's appearance and counted, and a rights notice in the file's metadata is kept at the top of the output.

To watch the network yourself, open the Network panel in a desktop browser's developer tools and convert a file. On a first visit, you may see the site's pages and code being cached for offline use; those requests do not carry your PDF. The conversion itself runs in this tab and needs no extra library. This route is first-party throughout and works offline from the first page load. Other ways to check, and what each one covers, are on the methodology page.

Nothing here draws the page, so text hidden under a drawn box is still text and comes out, a layer the file turns off by default is skipped and counted, and a two-column page comes out in the order the file draws it, which the wireframe shows. A font with no /ToUnicode map and made-up glyph names comes out as the codes it carries, which can look right and be wrong, and a font the file does not measure gets an estimated width, so word spacing there is approximate. Mixed-width CJK encodings (RKSJ, EUC, Big5 and similar) are refused by name, as are files over 128 MB or 20,000 pages. Attachments inside the PDF are not opened.

Frequently asked questions

How do I convert a PDF to Markdown?
Drop one PDF on the page, or click the drop area and choose it. The page reads the file one page at a time, then shows a row for each page, a numbered map of the order its lines come out in, and the blocks on that page with what produced each one. If a heading level is wrong, press Promote or Demote on that block. Then press Download for the .md file, or Copy Markdown.
Where do the headings and lists come from?
From the file itself. A tagged PDF declares its headings (H1 to H6), paragraphs and lists in a structure tree, and those tags are read directly. A file with no tags but with bookmarks gets its headings from the bookmarks, matched to the lines that carry those titles. A file with neither comes out as text, bold, italic, code and links in the file's own order, with paragraph breaks taken from the spacing, and each of its pages is marked as having no declared structure. This page does not guess headings from font size or lists from bullet characters.
What happens with a scanned PDF?
No text comes out of a page whose text is only an image, because this page does not run OCR. A page that is more than half image and gives fewer than 200 characters is named on its row and marked in the .md where it sits, with any text it does carry kept under the mark. A file that gives no text at all is refused, so you get no empty download. A scan with an invisible OCR text layer converts normally, because that layer is real text.
Why was my protected file refused?
Because it carries an encryption dictionary, and any PDF that does is refused by name as soon as you add it, even one a viewer opens without asking you anything. A file whose compressed object streams cannot be read is refused the same way, because damage and encryption look alike from here. The PDF merger refuses the same files. Your file is left as it was.
Does it convert tables?
No. Table cells come out as plain lines in the order the file draws them, and the readout counts the tables the file's tags declare. PDF tables often have merged cells, headers that span columns and rows that continue on the next page, which a Markdown table cannot hold.

Related tools