Privacy guarantee: Your data never touches any server. The upload is processed 100% client-side using the Web File API.
How It Works
- Export: Run a script locally that reads your
~/.claude/directory and generates a single JSON file - Upload: Drag and drop the file into the hosted app at claude-analytics.vercel.app
- Process: Your browser parses the JSON and renders the dashboard
The hosted app is a static Next.js site. There is no backend server — just HTML, CSS, and JavaScript delivered via CDN.
Step 1: Export Your Data
Quick Export (No Installation)
The export script uses only Node.js built-ins, so you don’t need to install any dependencies:What Gets Exported
The export file contains:| Data | Source | Purpose |
|---|---|---|
| Stats cache | ~/.claude/stats-cache.json | Aggregated metrics, daily activity, model usage |
| Session metadata | ~/.claude/usage-data/session-meta/*.json | Per-session duration, tools, tokens, commits |
| History | ~/.claude/history.jsonl | All prompts with timestamps |
| Project memories | ~/.claude/projects/*/memory/*.md | Project-specific context files |
| Account info | ~/.claude/statsig/ | Account UUID (optional, for multi-profile support) |
Export File Structure
Step 2: Upload to Hosted App
Drag and Drop
- Visit claude-analytics.vercel.app
- Drag
claude-analytics-export.jsononto the upload zone - Wait for the processing indicator (usually < 1 second)
- Your dashboard appears
Click to Browse
Alternatively, click the upload zone and select the file from your file picker.Client-Side Processing
Here’s how the hosted app processes your upload:- Validates JSON structure before loading
- Normalizes legacy export formats
- Provides clear error messages for invalid files
- Never sends data over the network
Multi-Profile Support
You can upload multiple export files and switch between them:Profiles are stored in browser localStorage. They persist across sessions but are device-specific.
Profile Storage
Each profile is stored as:localStorage.getItem('claude-analytics-profiles').
Privacy and Security
No Network Requests
The hosted app makes zero network requests with your data:- No analytics/tracking (no Google Analytics, Mixpanel, etc.)
- No error reporting (no Sentry, LogRocket, etc.)
- No CDN uploads (everything processes in-memory)
Browser Console Verification
You can verify this yourself:- Open DevTools (F12) → Network tab
- Upload your file
- Check that no network activity occurs
Data Deletion
To remove your data from the browser:localStorage Risks
While data stays local, be aware:- Browser extensions can access localStorage
- Shared computers may expose data to other users
- localStorage is not encrypted at rest
File Size Optimization
If your export is too large (> 5 MB), consider:1. Filtering Old History
Modifyscripts/export.mjs to only include recent prompts:
2. Excluding Memories
Comment out the memory export section (lines 74-99 inexport.mjs):
3. Compressing the File
The export script doesn’t compress JSON. You can manually compress:Troubleshooting
File upload fails or shows error
File upload fails or shows error
Check that the file:
- Is valid JSON (run
cat file.json | jqto validate) - Contains either
statsorsessionsfield - Was generated by
scripts/export.mjs(not manually edited)
Dashboard is empty after upload
Dashboard is empty after upload
Your export may contain valid JSON but no actual data. Check the file size:If it’s < 1 KB, you likely haven’t used Claude Code enough to generate data.
Profile won't save (localStorage full)
Profile won't save (localStorage full)
Clear old profiles:
- Open DevTools → Application → Local Storage
- Delete
claude-analytics-profilesentry - Refresh and re-upload
Can't switch between profiles
Can't switch between profiles
Ensure you’re using a modern browser:
- Chrome 90+
- Firefox 88+
- Safari 14+
Comparison: Local vs Hosted
| Feature | Local Mode | Hosted Mode |
|---|---|---|
| Setup | Clone + install + run | Export + upload |
| Data access | Direct filesystem reads | Upload JSON file |
| Conversation messages | ✓ Available | ✗ Not included |
| Privacy | 100% offline | Client-side only |
| Multi-profile | Manual switching | Built-in UI |
| Performance | Fast (< 200ms load) | Instant (pre-loaded) |
| Portability | Machine-specific | Works anywhere |
Next Steps
Export Script Deep Dive
Understand what the export script does under the hood
Features Overview
Explore all available analytics features
Multi-Profile Guide
Learn how to manage multiple Claude accounts
Privacy & Security
Deep dive into data security guarantees