Writing  ·  Guides · Claude · July 2026

Stop Uploading PDFs to Claude. You're Paying It to Read Font Choices.

Drop a PDF or a screenshot into Claude and every page is processed as an image plus its text, so a file costs several times more tokens than the same words pasted in. Here is the math from Anthropic's own docs, and the three-second habit that fixes it.

Why uploading PDFs to Claude wastes tokens, by Gaurav Singh Bisen

You highlight one paragraph in a PDF, then upload the whole file and ask Claude a single question. Or worse, you screenshot the paragraph. Either way, you just paid Claude to read the entire page, layout and fonts and all, to answer a question about one sentence. There is a faster, cheaper way, and it takes three seconds.

Here is what actually happens when you drop a PDF into Claude. Per Anthropic's own documentation, the system converts every page into an image, then extracts the text from each page and hands Claude both. So each page is processed twice: once as words, once as a picture of those words. That double handling is the whole reason files are expensive, and it is why the fix is so simple.

Straight from the docs: "The system converts each page of the document into an image. The text from each page is extracted and provided alongside each page's image." Two representations of the same page, both billed.

The Numbers, From Anthropic

A single PDF page is not cheap, and a one-sentence page costs almost as much as a dense one, because the image half is a fixed floor. You are not paying for the information. You are paying for the paper.

1,500–3,000
Text tokens per PDF page, before the image, rising with density.
+~1,500
Image tokens added on top, for the page rendered as a picture.
~7,000
A 3-page PDF read in full visual mode, in Anthropic's own example.
~1,000
The same 3-page PDF as extracted text. Roughly seven times less.

Now put the same single page through three routes and watch the cost collapse. This is the whole argument in one table:

How you send one pageRough token costWhy
Upload the PDF page3,000–4,500+Rendered as an image and text-extracted. You pay for both.
Screenshot the page~1,500–2,700The image alone, priced by its resolution.
Paste the texta few hundredJust the words. Nothing to reconstruct.

Screenshots Are the Worse Habit

A screenshot of words is the words, thrown away and redrawn as pixels, so that Claude can read them back out. Anthropic used to hand out a rough formula for image cost, width times height divided by 750. The current method counts the image in 28-by-28-pixel patches instead, but the takeaway has not moved: a full screenshot runs around 1,500 tokens, and up to roughly 2,700 on the newest, higher-resolution models. That is a lot of tokens for a picture of a sentence you could have typed. If you find yourself screenshotting text, stop. It is the single most expensive way to send text to an AI.

"You're Paying" Means Two Different Things

Worth being precise here, because it depends on where you use Claude. On the API, tokens are money, literally: a PDF page costs you three to four times what the same pasted text would, on every single call. In the Claude app on the web or your phone, there is no per-token bill. But the cost is still real. Every one of those file tokens eats into your context window and your plan's usage limits, so you hit "this conversation is too long" or your rate cap far sooner.

So the file is always costing you something. It is a line on a bill in one place, and a ceiling you slam into in the other. Uploading smarter helps in both.

The Fix: Upload the Words, Not the File

Stop uploading the file. Upload the words. Highlight the text you actually need, copy it, and paste it straight into the chat. No PDF, no screenshot, nothing for Claude to reconstruct, just the sentence you wanted answered. Same answer, a fraction of the tokens. This is not a trick or a workaround. It is simply sending the model the thing you want it to read, instead of a photograph of that thing.

You are not saving money by uploading less. You are saving it by uploading smarter.

The One Case a Raw File Earns Its Cost: Structure

There is one exception, and it is about structure. If you need to keep a table, a set of headers, or a specific layout intact, do not paste a mangled copy that loses all the columns. Export the section as Markdown first. Markdown keeps the table and the headings as plain text, which Claude reads perfectly, at a tiny fraction of what the page-image would cost.

And if the visual layout genuinely carries meaning, a chart, colour-coding, merged cells, a scanned or handwritten page, then the image is adding real information and the file is worth its tokens. That is the exception. For a wall of plain text, it never is.

The Honest Part

Two caveats, because precision is the point. First, every token count here is an estimate, not a guarantee. Anthropic's newest models use a different tokenizer that produces roughly 30% more tokens for the same text than the old rules of thumb suggest, so treat the numbers as ranges. Second, if you keep asking about the same document, prompt caching softens the cost of re-reading it after the first pass.

But you do not have to take any of this on faith. Anthropic ships a free count_tokens endpoint that tells you exactly what any text, image, or PDF will cost before you send it. Run one of your own PDFs through it once, then run the highlighted text, and paste-the-text stops being my claim and becomes your habit.

The Whole Thing in Five Lines

The tool changes, the models get cheaper, the limits move. Sending Claude the words instead of a picture of the words pays off in every one of them. If you are setting up a workspace for this kind of thing, it pairs well with the four Claude settings most people never change and a proper one-time workspace setup.

Questions People Ask

How many tokens does a PDF use in Claude?

Per Anthropic's documentation, each page uses roughly 1,500 to 3,000 tokens of extracted text depending on density, plus about another 1,500 for the page rendered as an image. Anthropic's own example puts a 3-page PDF at around 7,000 tokens in full visual mode, versus about 1,000 as text only.

Do screenshots cost more tokens than pasted text?

Far more. A screenshot of a paragraph costs around 1,500 tokens, up to roughly 2,700 on the newest models, to send words that as pasted text would cost a few hundred. Claude has to read the words back out of the image.

Does uploading a PDF cost me money in the Claude app?

Not as a per-token bill; that is the API. In the Claude web or mobile app, a large file instead consumes your context window and your plan's usage limits faster, so you hit conversation-length or rate-limit ceilings sooner. The cost is real either way.

When is uploading a PDF or image actually worth it?

When structure or visuals carry meaning: tables, charts, colour-coding, or scanned and handwritten pages. For plain text, paste the text. For a table you need to preserve, export it as Markdown first.

How can I check how many tokens a file will use?

Anthropic offers a free count_tokens endpoint that returns the exact input token count for any text, image, or PDF before you send it. It is the authoritative way to compare a file against the pasted text.

Want your team using AI tools at a fraction of the cost?

I help founders and brands build generative AI systems that ship, and run lean while they do it: agentic workflows, content engines, and the unglamorous token math that decides your bill. If you want a second pair of eyes on your setup, book a session.

Book a Growth Chat
Gaurav Singh Bisen
Gaurav Singh Bisen
@thepmfguy  ·  GTM & AI Growth Strategist

Token figures and the page-to-image-plus-text mechanism are drawn from Anthropic's official documentation on PDF support, vision, and token counting, current as of July 2026, including Anthropic's own worked examples (a 3-page PDF at roughly 7,000 tokens with full visual processing, versus about 1,000 as extracted text). Per-page and per-image counts are estimates that vary with content density, resolution, and model, and the newest models tokenize text differently; use Anthropic's free count_tokens endpoint for exact numbers. On the consumer Claude apps there is no per-token charge, file size instead draws down your context window and usage limits. Nothing in this post is sponsored.