The real-time metrics dashboard for your Claude conversations
- Token Counter — Know your context window at all times. Live approximate counting using the
o200k_basetokenizer. - Cache Timer — Never miss the 5-minute cache window. A live countdown shows exactly when your next message will be cheaper.
- Usage Meters — Compact 5-hour and 7-day rings seamlessly integrated inside the composer card, showing percent used and time remaining.
- Chat History Export — Export your entire conversation as plain text or formatted Markdown with a single click.
- 100% Private & Local — No external servers, no tracking. All data is processed locally in your browser.
- Native UI Integration — Discreetly blends into Claude's interface for a premium, built-in feel.
- Open Source — MIT license, designed for the community.
Claude Pulse on the Chrome Web Store
- Download or clone this repository
- Open
chrome://extensions - Enable Developer mode (top right)
- Click Load unpacked and select the
claude-pulsefolder
- Download or clone this repository
- Open
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on
- Select the
manifest.jsonfile inside theclaude-pulsefolder
Claude Pulse provides a transparent look into the "invisible" metrics of your Claude interactions. It works by intercepting the same API responses Claude's UI already fetches—usage stats, conversation trees, and streaming completions.
- Security First: The extension requires no special permissions and runs entirely within the
claude.aisandbox. - Tiktoken Integration: Tokenization is powered by a local implementation of the
o200k_baseencoding, ensuring counts are as accurate as possible. - Real-time Synchronization: Usage data is synced directly from Claude's
/usageendpoint (and completion streams on Free accounts) when you refresh the UI or send a message.
Usage meters sit seamlessly inside the composer. Token count, cache timer, and export stay in the chat header.
claude-pulse/
├── manifest.json # Extension configuration & permissions
├── icons/ # Extension branding (PNGs)
├── src/
│ ├── styles.css # Premium UI styling & animations
│ ├── content/
│ │ ├── main.js # Content script entry logic
│ │ ├── ui.js # Component architecture (bars, tooltips)
│ │ ├── tokens.js # Tiktoken-compatible counting logic
│ │ ├── constants.js # DOM selectors & runtime constants
│ │ └── bridge-client.js # Message bridge for intercepted data
│ ├── injected/
│ │ └── bridge.js # XHR/Fetch interceptor for raw API data
│ ├── popup/
│ │ ├── popup.html # Toolbar icon popup UI template
│ │ ├── popup.css # Redesigned minimalist popup styles
│ │ └── popup.js # Data sync, theme, & refresh relay logic
│ ├── shared/
│ │ └── format.js # Shared timing and percent format helpers
│ └── vendor/
│ └── o200k_base.js # Optimized tokenizer encoding
└── claude_pulse_logo.svg # Source vector asset
Token counts are approximate. Because Claude's internal system prompt and tokenizer specifics are not publicly exposed, counts exclude system overhead and may differ slightly from the official server count. The metric is intended as a high-fidelity guide, not an exact meter.
Claude Pulse is built on a "zero-trust" architecture regarding your data.
- No Analytics: We do not track usage or extension interactions.
- No Cloud: No text or metadata ever leaves your machine.
- Local Only: All tokenization happens on-device using JavaScript.
Inspired by and building upon Claude Counter. This project is a modern reimplementation with a focus on premium UI and expanded metric tracking.
Tokenization powered by gpt-tokenizer (o200k_base encoding).
MIT License — Feel free to contribute or fork for your own use.
Made with ❤️ for the Claude community
