Promptshelf
Token Burn-Rate VU Meter — Winamp visualizer for Claude tokens
Token Burn · 4 channels · log-scale · peak-hold

Watch your Claude tokens bounce.

Paste a Claude Code session log, an API response, or a stripped {usage:…} JSONL — and the VU meter animates the per-turn burn across four channels: input, output, cache-read, cache-creation. Late-90s Winamp chrome on a Win98 dialog frame; CRT-green gradient bars, peak-hold ticks, log-scale heights. Optional unlock: a 20-item Token Budget Optimization Playbook.

Token Burn-Rate VU Meter — Paste Input
Empty paste + Visualize = animated demo. Up to 63 turns rendered; beyond that, bars compress to 1px.
Privacy note. Your Claude Code session JSONL contains your message content, tool calls, file paths, branch names, and prompts — not just token counts. The VU Meter only reads the usage field; everything else is discarded client-side and never leaves your browser. Still, if you want to be careful, extract just the usage rows first:
# macOS / Linux — extract only the usage object per turn:
jq -c 'select(.message.usage) | {usage: .message.usage}' \
  ~/.config/claude/projects/<your-session>.jsonl
Paste the output of that command instead of the raw log. Same animation, zero prompt content in transit.
How to find your Claude Code session log file

Claude Code 1.0.30+ writes session logs at ~/.config/claude/projects/<project-slug>/<session>.jsonl. Legacy installs (pre-1.0.30) may still use ~/.claude/projects/<project-slug>/. To find which path your install uses:

ls ~/.config/claude/projects/ ~/.claude/projects/ 2>/dev/null

The non-empty directory is the active one. The community tool ccusage documents both paths and the version cutover; see ccusage.com/guide.

No usage data found in paste — manual mode

Token Burn-Rate VU Meter — idle no data
source: — Paste your data above to animate. Empty = demo dataset.

Optional unlock

Token Budget Optimization Playbook · 20 items · 5,000 sats

Twenty concrete moves for cutting Claude token burn without losing capability. Caching invariants, pruning patterns, routing rules, measurement habits — each item is a config line, an SDK option, a CLI flag, or a process change with a P0/P1/P2 priority chip and primary-source citations. One 5,000-sat confirmed payment unlocks all seven current priced features site-wide (Promptle Hard Mode, Token Tetris Daily Challenge, Stumble Deep Cut, Vibe Code Security remediation, Comprehension Recovery Checklist, AI Review Noise Reduction Playbook, and Token Budget Optimization Playbook). Paste the same TXID on any priced page; the shared client-side verifier accepts any prior confirmed 5,000-sat tx to the address. Verified via mempool.space + blockstream.info — no account, no server.

Step 1

Send 5,000 sats

To the address below. Any modern wallet works (Mutiny, Phoenix, Wallet of Satoshi, Sparrow). Wait for one block confirmation (~10–30 minutes).

Step 2

Copy your TXID

From your wallet's transaction history. 64 hex characters, no prefix.

Step 3

Paste the TXID

Verifier checks mempool.space + blockstream.info; the playbook below unlocks.

bc1qs04leape97ner4wqa98n94l9n0gv9aa84eg4ux

How the VU Meter works

Step 01

Paste token data

One turn per line: Claude Code session JSONL, stripped {usage:…}, single API response, or a JSON array. Empty paste falls back to a 4-turn demo dataset so the page is never blank.

Step 02

Watch the bars bounce

Four channels (IN, OUT, CACHE, CRT) animate left-to-right, one column per turn, log-scaled to global peak. CRT-green gradient bars, amber peak-hold ticks, phosphor glow. Up to 63 turns; beyond that, scroll.

Step 03

(Optional) Unlock the playbook

Send 5,000 sats. Once one block confirms, paste the TXID — the 20-item Token Budget Optimization Playbook opens. Caching, Pruning, Routing, Measurement, P0 → P2.

FAQ

It is a Winamp-style VU meter for Claude token usage. You paste raw token data from a Claude Code session log, an Anthropic API response, or a custom script — and the page animates a four-channel bar display: IN (input_tokens), OUT (output_tokens), CACHE (cache_read_input_tokens), CRT (cache_creation_input_tokens). Each turn becomes one column; bars rise log-scaled to the global peak with a CRT-green gradient and peak-hold ticks. The aesthetic is late-90s media-player chrome on top of a Win98 dialog frame.

Four shapes are accepted. (1) Claude Code session JSONL (~/.config/claude/projects/<project>/<session>.jsonl on Claude Code 1.0.30+; legacy fallback ~/.claude/projects/ on older installs), one record per line with a message.usage sub-object. (2) Stripped JSONL — the same lines after a jq filter has dropped everything except {usage: ...}. (3) A single Anthropic API response JSON object containing a usage field. (4) A JSON array of any of the above. The parser walks each line up to two levels deep looking for a usage sub-object with at least input_tokens; everything else is discarded immediately on parse, so prompt content, tool calls, file paths, and branch names never leave your browser. If the first parse pass extracts zero turns, a manual-input fallback (three number fields) is shown.

Claude Code's session JSONL contains multiple records per assistant API step: streaming partials plus the final snapshot. Without dedupe, the VU meter would draw duplicate bars and inflate the apparent burn rate. The parser groups records by message.id (preferred), then requestId (fallback), and within each group keeps one — preferring records with stop_reason set, then the largest output_tokens value (streaming usually accumulates monotonically; the largest is the final), then the last record by file order as an idempotent tiebreaker. Records with no identity key fall through as one-turn-each. The dedupe rule mirrors Anthropic's Agent SDK cost-tracking guidance: count one usage snapshot per assistant API step.

All aggregate stats pack into 16 hex characters: ?vu=<16hex>. 2 bits encode the source-tag (0=Claude Code JSONL, 1=API direct, 2=manual, 3=other), 6 bits encode the turn count (capped at 63 — the live view also caps at 63 so the share URL never silently truncates), 16 bits each encode total input / output / cache-read tokens (capped at 65535; input and output show a > prefix on overflow; cache-read is capped silently in the current URL format), and 6 bits encode peak-input and peak-output log-scale buckets. The URL contains zero per-turn data — pasting a teammate's URL renders an aggregate-only summary frame, not the bouncing animation. To get the animation back, paste your own data above. Wrong length, non-hex, or out-of-range fields are rejected; tampered URLs do not silently fall through to a blank state or to your previous localStorage.

No. The parser runs entirely in your browser. Non-usage fields (message content, tool inputs, working directories, branch names, file paths) are discarded immediately on parse and never stored in any state variable. Only the usage object is retained. The share URL packs aggregate stats only (totals plus peak buckets), so even sharing a URL does not expose per-turn token counts. If you want to be extra careful, run jq -c 'select(.message.usage) | {usage: .message.usage}' on your JSONL before pasting — same animation, zero prompt content in transit.

A 5,000-sat one-time payment unlocks the Token Budget Optimization Playbook — 20 concrete items grouped into Caching, Pruning, Routing, and Measurement. Each item is a config line, an SDK option, a CLI flag, or a process change with a P0/P1/P2 priority chip, plus links to docs.claude.com and the ccusage repo where applicable. The free meter visualizes your current burn; the playbook gives you the moves to cut it. The same 5,000-sat payment also unlocks the other priced features on Promptshelf (Promptle Hard Mode, Token Tetris Daily Challenge, Stumble Deep Cut, Vibe Code Security remediation guide, Comprehension Recovery Checklist, AI Review Noise Reduction Playbook) — the shared client-side verifier accepts any prior 5,000-sat tx to the address, so paying once gets you all seven. Verified via mempool.space and blockstream.info; no account, no server.

Tip the project. Token Burn-Rate VU Meter is part of Promptshelf — a small library of single-file tools for AI coding workflows. If this saved you a debugging hour, send a few sats. Same address as the playbook unlock; any amount confirms.

bc1qs04leape97ner4wqa98n94l9n0gv9aa84eg4ux
Promptshelf · Token Burn-Rate VU Meter · 2026 ← All kits