Quick answer: Crash-free rate is the share of sessions or players that finish without a crash, and it is the single best summary of your game's stability. Measure it per session and per user, capture every crash with a stack trace and context so the number is honest, attack your top crashers by frequency, and watch the rate after each release. Small, steady gains in this one metric compound into better retention and reviews.
If you could track only one number to gauge your game's health, the crash-free rate would be a strong candidate. It compresses the messy reality of stability into a single figure, the percentage of play sessions that end normally instead of with the game falling over. For an indie developer it is both a private health check and a quiet driver of retention and reviews, because crashes churn players and tank ratings. Improving it is a learnable discipline: measure honestly, find the crashes that matter, fix them in order, and watch the line climb. This post shows how to make crash-free rate a metric you actively improve.
What crash-free rate actually measures
Crash-free rate is simply the proportion of sessions that complete without a crash. If ninety-eight of every hundred sessions end cleanly, your crash-free session rate is ninety-eight percent. It is intuitive, comparable over time, and directly tied to player experience in a way that a raw crash count is not, because a count without a denominator tells you nothing about how often players actually hit problems. The rate normalizes for the size of your audience, so you can compare last month to this month even as your install base grows or shrinks.
There are two flavors worth tracking. Crash-free sessions measures how many play sessions are clean, while crash-free users measures how many distinct players go a period without ever crashing. The two can diverge tellingly: a high session rate but a lower user rate suggests crashes concentrate on a subset of players, perhaps on a particular device, while the reverse suggests crashes are spread thin across everyone. Watching both gives you a richer picture than either alone, and the gap between them is itself a useful diagnostic clue.
Measure it honestly or not at all
A crash-free rate is only as trustworthy as your crash detection. If your game crashes in ways your tooling does not catch, native faults, out-of-memory kills, freezes that never throw an exception, then your reported rate is flattering fiction. The first work of improving the metric is making sure you actually see every crash. A number that looks great because you are blind to half your failures is worse than no number, because it breeds false confidence and points your attention away from real problems players are hitting every day.
Honest measurement means capturing crashes automatically and completely, with the platform-specific failures included, not relying on players to report them. It also means counting sessions accurately so your denominator is right. Once your detection is trustworthy, the rate becomes a stable instrument you can steer by. Until then, treat any impressive figure with suspicion and spend your effort on coverage first. A modest but truthful crash-free rate is far more useful than an excellent one built on incomplete data, because only the truthful one tells you where to act.
Attack the top crashers first
Crashes follow a steep distribution. A small number of distinct bugs almost always account for the large majority of all crash events. This is wonderful news, because it means you do not have to fix everything to move the rate substantially, you have to fix the few worst offenders. Rank your distinct crashes by how many sessions each one breaks and you get a worklist where the top item alone might be responsible for a third of your crashes. Fixing that one issue can lift your crash-free rate by a visible margin in a single release.
To work this way you need crashes grouped by signature and counted, so the biggest offenders are obvious rather than buried in a flat feed of individual events. With a ranked list, each release can target the current top crasher, ship the fix, and watch that signature fall away while the overall rate ticks up. Repeat this for a few cycles and the curve flattens as you clear the high-frequency bugs, after which improving the rate further gets harder, which is exactly the signal that you have reached a healthy plateau.
Tie the number to releases
A crash-free rate is most powerful when you read it against your release history. Annotate the line with each build you shipped, and patterns jump out. A sudden dip right after a release is a regression you introduced, and catching it within hours rather than weeks limits the damage. A steady climb across several builds is proof your stability work is paying off. Without the release context, the rate is just a wiggling line, but overlaid with your deploys it becomes a precise feedback signal about what your changes actually did to player experience.
This turns stability into a managed quantity rather than a hope. Before a launch, you can hold a stability bar, refusing to ship until the rate clears a threshold. After a launch, you can watch the rate as the canary that tells you whether the new build is healthy. For an indie developer juggling many concerns, having one number that reliably flags trouble is a relief, because it lets you trust that as long as that line stays high, your players are mostly having the clean experience you intended for them.
Setting it up with Bugnet
Bugnet captures crashes automatically with full stack traces and device, OS, and memory context, which is what makes an honest crash-free rate possible in the first place. Because the SDK records the failures players never report, the denominator and numerator both reflect reality rather than only the crashes someone bothered to write up. The in-game report button additionally catches the freezes and soft hangs that do not technically terminate the process, closing the blind spots that would otherwise inflate your number and hide real problems from view.
Occurrence grouping folds identical crashes into one signature with a live count, so your top crashers sort themselves to the top of the list and your highest-leverage fixes are immediately obvious. You can filter crashes by device or any custom attribute to see whether your crash-free user rate is being dragged down by one chipset, and everything sits in one dashboard so you can watch the trend against each release. That single, honest view is what lets you treat crash-free rate as a number you actively manage rather than passively observe.
Make stability a ratchet, not a sprint
The goal is not a one-time heroic push to a high crash-free rate, it is a ratchet that only moves up. Every release adds code and risk, so without ongoing attention the rate drifts down. Build a small ritual: review your top crashers each cycle, hold a stability bar before shipping, and treat any post-release dip as a regression to fix immediately. Over many releases this discipline produces a game that gets steadily more stable rather than one that lurches between rough patches and emergency hotfixes whenever crashes spike.
The payoff compounds quietly. A higher crash-free rate means fewer churned players, fewer bug-driven negative reviews, and a steadier reputation, all of which matter enormously for an indie title that lives or dies on word of mouth. Players rarely praise a game for not crashing, but they punish one that does, so the reward for a high crash-free rate is the absence of a problem you will never see in your reviews. Improving this one metric is among the highest-return investments a small studio can make in its game's long-term health.
Crash-free rate is the clearest summary of stability. Measure it honestly, kill your top crashers, and ratchet the number up release over release.