Browser MCP token cost: 68 runs of Playwright MCP vs Chrome DevTools MCP, and a proxy that cuts snapshots by up to 96% A developer measured token consumption across 68 runs of Microsoft's Playwright MCP and Google's Chrome DevTools MCP in Claude Code, finding that per-request overhead of roughly 23,000 tokens—mostly Claude Code's own instructions and tool definitions—drove cost more than page size, with all 16 core task runs returning correct answers and the largest single tool result at 6,012 characters. Forcing a full accessibility snapshot of the English Wikipedia Python article produced 205,642 to 208,926 tokens on Claude's tokenizer versus 133,668 to 138,745 on OpenAI's o200k, though Claude Code refused the oversized result and spilled it to a file. The developer then built tokensave-mcp-diet, a proxy that sits in front of either server and cut Hacker News snapshot tokens by 43% to 63% and full Wikipedia snapshots by about 96%, while task cost rose in several cases. You often hear that hooking a browser MCP server up to Claude Code burns tokens, and some posts put it at 10,000 to 50,000 tokens every time the agent looks at a page. I wanted to know whether that holds up, and whether it can be reduced, so I measured the two most popular servers: Microsoft's Playwright MCP and Google's Chrome DevTools MCP. Along the way I ended up building a small tool to cut the cost, so the results for that are here too. | Task | Playwright input tokens | Cost | Chrome DevTools input tokens | Cost | |---|---|---|---|---| | TodoMVC: add 3 items, complete 1 | 178,408 | $0.19 | 199,737 | $0.22 | | Wikipedia: who designed Python, first year | 115,888 | $0.17 | 117,240 | $0.17 | | Hacker News: top 5 stories | 90,006 | $0.16 | 93,496 | $0.17 | | Wikipedia table: 5 release dates | 91,350 | $0.16 | 93,683 | $0.16 | Average of 2 runs, cost at Opus 5.5 API prices. All 16 runs got the right answer, and the largest single tool result was 6,012 characters. Opus 5.5 did not read whole pages. It ran short scripts that pulled out just what it needed, or used Playwright's find tool. So where did the tokens go? Each request carried about 23,000 tokens, and most of that was Claude Code's own instructions and tool definitions, not the browser. Browser work takes many small steps, and that fixed amount is sent again with every step. The to-do task was the most expensive not because the page was big but because it took the most clicks and keystrokes. Then I forced the worst case: open the English Wikipedia article "Python programming language " and take one accessibility snapshot of the whole page. I sent that text to Opus 5.5 to count it: 205,642 and 208,926 tokens . That is about $1.65 for one snapshot at Opus list price. OpenAI's o200k tokenizer counts 133,668 and 138,745, so the same text comes out more than 50% bigger on Claude. Text full of link targets and element ids is especially expensive for Claude's tokenizer. The good news: Claude Code already stops this. Every time, it refused the result as too large, saved it to a file and told the model to read it in pieces. So 200,000 tokens never landed in the context in Claude Code. A client without that guard could take the whole page in one go. I only measured Claude Code, so I can't say which other clients do that. Pages Claude Code does not block are the real issue. The Hacker News front page snapshot came straight in and grew the next request by: Most of that is noise: a URL line under every link, "clickable" markers, empty layout cells, "|" separators and deep indentation. It sits in front of Playwright MCP or Chrome DevTools MCP and does three things: snapshot detail tool that returns any part of it by ref or by text. Setup is one change in your MCP config. No npm account or API key: { "mcpServers": { "playwright": { "command": "npx", "args": "-y", "github:johnisking/tokensave-mcp-diet", "--", "npx", "-y", "@playwright/mcp@latest" } } } Same tasks, with and without it: | Task | Server | Snapshot tokens, as shipped | With the diet | Task cost | |---|---|---|---|---| | Hacker News top 5 | Playwright | 18,407 | 6,792 −63% | $0.298 → $0.205 −31% | | Hacker News top 5 | Chrome DevTools | 14,115 | 8,066 −43% | $0.271 → $0.224 −18% | | Wikipedia facts | Playwright | refused in 3 of 5 runs | 9,193 | $0.181 → $0.236 +30% | | Wikipedia facts | Chrome DevTools | refused every time | 8,479 | $0.230 → $0.237 +3% | | Wikipedia full snapshot | Playwright | about 205,600 refused by Claude Code | 9,193 −96% | $0.154 → $0.222 +44% | | Wikipedia full snapshot | Chrome DevTools | about 208,900 refused by Claude Code | 8,479 −96% | $0.160 → $0.221 +38% | Cost is the average of 5 runs, 3 for the full snapshot. On Hacker News the 5 runs were within one cent of each other, and snapshot tokens varied by at most 4% between runs. On Hacker News, snapshot tokens fell 43% to 63% and the task cost 18% to 31% less, with the same answer in all 5 runs. To be honest about Wikipedia: inside Claude Code the proxy lost money. Where Claude Code would have sent a short refusal note, the proxy sent a 9,000-token outline, and the task cost 3% to 44% more. In a client that passes large results through, the same outline turns 200,000 tokens into 9,000, a 96% cut. The tool pays off on medium-size pages, and in clients that don't have Claude Code's guard. Browser MCP does not burn huge numbers of tokens on every step. Opus 5.5 mostly read only what it needed, and the cost was driven by Claude Code's fixed per-request block and the number of steps. But one full read of a long page is over 200,000 tokens, and medium pages get through even in Claude Code. tokensave-mcp-diet is a free tool for those two cases.