markdown vs pdf: why you should stop feeding claude pdfs.
a pdf is a picture of a document, and markdown is the document itself, so claude reads markdown more accurately and for less token cost. a pdf stores where each letter sits on a page, not what the page means, so the model has to reverse-engineer the structure before it can even start on your question. markdown writes the structure in plain text, which is exactly how the model was trained to read. feed it markdown and you skip the guessing step.
most people never think about the file format. they export to pdf because that is the button, drop it into the chat, and wonder why the answer is a little off. the format is doing quiet damage the whole time. here is what is actually happening under the hood, and the 90-second fix.
what does a pdf actually store?
a pdf is a layout format. it was built to make a document look identical on every screen and every printer. to do that, it records the position of each glyph: this letter goes at these coordinates, in this font, at this size. it does not record that a run of glyphs is a heading, or that a block of numbers is a table, or that this column comes before that one. the meaning is not in the file. it is only implied by where things sit.
when claude reads a pdf, it gets that soup of positioned glyphs and has to rebuild the structure from scratch. is this line a title or a caption? do these numbers belong in the same row, or did they just land near each other on the page? most of the time it guesses right. on clean, single-column text it is fine. but the guessing is real work, it costs tokens, and it breaks in predictable places: multi-column layouts, tables, headers and footers, and anything scanned. this is the same root cause behind claude getting your table wrong, the columns collapse into each other because there were never any real columns to begin with.
why is markdown easier for the model?
markdown is the opposite. it writes structure directly into the text. a heading is a line that starts with ##. a list is lines that start with dashes. a table is rows of pipes. bold is wrapped in asterisks. nothing is implied by position, it is all stated in plain characters that carry meaning.
two things follow from that. first, there is no structure to reverse-engineer, so the model spends its effort on your actual question instead of on decoding a layout. second, and this is the part people miss, markdown is everywhere in the data these models were trained on. github, documentation, forums, readme files. it is close to a native language for them. you are handing the model something it already reads fluently instead of a format it has to translate first.
pdf vs markdown, side by side
| markdown | ||
|---|---|---|
| what it stores | glyph positions on a page | the text and its structure |
| structure | implied by layout, must be guessed | written in, stated explicitly |
| tables | no real cells, often misread | real rows and columns, preserved |
| reading order | ambiguous in columns | top to bottom, unambiguous |
| token cost | higher, layout overhead to decode | lower, lean plain text |
| trained on | relatively little | a lot, near native to the model |
| best for | delivering and signing for humans | feeding to ai |
what about the token-savings numbers online?
you will see confident stats claiming markdown cuts your tokens by some exact percentage. treat those with suspicion. the savings are real, but they vary a lot by document. a dense, clean report converts to lean markdown and you might see meaningful savings, commonly in the twenty to fifty percent range against a raw extraction of the same file. a simple one-page memo will barely move. a heavily formatted pdf with lots of layout junk can save more. anyone quoting a single universal number is overstating it. the honest version is: markdown is leaner and cleaner, the exact number depends on your file, and the accuracy gain usually matters more than the token count anyway.
the 90-second fix
you do not need to change how you work. you need one small step before you feed a document to claude. pick whichever is easiest for the file in front of you.
- get the source. if the document started as a google doc, a word file, or a web page, use that instead of the exported pdf. the structure is still intact there. this is the best option and the one people forget.
- convert it. run the pdf through a converter. microsoft's free markitdown tool turns pdfs, word docs, and more into markdown, and there are free web converters if you want no setup. keep the .md file and reuse it.
- let claude convert it once. paste the pdf in and ask it to convert the document to clean markdown, then work against that output for everything after. you pay the messy-decode cost one time instead of on every question.
and to be clear, pdf is not the enemy. it is the right tool for delivering a proposal to a client, signing a contract, or printing something that has to look exact. the mistake is using a delivery format as an input format. deliver in pdf, feed in markdown. once you separate those two jobs, a whole class of weird ai errors just stops happening. if your answers are also drifting for other reasons, it is worth checking why your ai is not working more broadly, but format is the cheapest fix on the list.
faq
can claude read pdfs at all?
yes. it will often do fine on clean, single-column text. the problem is the failure is silent, it looks complete even when a table or a column got scrambled. markdown removes the guessing so you are not relying on luck.
do i have to learn markdown to do this?
no. the converter or claude itself writes the markdown for you. you just need to feed the .md file instead of the pdf. reading it is easy, it is close to plain text with a few marks.
what about scanned pdfs or images of documents?
those have no text layer at all, just pixels, so they need optical character recognition first to pull the words out before any conversion. run ocr, then convert to markdown, then feed it.
join the closer method
this is the boring, high-leverage stuff we drill inside the self-paced closer method community. feeding ai clean is lesson one.
come get the rest