claude-year-in-review
v0.1.0
Published
π Your Claude Code usage, Spotify-Wrapped style. 100% local, zero dependencies.
Maintainers
Readme
π Claude Code Wrapped
Your Claude Code usage, Spotify-Wrapped style. One command, zero dependencies, 100% local.
Ever wondered how many tokens you've burned with Claude Code? Which tools it hammers the most? How much money prompt caching quietly saved you? Whether you're a π¦ Night Owl or a π’ Serial Shipper?
Claude Code Wrapped reads the transcripts Claude Code already stores on your machine (~/.claude/projects) and turns them into a gorgeous, animated, shareable report.

β¨ What you get
- Total tokens β input, output, cache writes and cache reads, with an animated hero counter
- πΈ Estimated cost & cache savings β see what caching actually saved you
- π€ Model breakdown β Fable vs Opus vs Sonnet vs Haiku
- π οΈ Favorite tools β Bash? Edit? WebSearch? Ranked with charts
- π Top projects β where your tokens actually went
- π Most edited files & top shell commands β the fingerprint of your workflow
- ποΈ Activity heatmap β 7Γ24 grid of when you really code
- π₯ Streaks & session records β longest streak, longest focused session
- π Badges β Night Owl, Cache Master, Agent Orchestrator, Marathonerβ¦
- πΈ Share card β export a 1080Γ1350 PNG ready for social media
π Quick start
npx claude-code-wrappedThat's it. Your report opens in the browser and a summary prints in the terminal.
No Claude Code data yet? Try the demo:
npx claude-code-wrapped --demoπ Privacy
Nothing ever leaves your machine. No telemetry, no network calls, no analytics. The report is a single self-contained HTML file generated locally β read the source, it's one file.
βοΈ Options
| Flag | Description |
|------|-------------|
| --demo | Generate a report with sample data |
| --since 2026-01-01 | Only include activity since a date |
| --dir <path> | Custom transcripts dir (default ~/.claude/projects) |
| --out <file> | Output HTML path (default ./claude-wrapped.html) |
| --json | Dump raw stats as JSON (pipe it anywhere) |
| --no-open | Don't auto-open the browser |
π° A note on costs
Costs are estimates computed at Anthropic API list prices (cache writes at 1.25Γ, cache reads at 0.1Γ input price). If you're on a subscription plan your real cost differs β think of it as "what this usage would cost on the API", which is exactly what makes the cache-savings number fun.
Prices live in a single table at the top of bin/claude-wrapped.js β tweak them if they drift.
π§ How it works
Claude Code stores every session as JSONL under ~/.claude/projects/<project>/<session>.jsonl. Each assistant message carries usage (tokens by type) and model; tool calls carry their name and input. This CLI streams every line, aggregates ~20 metrics, and renders them into a self-contained HTML report β no build step, no dependencies, works offline.
π€ Contributing
Issues and PRs welcome. Good first ideas:
- More badges (streak tiers, language detection from file extensions)
--comparebetween two time ranges- Team mode: merge multiple exports into one report
