Google Play's Android Vitals system ranks your app partly on crash stability. But what crash rate is actually good? If you're shipping Android and need to know whether 0.5%, 1%, or 2% crash-free rate is acceptable to Play's algorithm, the answer isn't straightforward—it depends on thresholds, your device mix, and how Play distributes your app. Understanding the google play android vitals crash rate benchmark 2026 helps you prioritize fixes and avoid visibility penalties.
Android Vitals doesn't judge all crash rates equally. Play Console monitors crash performance against device-specific thresholds, and if you exceed them, your app gets flagged as having "bad behavior"—which suppresses it in discovery and recommendations. This post breaks down the thresholds, why they vary by device, and how to track your way to a healthy crash rate.
The 1.09% Bad Behavior Threshold
Google Play's published threshold for "bad behavior" is approximately 1.09% crash rate across your user base. If your app crashes on more than 1.09% of user sessions (or devices) over a rolling period, Play considers it unstable and begins penalizing visibility.
This isn't a hard cutoff—it's a signal. Play uses it to:
- Suppress your app in search and category rankings
- Reduce it in "Similar apps" recommendations
- Lower it in personalized suggestions for users with matching devices
- Potentially reject updates if the crash rate spikes significantly
The key insight: below 1.09% is the safety zone. Trending downward is good; spiking upward after a release is dangerous. Every update is a risk window where your crash rate might temporarily exceed the threshold, especially if you break something on a popular device.
Track your crash rate on a rolling 7-day or 14-day basis—the same way Play Console does. Don't rely on cumulative rates or averages spanning months, which smooth out recent regressions.
Per-Device Thresholds: Why Your High-End and Low-End Mix Matters
Here's where the benchmark gets nuanced. Android Vitals doesn't apply one threshold to everyone; instead, it sets per-device limits. A high-end device (like a Pixel 8 Pro) may tolerate a 0.5% crash rate, while a lower-end device (like a Moto G with limited RAM) might flag as "bad behavior" at 2–3% because it's already stressed. Play assumes lower-end devices naturally crash more, so it's more lenient on them—up to a point.
Your app's overall crash rate is the weighted average across your device mix:
Overall crash rate = (crashes on Device A / sessions on Device A) × Device A weight
+ (crashes on Device B / sessions on Device B) × Device B weight
Example: If 80% of your users are on modern phones (0.3% crash rate) and 20% are on older devices (1.8% crash rate):
Overall = (0.3 × 0.80) + (1.8 × 0.20) = 0.24 + 0.36 = 0.60%
You're well below the threshold. But if a buggy release breaks the older-device cohort and their rate jumps to 4%:
Overall = (0.3 × 0.80) + (4.0 × 0.20) = 0.24 + 0.80 = 1.04%
Now you're in the red. This is why error triage must account for device breakdowns—a crash affecting 5% of low-end users might sink your overall score.
Crash Rate vs. Crash-Free Rate: Which Metric Matters?
Industry terminology can blur here. Crash-free rate (the percentage of sessions without a crash) is the inverse of crash rate:
- Crash rate: 1% → Crash-free rate: 99%
- Crash rate: 0.5% → Crash-free rate: 99.5%
Play Console displays both. Use crash-free rate for marketing ("99.5% stable!") and crash rate for error budgets and alerting. If your error budget allows 0.5% crash rate, that's a 99.5% crash-free SLO—and exceeding it is a violation.
Set your internal SLO below Play's 1.09% threshold. Aim for 0.5–0.7% as a safety margin, so you have breathing room after a bad release.
Impact on App Discoverability and Rankings
Google's algorithms factor Android Vitals into ranking and promotion:
- Search ranking: Apps with bad behavior score lower for relevant queries.
- Recommendations: Play is less likely to suggest your app to users if it's flagged.
- Update rollout: If a new version exceeds the threshold, Play may slow or halt the rollout.
- Regional suppression: Play may suppress your app in regions where crashes are concentrated (e.g., if a specific carrier's network causes hangs on your app).
The damage is real. A one-point rating drop can translate to thousands of lost downloads. Staying below the threshold isn't just about stability—it's about business.
Tracking Crash Rate Like an SRE
To stay on top of your crash rate, you need monitoring that tracks the right signals. Here's the setup:
1. Instrument crashes properly. Use a Sentry-compatible SDK (like Sentry's own @sentry/react-native, @sentry/java for Android native code) and point it at LightTrace or your error tracker:
import io.sentry.android.core.SentryAndroid;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
SentryAndroid.init(this, options -> {
options.setDsn("https://<key>@light-trace.robomiri.com/1");
options.setTracesSampleRate(0.1);
});
}
}
2. Define your metric. Crash rate = (unhandled exceptions / sessions) × 100%. A session is a user's app launch through backgrounding or crash.
3. Alert on thresholds. When your 7-day crash rate exceeds 0.7%, page someone. When it hits 1.0%, escalate.
4. Compare to Play Console. Your error tracker's crash rate should align with Android Vitals. If it diverges, you may be double-counting, missing ANRs, or not measuring sessions the same way.
ANRs (Application Not Responding) are not crash rate in Play's calculation, but they degrade user experience just as badly. Treat ANR rate as a separate SLI and set a 0.05% threshold.
Prioritizing Fixes by Device and Impact
Once you've instrumented crashes, sort them by impact:
- High impact: Crashes affecting 10%+ of sessions on a popular device (e.g., Samsung Galaxy A).
- Medium impact: Crashes affecting 1–5% of sessions, or 20%+ of a niche device.
- Low impact: Rare, low-session-count crashes that don't move the needle.
Use structured logging to tag crashes by device model, OS version, app version, and user segment. This narrows your mean time to resolution because you can reproduce locally faster.
SentryAndroid.captureException(exception, scope -> {
scope.setTag("device_model", Build.MODEL);
scope.setTag("os_version", Build.VERSION.SDK_INT);
scope.setContext("app", new HashMap<String, Object>() {{
put("version", BuildConfig.VERSION_NAME);
put("build", BuildConfig.VERSION_CODE);
}});
});
The Release Ritual: Staged Rollouts Protect Your Threshold
Never ship 100% of users at once. Use Play Console's staged rollout (5% → 25% → 100%) and monitor crash rate in real time after each step. If your crash rate spikes above 0.9% at 5%, you catch it before 95% of users are harmed. This is black-box monitoring in action—watching the end-user experience, not just logs.
Plan for a "pause and rollback" decision point at 1.0% crash rate. By then, you've likely already exceeded Play's threshold algorithmically, but stopping prevents further damage.
Get visibility into your crash rate the moment a release ships. Your error tracker should show minute-by-minute breakdowns so you spot regressions within 5–10 minutes, not hours.
Ready to ship stable Android apps? Set up error tracking with a Sentry-compatible dashboard and start tracking your crash rate against benchmarks today.
Start tracking errors in minutes
Start free with LightTrace—monitor Android crashes, set alerting on bad behavior thresholds, and stay below the 1.09% line. No credit card required.