Skip to main content

Guides

Unavailable Is Not Zero: Why Claude, Gemini, and ChatGPT Tokens Stay Blank

Consumer chat exports omit tokens, cost, and often model names. AI Stats renders those fields Unavailable — never a synthetic 0 — and explains the capability reason underneath.

By Novus Stream Solutions Editorial Team. Published 2026-08-09. Last reviewed 2026-08-09. 5 min read.

The most common request this product gets is some version of "just fill in the tokens." ChatGPT, Claude, and Gemini are the sources people import first. Those three consumer exports do not contain token counts or API-equivalent cost. Claude web and Gemini Takeout also omit model names.

AI Stats therefore shows Unavailable, with the capability reason on the tile and on Integrations. It does not show 0, $0.00, or a guessed model. This post is why that refusal is the feature, and how to read the dashboard once you accept it.

The live surface this describes is /app/dashboard, after you import a history you exported. There is no ambient tracker behind the CTA.

A blank tile with a reason is evidence. A zero without one is a claim you cannot audit.Generated motif, seeded from this article’s slug. It is decorative and encodes no measurements.

What a zero would cost you

A zero is a claim: this session used no tokens, incurred no cost, launched no agents, or called no tools. Summed across a month it becomes a trend. Compared with last month it becomes a story about your work getting cheaper, or noisier, or more agentic.

If the export never recorded the field, every one of those stories is false, and the falsehood is undetectable. Coverage would read 100 percent. The previous-period delta would look clean. A sparkline would draw a confident flat line at the baseline. That is exactly why MetricSparkline breaks the line on a missing day instead of plotting zero, and why comparison mode keeps blocked rows instead of dropping them.

The methodology centre is explicit: an unreported metric renders Unavailable, never 0. The same sentence appears in the constellation statistics panel, in the capability matrix, and in the import preview. Repeating it is cheaper than unsaying a year of invented totals later.

What is genuinely absent

Decoded from real export files, not guessed:

MetricClaude webChatGPTGemini TakeoutCodex
Tool callsrecoverable when blocks are presentabsentabsentworks
AI active timerecoverable when blocks are presentabsentabsentworks
Responsesworksworksrecoverableworks
Model namesgenuinely absentworksgenuinely absentworks
Tokens / costgenuinely absentgenuinely absentgenuinely absentworks

"Genuinely absent" means the file does not contain the information. No adapter release invents it. Codex is in the table to show the contrast: when a source does persist tokens, AI Stats reads them, de-duplicates them, and will estimate API-equivalent cost from a dated rate table — and will still refuse that estimate if a model is missing from the table or if two differently priced models share a session.

Claude Code and Gemini CLI are not consumer chat, and they are not a back door into the missing web fields. Claude Code tokens depend on what the transcript recorded. Gemini CLI snapshots carry no tokens, model names, or durations. Cursor is Beta and does not conjure ChatGPT-like token ledgers from Markdown history.

If you want the cell-by-cell version, read the capability matrix essay and then the live methodology tables. Both are generated from the same registry the importers are tested against.

Five labels, only one of which is a number you can sum

Every tile carries one of five quality labels. The line under the number tells you which kind of claim you are looking at.

  • Exact — explicitly defined by the source.
  • Source reported — supplied by the provider, using the provider's definition.
  • Derived — calculated from source timestamps.
  • Estimated — produced by a documented heuristic (API-equivalent cost is the usual example).
  • Unavailable — not present in the source.

Estimated is still a number, and it is allowed to refuse. Cost returns nothing when either token count is missing, when any model is absent from the rate table, or when a session used two models with different prices. A rate row is fenced to its vendor, so a ChatGPT session cannot be priced with a Claude rate. Most calculators would average. This one declines.

Unavailable is not Estimated with a blank. It is not Derived with a gap. It is the label that says "do not put this in a denominator."

How to work without the missing fields

You can still learn a great deal from ChatGPT, Claude, and Gemini imports. Sessions, prompts, responses, timestamps, and — where the format allows — AI-active time and tool calls are real. Project grouping still works. What changed still narrates coverage-safe movement. Saved views still remember a range, provider set, project set, and model substring.

What you cannot do honestly:

  • Rank people, teams, or weeks on token volume when some of the sources never emit tokens.
  • Subtract a Claude web cost from a Codex cost and call the result savings.
  • Fill model filters with names Claude or Gemini Takeout did not record.
  • Treat a mixed-provider token total as complete because Codex supplied most of the sessions.

When you need a numeric comparison anyway, open /app/dashboard/compare. Seed side A from the dashboard you are looking at. Leave side B on its defaults, then narrow it. Rows that cannot be subtracted say why. That refusal is usually the finding.

Where this sits in the Novus roster

Novus Stream Solutions (opens in a new tab) is the catalog for every Novus app. AI Stats is the one that measures AI work from user-approved exports. If the next step after measuring a week is studying it, Novus Learn (opens in a new tab) turns source material into cited notes. If you are testing a parser and need known-shape files, Novus Examples (opens in a new tab) publishes specced fixtures. None of those apps synthesize AI Stats token ledgers, and this app does not synthesize theirs.

The editorial standard behind this page is on /editorial-policy. Corrections go to the same team; the byline is organizational on purpose. A fake named expert would be the prose version of a synthetic zero.

Import the exports you have. Read coverage first. Believe the blank tiles. The numbers that remain are the ones the files can actually support.

Was this page helpful?

Your answer stays in this browser. It is not sent anywhere, and no account or cookie is involved.