Counts, not a score. Nothing is uploaded.

Transcript stats: counts from your AI coding session

Reads a Claude Code session or a Codex CLI rollout in your browser and counts what happened: prompts, tool calls by type, edits you rejected, test runs, plan mode, subagents and session length.

or drop it here

One .jsonl file from Claude Code or Codex CLI. It is read by this page in your browser. Nothing is uploaded, and the page blocks its own scripts from making any network request.

Worked example

What the counts look like for a sample session

This sample is a made up 47 minute Claude Code session, written by hand for this page and not taken from anyone's work: a developer adds a CSV export to a small reports service. It starts in plan mode, rejects one edit that would have changed a test, interrupts a review agent and runs the tests four times. Counts, not a score.

Counts for the sample session
Prompts you typed6
Median prompt length31 words
Slash commands0
Assistant replies14
Tool calls18
Tool calls you rejected or interrupted2
Turns you interrupted1
Plan mode usedyes
Subagents started1
Test or check commands run4shell commands that ran a test runner, linter or type checker
Files edited5
Session length47 minutesfirst to last timestamp
Lines read510 not JSON, 3 of other entry types
Tool calls by type
Edit6
Bash4
Read4
Write2
Agent1
ExitPlanMode1

Download the sample file (sample-session.jsonl, 27.9 KB) and drop it above to see the same numbers.

Where is my session file?

Claude Code writes one file per session at ~/.claude/projects/<project>/<session-id>.jsonl, where the project folder is your working directory's path with every character that is not a letter or a digit replaced. By default it deletes files older than 30 days. Pick the newest file in the folder for the project you just worked in.

Codex CLI keeps its state under ~/.codex. Session rollouts are usually at ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl; that layout comes from community write ups rather than OpenAI's documentation.

Cursor is not supported yet. Its agent transcripts leave out tool outputs, according to a reply on Cursor's forum, so most of these counts could not be made from them. More on each tool: where transcripts are stored.

What exactly is counted?

  • Prompts you typed: messages from you, not counting slash commands, command output, tool results, interruptions, compaction summaries or subagent traffic. Prompt length is in words.
  • Assistant replies: distinct model responses. Claude Code writes one response across several lines; they are counted once.
  • Tool calls you rejected or interrupted: calls whose result says you declined them or stopped them.
  • Test or check commands: shell commands that ran a test runner, linter or type checker, such as pytest, python -m unittest, npm test, go test, mypy or eslint.
  • Files edited: distinct files the agent edited, leaving out edits you rejected.
  • Session length: from the first timestamp in the file to the last, so a session left open over lunch counts the lunch.

What are the limits?

Both file formats are internal to their tools and change between versions. Claude Code's documentation says so directly. The counter skips lines it cannot read and ignores entry types it does not know, and tells you how many, but a new version can still move a count. Counts say nothing about whether the work was good: a strong engineer may type few prompts and run few commands. Read them next to the rubric, not instead of it.

Sources

  1. Claude Code docs: managing sessions and where transcripts are storedProduct documentation. Current docs. Checked 18 October 2026.
  2. Claude Code docs: what the ~/.claude directory holds and how long it is keptProduct documentation. Current docs. Checked 18 October 2026.
  3. OpenAI Codex docs: advanced configuration and local historyProduct documentation. Current docs. Checked 18 October 2026.
  4. Cursor forum: what Cursor's agent transcripts containCommunity forum. April 2026. Checked 18 October 2026.

Last checked: .