Data & methodology
Estimating session length from public CCU and Visits
MARPLA can estimate session length for a public game by combining sampled CCU with the change in Visits. The value is deliberately labeled as an estimate, never as Roblox’s official Average Session Time. Use it to prioritize research in the [market catalog](/en/resources/market-analytics), then request owner analytics for consequential decisions.
Focused deep dive
From player-minutes to minutes per added visit
Between two valid snapshots, the average of the starting and ending CCU approximates the height of the concurrency curve. Multiply by elapsed minutes to estimate player-minutes in that interval. Divide by the positive increase in Visits to estimate minutes per added visit. MARPLA excludes intervals shorter than five minutes, longer than 48 hours, without a positive Visits increment, or producing implausible estimates below 0.5 or above 360 minutes.
Valid interval estimates are combined with a weighted median, using added Visits as weights. This reduces the influence of a delayed counter update that would make one interval extreme. Confidence depends on both valid interval count and elapsed span: the product labels the result early, medium, or high. A confidence label describes supporting observations, not certainty that the estimate equals the owner KPI.
Worked example: two snapshots
At 12:00 a game has 100 CCU and 50,000 Visits. At 12:30 it has 140 CCU and 50,300 Visits. The trapezoid approximation uses average CCU 120. Estimated player-minutes are 120 × 30 = 3,600. Dividing by 300 added Visits gives 12 minutes per added visit for this interval.
Now imagine the Visits counter updates late and the next interval adds only 20 Visits while CCU stays similar. That interval would produce an unrealistically large estimate. The range filter can remove extreme values, and the weighted median prevents a low-weight interval from dominating. Even so, the final number inherits sampling gaps, counter timing, repeat visits, and the assumption that the observed curve represents the interval.
Use the estimate as a lead
The safest question is comparative: does the estimate remain in a similar band across adequate windows?
- Check the observation count, span, and confidence label.
- Inspect CCU gaps and whether Visits increments are positive.
- Compare games only over broadly comparable coverage and periods.
- Treat a large change as a prompt to inspect data and the game.
- Replace the estimate with authorized owner session metrics when available.
What the estimate cannot recover
The calculation does not identify unique users, separate new and returning players, or know the exact number and boundaries of sessions. A player can rejoin and add Visits; platform counter processing can lag. A weighted median improves robustness but cannot remove systematic bias.
Do not present the result without the approximation mark, source, confidence, and observation period. Do not use it alone to value a game, predict revenue, or diagnose retention. A high estimated session can coexist with weak acquisition or monetization; a low value may reflect a burst of short external traffic.
Decision record
Store the estimate with interval count, span, confidence, observed-at range, and formula version. If the owner later shares Average Session Time, keep both values and compare definitions rather than “correcting” the public history to match the private KPI.
Primary sources
Put this into practice in MARPLA
Open a game card and compare CCU over matching periods. Check changes against Roblox-wide concurrency before interpreting a spike as sustained growth.
- Set up a chartThe range sets how much time to show; the interval sets how points are grouped.Step-by-step guide →
- Understand game growthCompare changes in a game's audience with changes in Roblox's overall player count.Step-by-step guide →



Discussion0
Loading comments…