Bhinish Dhiman· updated 5 October 2026

How to convert a PDF to Markdown for notes or an AI chat

Open PDF to Markdown, add the PDF, run it, and copy the result or download document.md. Each page becomes a '## Page n' heading followed by that page's text, which gives notes a structure and gives an AI model a page to cite. Nothing else is recovered: tables, lists, bold and the headings inside a page come out as plain text, because a PDF records them only as positioned text and lines.

Most PDFs worth putting into notes or asking an AI chat about are reports, papers and manuals, and Markdown is the format both handle best. The conversion is quick. Knowing exactly what survives it is what tells you whether the model actually received the part of the document you are asking about.

PDF to Markdown, step by step

  1. Open PDF to Markdown and choose Add a PDF, or drop it onto the page. Thumbnails of the pages appear. A password-protected file asks for its password first.
  2. Press the PDF to Markdown button. There are no settings.
  3. Check that the page headings line up with the document, then Copy the result or Download it as document.md.

The shape of the output

A page heading, in this output, is the line ## Page n that the tool writes before each page’s text, where n is the page’s position in the file, counting from 1. Under each heading comes all the text on that page, read in the file’s order and joined into a single paragraph. A three-page PDF gives this:

## Page 1

(all the text on page 1, as one paragraph)

## Page 2

(all the text on page 2, as one paragraph)

## Page 3

(all the text on page 3, as one paragraph)

The headings are level two, so the file can sit under a note’s own title without competing with it. They are the only structure in the output, and that is deliberate: the page break is the one structural boundary a PDF genuinely records. Everything else you see on a page (a heading, a bulleted list, a table) is positioned text and lines, with nothing in the file saying what they are.

What Markdown output cannot carry

In the PDF In the Markdown
A page break A ## Page n heading
A heading inside a page Plain text, inside the page’s paragraph
Bold and italic Plain text
A bulleted or numbered list The items’ text, run together
A table The cells’ text in the file’s order, with no rows or columns
Line and paragraph breaks within a page One paragraph per page
A scanned page A page heading with nothing under it; a wholly scanned file gets a message instead

A heading in a PDF is text that happens to be larger. There is no marker saying “this is a heading”, so a converter that promotes large text to # is guessing from font size. That works on documents produced by one template and fails on everything else, and the failure is confident nonsense: a heading hierarchy that looks right and is not. A table is ruled lines and positioned text with no recorded relationship between them, and recovering it needs ruling-line analysis that has no browser-side implementation. So the output is plainly plain rather than subtly wrong.

The page number is the sheet, not the printed number

The n in each heading counts sheets from the start of the file. It knows nothing about the numbers printed on the pages. Take a report with a cover and four pages of front matter numbered in roman numerals: the page printed “1” is the sixth sheet, so its heading reads ## Page 6.

That matters most in a chat. When a model cites “page 6”, it means the sixth sheet of the file you gave it, so look for the sixth page in your viewer rather than the page with 6 printed at the bottom. If you are producing the PDF yourself, numbering every sheet from 1 with Page numbers makes the two agree.

Before you paste it into an AI chat

  • Look for headings with nothing under them. A heading followed straight by the next heading means that page was blank or an image, so the model receives nothing from it. A document that is entirely scanned gets a message saying no text was found, because there is no text layer to read and the tool does no OCR; one with only some scanned pages shows empty headings for those pages.
  • Read one multi-column page. This is the same extraction as PDF to text, so two columns can interleave, and text from headers, footers or floating boxes can land mid-sentence.
  • Send only the pages you need. Split PDF pulls out a page range first. The headings then count from the start of the extract, so page 1 of the Markdown is the first page you kept, not page 1 of the original.
  • Know where the text leaves your device. The conversion happens in your browser tab. Pasting the result into a chat service is the moment the document goes to that service, and that is a decision about the service, not about the conversion.

Other ways to do it

There is no built-in method on macOS, Windows or iPhone on the list we have checked. On the command line, poppler’s pdftotext gives plain text from the same text layer, without the page headings, which you would have to add yourself:

pdftotext -layout input.pdf output.txt

Checking that nothing was uploaded

Open the Network tab in your browser’s developer tools before you add the PDF. When the file opens, the page fetches the code that reads PDFs; after that, running the conversion and copying the result add no request that carries your document.

Convert the document with PDF to Markdown. If you want the text without the page headings, PDF to text gives you the same words as one block per page.