How to use PDF to Markdown
- Drop a PDF onto the box or press Choose a file.
- In Pages, leave
allor type the pages to convert, such as1-2. - Press Convert to Markdown.
- Copy the Markdown or download it as a
.mdfile with the same name as your PDF.
What it does and when to use it
Copying text out of a PDF gives broken lines and loses the structure. Markdown keeps the structure in a light, readable form: # for headings, - for bullet points, blank lines between paragraphs. That makes it a good format for moving documentation into a wiki or Git repository, turning a handout into notes in Obsidian or Notion, or preparing a document for a language model that reads Markdown well.
If you only need raw text, the PDF text extractor keeps the original lines. If you need positions and font sizes for each line, use PDF to JSON.
How it works
pdf.js (pdfjs-dist) reads the text layer in your browser, with each piece of text’s position, size and font name. The tool groups pieces into lines, then into blocks:
- Headings come from size, as described in the FAQ.
- List items start with a bullet character (•, ◦, ▪, -, *, – and similar) or a number or letter such as
1.,a)oriv.. Bullets become-; numbered items are renumbered1.,2.,3.. - Paragraphs are built by joining lines that follow each other at normal line spacing in the same size. A word split by a hyphen at a line end is joined.
- Characters that mean something in Markdown, such as
*,_,#and|, are escaped with a backslash.
Nothing is uploaded. pdf.js may download standard font or character-map data from cdn.jsdelivr.net when a PDF needs it.
Worked examples
Page 1 of an invoice. The page has a 20 pt title, a 14 pt section heading, an 11 pt paragraph broken over two lines, two dash bullets and a small price table. The tool gives:
# Invoice 2041
## Billing summary
Thank you for your order. Payment is due within 30 days of the invoice date. Late payments may incur a fee as described in our terms of service.
- Free delivery on orders over 50 euros
- Returns accepted within 14 days
| Item | Qty | Price | Total |
| --- | --- | --- | --- |
| Notebook A5 | 3 | 4.50 | 13.50 |
| Pen set | 2 | 6.00 | 12.00 |
The two-line paragraph is joined, the bullets become a list, and the price table becomes a Markdown table. pdf.js puts a wide space item between the cells of each row; the tool measures cells on the visible text only, so those spaces do not join the columns.
Limits and tips
- Pages with two or more text columns are read across the page, so the columns can mix.
- Headers, footers and page numbers repeat on every page in the output; delete them afterwards.
- Heading levels are shared across the pages you convert, so convert the whole document for consistent levels.
Frequently asked questions
How does it decide what is a heading?
Are tables converted?
Are images, links and bold text kept?
Can I use the result with an AI model or a notes app?
What if my PDF is a scan?
How do we know nothing is uploaded? Test it yourself on the privacy proof page.