There's a post going around — "you're burning $1000s on web research in Claude Code if you're still using WebFetch for everything." The claim: WebFetch loads entire HTML pages, scripts and CSS and nav and all, straight into your context, so you're paying premium model tokens for kilobytes of markup you never asked for.
It's a good instinct wrapped around a wrong fact. Let me show you what WebFetch actually does, because once you see it, you'll stop worrying about the thing the post is worried about — and start watching the thing that actually costs you money.
What WebFetch actually does
I pulled the WebFetch tool description straight out of the Claude Code binary (v2.1.203). Here it is, word for word:
"Fetches a URL, converts the page to markdown, and answers
promptagainst it using a small fast model."
Read that carefully, because there are three steps and none of them is "dump the raw page into your context":
- It fetches the URL and converts the page to markdown. The scripts, the CSS, the nav chrome — stripped. You were never going to see the raw HTML.
- A small, fast model reads that markdown and answers your prompt. Not your main Opus or Sonnet session — a separate cheap model.
- You get back the answer. A compact result, scoped to what you asked. The page itself never lands in your main context.
So the premise — "you're paying main-model tokens for full HTML" — is off for current Claude Code. WebFetch is specifically built to avoid that. It's the token-efficient path, not the leak.
Where the real cost actually is
Here's the honest half, because the post isn't crazy — it's aimed at the wrong target.
Dumping a raw page into your context does burn tokens. But that's what happens when you do it by hand: piping curl https://somepage output straight into the conversation, or saving a page's raw HTML to a file and Read-ing the whole thing. That's real, and it's expensive, and it's exactly the mistake worth avoiding. WebFetch is the tool that saves you from it — not the one committing it.
So if you've been reading the viral post and nodding, keep the instinct ("don't shove raw pages into context") and just move it to the right target ("don't hand-pipe curl output; let WebFetch do the conversion").
Should you still use Jina Reader or Exa?
The post recommends external tools — Jina Reader (r.jina.ai), Exa, curl piped through jq. Those are genuinely useful, and I use them. But use them for the real reason, not the fake one.
WebFetch's actual tradeoff isn't cost — it's control. Because a small model summarizes the page against your prompt, you get an answer, not the source text. For a quick "what version does this doc say," that's perfect. For bulk research where you want the full clean text under your own control, or you're stitching ten pages into one analysis, fetching externally and passing a single clean Read gives you the raw material and predictable structure. That's a legitimate optimization. It's just about precision and bulk handling, not about WebFetch secretly draining your wallet.
The honest takeaway
- Current Claude Code WebFetch converts to markdown and uses a small model — it does not load raw HTML into your main context. The "$1000s on markup" premise is wrong for current versions.
- It's not free — the small model runs and its answer enters your context — but it's the cheap path, not the expensive one.
- The genuinely expensive pattern is piping raw
curl/HTML into the conversation yourself. Don't do that. - Jina Reader and Exa are good tools for bulk or full-text-control research. Reach for them for that reason, not because a screenshot told you WebFetch is robbing you.
Before you rip WebFetch out of your workflow because a post said so, check what your tools actually do. In this case, one line from the binary settles it.
The receipts
- WebFetch tool description, verbatim from the Claude Code v2.1.203 binary: "Fetches a URL, converts the page to markdown, and answers
promptagainst it using a small fast model." Verify it yourself:grep -ao "Fetches a URL, converts the page to markdown[^\"]*" ~/.local/share/claude/versions/<version>. - The "$1000s" figure is the viral post's own number — unverified, and not something you can confirm without their usage data.
- Behavior can change between versions — this is current as of v2.1.203 on 9 July 2026. If a future release drops the small-model step, the math changes; re-check.
More fixes like this, before they hit the blog