Why convert a PDF to Markdown for notes and LLMs
A PDF is a page description. Characters sit at coordinates, often with a font size and little else that says “this is a heading.” Markdown is the opposite: a heading is a line of hashes, a list is a dash, and a paragraph is a block of text. That is the shape ChatGPT, Claude, Gemini, and Perplexity already read well, and it is the shape Obsidian and a Git repo store without dragging a layout engine along.
People search for “pdf to markdown”, “convert pdf to markdown”, “pdf to md”, and “pdf to markdown for chatgpt” when a paper, a report, or an export is stuck in a viewer and the next step is a prompt or a note. Pasting the raw text keeps every line break the typesetter inserted. The model then spends attention on “exam-” at the end of a line instead of the word “example”. A converter that joins those wraps, marks real headings, and strips the footer that repeats on every page gives the model the article instead of the page furniture.
Markdown is also smaller than a PDF’s drawing commands, and usually smaller than HTML dumped from a conversion service. After you convert, paste the note into the Token Counter if the budget matters. The research workflow and the send-to-ChatGPT guide cover the same idea for web pages. This page is the path when the source is a PDF file you already have.
What the converter actually does
On file select, the page loads pdf.js in this tab and reads the bytes you dropped. Nothing uploads the file. Range requests, streaming, wasm, and fetches of character maps or standard fonts are turned off, and the parser is not given a URL to go get them. A status line says “Parsing page x of y” while that happens. The worker script is bundled with the site, not loaded from a third-party host.
Each text fragment arrives with a string, a font size, and a position. Fragments on the same baseline become a line. The body size is the median of those lines. Sizes clearly above that median map to at most three heading levels. A line that starts with •, ◦, -, *, or a number like “1.” or “1)” becomes a list item. A line that ends with a hyphen and continues in lowercase on the next line is joined into one word, so “exam-” plus “ple” becomes “example”. A real hyphen in the middle of a line is left alone.
Short lines in the top or bottom margin are compared across pages. If the same header or footer shows up more than once, it is dropped. A bare page number, or a line like “Page 3”, is dropped when that pattern repeats. The default Markdown separates pages with a rule and does not print “Page N”. The switch labeled Show page numbers adds that label when you want it. A one-page file keeps its footer, because nothing has repeated yet.
A worked example
The blocks below are the text layer of a three-page sample, not a screenshot. Page 1 has a large title, a sentence broken as “exam-” / “ple”, two bullets, a running header, and a footer with a page number. Pages 2 and 3 repeat that header and footer and add a mid-size heading plus one sentence. The Markdown under the source is what this page’s converter emits with Show page numbers turned off.
Text layer
Page 1 Internal draft Quarterly update The team shipped the exam- ple feature on Monday. • Faster export • Fewer broken lines Acme Internal 1 Page 2 Internal draft Risks Vendors still send scans. Acme Internal 2 Page 3 Internal draft Next step Ask for the source file. Acme Internal 3
Markdown
# Quarterly update The team shipped the example feature on Monday. - Faster export - Fewer broken lines --- ## Risks Vendors still send scans. --- ## Next step Ask for the source file.
“Internal draft”, “Acme Internal”, and the bare numbers are gone, because they repeat. The broken word is one word. The title is an h1 and the two shorter headings are h2s. The bullets are a Markdown list. Nothing in that output says “Page 1” unless you turn the switch on.
What converts well, and what converts poorly
Digital PDFs convert well: papers and reports exported from a word processor, documentation printed to PDF, and slide notes that still have a text layer. English and other languages whose text layer is already Unicode come through, including Chinese, Japanese, Korean, and accented Latin. This page does not download character-map files, so glyphs that the file never stored as Unicode can come out empty or wrong. You should still read the preview. A heading that was only bold body text will not grow a hash mark, and a footer that appears on a single page is kept on purpose.
Scanned pages convert poorly, because there is nothing to read. The tool counts pages whose text item list is empty and says so. It will not guess words from pixels. Mixed files are common: a cover is a scan and the rest is real text. You get Markdown for the text pages and a warning for the empty ones.
Tables and multi-column layouts are best-effort. A simple grid whose cells share x positions becomes a pipe table, with the first row as the header even when the PDF had no header styling. Merged cells, nested tables, and ruled lines with no text do not survive. Two columns that are clearly separated are read one column at a time. Two columns that sit on the same baseline can look like table cells instead. Math is another miss: a formula may arrive as scattered symbols or not at all. Images, captions that are drawn as curves, and handwriting are out of scope.
If you still have the Word, Google Docs, or Markdown source, start there. Exporting or copying from the editor keeps real headings and tables that a PDF has already flattened. A .docx file can go through Word to Markdown, which reads the document in the browser. This page does not open Word files. Use PDF to Markdown when the PDF is the only copy.
Tips before you trust the note
Prefer a text-based export. In Word or Google Docs, export PDF with the actual text, not “print to a scanner” and not a PDF/A that has outlined the fonts into shapes. If copying in a viewer already yields nonsense, this tool will see the same text layer and will not do better.
Password-protected files fail fast with an English error. There is no password field, so this page never asks you to type one. Decrypt the file locally, then drop the unlocked PDF. Files over 50 MB are refused. A file larger than 20 MB, up to that limit, shows a warning that parsing stays in the browser. The progress line announces “Parsing page x of y”.
Skim the preview for three things: a heading that should have been body text, a hyphen that joined two real words such as a line-broken “well-known”, and a table whose first row was data. Fix those by hand. Then copy, download the .md file (the name follows the PDF), or send it on. If the next question is size, the Token Counter counts the Markdown you paste. It does not open the PDF for you.
Compared with copy-paste and with server tools
Copying from a PDF viewer is fine for a sentence. For a whole report it keeps the line breaks, the page number, and the chapter title that repeats in the margin. You then clean that by hand. This page does that cleaning for text-layer PDFs and stops when the text layer is missing. It does not claim to beat a careful human edit on a complex table.
Server-side “pdf to md” tools upload the document. That can be the right trade when you want their OCR or a queue. It is the wrong trade for a contract, a medical note, or an unpublished draft. WebInk’s converter does not offer that upload path. If the source is HTML you already copied, use HTML to Markdown, which also stays in the browser. If the source is a public URL, URL to Markdown fetches it on the server — say so to yourself, because that path is not local.
The WebInk Chrome extension is for the web page open in your tab, including pages you are logged into. It does not read a PDF file from disk. Use this tool for the PDF, and the extension when the article only exists as a tab. The tools hub lists each online tool and which input it accepts.
| Job | This page | PDF viewer paste | Server converter |
|---|---|---|---|
| File stays on your machine | Yes | Yes | No |
| Heading levels from font size | Yes | No | Varies |
| Drops repeated headers and page numbers | Yes | No | Varies |
| Joins wrapped lines and line-break hyphens | Yes | No | Varies |
| OCR for scans | No | No | Sometimes |
| Tables and multi-column pages | Best effort | Flattened | Varies |
“Varies” and “Sometimes” describe other products, not a promise from this page. The “This page” column is what the tool does.
Add the WebInk extensionThe extension clips web pages. It is a separate product and is not a PDF converter.