Guides / cost per user

What is cost per user?

Cost per user is model spend attributed to individual users, read as a distribution rather than an average. On AI products the top decile routinely costs many times the median. Culpa, a local-first LLM cost, margin, and forecast ledger, tags each call to a user and reports the spread, so your pricing floor comes from the heavy tail rather than the mean.

Why this happens

Cost per user gets computed as total spend divided by active users, and that single number is the least useful summary of a long-tailed distribution available. Usage on AI products follows a steep curve where a small group generates most of the tokens. The mean sits well above the median and well below the heavy users, so it describes almost nobody. Price a plan from the mean and your heaviest users will lose you money every month.

What this usually looks like

  • Your average cost per user looks sustainable while specific users cost more than the plan they're on.
  • A small number of accounts generate a disproportionate share of total tokens, and nobody has quantified it.
  • Usage limits were set from the average, so they bind almost nobody and protect against nothing.
  • Cost per user rises steadily without any pricing change, because power users are getting heavier.

Free, no card, no account

Run the free Cost Leak Scan

It shows your most expensive conversation before you install anything.

Run the free Cost Leak ScanStart 14-day trial

Mistakes that cost the most

MistakeWhy it hurtsDo instead
Reporting the mean cost per user.On a long-tailed distribution the mean describes no real user, and it sits far below the users who set your risk.Report median, 90th percentile, and maximum together. Three numbers, and the shape becomes obvious.
Setting a plan price from average cost.Roughly half your users cost more than the average, and the heaviest can cost multiples of the price you set.Price from the 90th percentile, then use a usage cap to bound whatever sits beyond it.
Counting registered users rather than active ones.Dormant accounts dilute the figure toward zero and make the economics look far healthier than reality.Divide by users who actually made a call in the period, and state which definition you used.

Run this check tonight

  1. Compute spend per user for last month and sort the list descending. Read the top ten by hand.
  2. Find your median user's cost and your 90th percentile. The ratio between them is the shape of your problem.
  3. Check what your heaviest user cost against what they pay. That comparison is the one that changes pricing.
  4. Recompute using active users only, then registered users, and note how different the two figures look.
  5. Check whether any usage cap you have would have bound your heaviest user last month. Often it wouldn't have.

A $2.40 average that describes nobody

Illustrative example

1,000 active users on Gemini 2.5 Flash at real rates of $0.0003 per 1k input and $0.0025 per 1k output. The usage distribution below is modelled on a typical long tail.

900 light users at 200k input, 30k output each = (200 x $0.0003) + (30 x $0.0025) = $0.06 + $0.075 = $0.135 each
90 medium users at 2M input, 300k output each = (2,000 x $0.0003) + (300 x $0.0025) = $0.60 + $0.75 = $1.35 each
10 heavy users at 40M input, 6M output each = (40,000 x $0.0003) + (6,000 x $0.0025) = $12 + $15 = $27 each
Total = (900 x $0.135) + (90 x $1.35) + (10 x $27) = $121.50 + $121.50 + $270 = $513
Mean = $0.51, median = $0.135, and the top ten users alone are 53% of all spend

The mean is nearly four times the median, and ten users out of a thousand carry more than half the bill. A plan priced on the mean loses money on every one of those ten.

Every number, with its confidence and source

FigureWhat it meansConfidenceSource
$0.51 mean, $0.135 medianmodelled cost per active user across a long-tailed distribution of 1,000 userscalculatedTotals computed at real Gemini 2.5 Flash rates per 1k tokens from the price book, effective 2026-07-02. The user distribution is modelled, arithmetic shown in the teardown.
53%share of modelled total spend generated by the heaviest 1% of userscalculated$270 from ten heavy users divided by the $513 modelled total, from the teardown arithmetic.

What a generic answer can’t know

A provider bills you once for everyone. Splitting that into a per-user distribution needs a user identifier on every call, and that identifier only exists inside your application. Culpa captures it on your infrastructure, keeps your prompts and responses there, and counts the calls to run your plan.

Questions founders ask next

Should I price from average cost per user?

No. Price from the 90th percentile and cap what sits beyond it. Pricing from the average means roughly half your users cost more than you assumed, and the heaviest can cost many times the plan price.

How do I attribute model spend to individual users?

Attach a user identifier to every outbound call at request time. Without it you can only ever produce an average, because there's no way to split the provider's single bill afterwards.

What if a few users cost more than they pay?

That's normal and usually fine, as long as you can name them and the total stays bounded. It stops being fine when nobody has measured it, because then the exposure grows with adoption and nobody notices.

On your infrastructure

Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.


How Culpa works

Find the culprit. Not just the total.

Your dashboard shows what you spent. It stops short of who spent it. Culpa shows the conversation, the user and the feature behind it.

Your prompts stay local.

Culpa runs on your own infrastructure. What you send to a model reaches us at no point.

Every dollar has a name.

Follow any charge to the conversation, the user, the feature and the customer behind it.

See the bill before it lands.

Cost your next feature before you ship it. You get the likely bill and the worst case, at best, median, p90 and p99.

Three steps to your first answer.

1

Change one base URL.

Or drop in the Python or TypeScript library.

2

Find your most expensive conversation.

In the first session, not the first week.

3

Cost your next feature before you ship it.

Base URLhttp://localhost:4545/v1Your traffic keeps flowing if Culpa ever stops.

Why the bill went up

Example dashboard

Calls traced

418,209

across 3 projects

Spend this week

$378.41

+ $182 vs last week

Failed calls

312

74% retried, and you paid for all of them

+ $182 this week traced to one culprit

Spend over 14 days

$0$20$40$60$8024262830020406
user_384report_generatorconv_91fprompt_v1894,220 tokens3 retries$6.81

Most expensive users

user_384$38.42
user_119$21.07
user_562$14.90
user_204$8.30
user_871$5.10

Next week forecast

Best$180
Median$240
p90$310
p99$395

Graded against reality. Accuracy shown as results land.

Keep reading


Sources: Gemini API pricing. Last reviewed 2026-08-01. Plain text version.