Skip to main content

Android version distribution

Android version distribution chart for min SDK decisions

Use this Android API market-share chart to choose a minimum SDK by the users you still need to cover. Cumulative reach answers: if this Android version is your floor, what percent of devices can install your Capacitor, React Native, Flutter, or native app.

As of November 30, 2025 , targeting Android 9 (Pie) covers about 95.2% of devices . A 99% goal lands near Android 7 (Nougat) . The largest single version share today is Android 15 (V) at 19.3%.

Last updated
Updated November 30, 2025
99.9 percent coverage target
99.9% coverage: Android 5 (Lollipop)

Compare with iOS deployment targets on the iOS version distribution chart .

Choose your minimum

What Android version covers your users?

Pick a minimum Android version / API, or set the user coverage you need. The chart answers: if this is your floor, what share of devices can install your app.

Finds the newest Android version / API that still reaches at least this many users. Use tenths for targets like 99.5% or 99.9%.

Loading target…

How to use the chart

How to pick an Android min SDK from version distribution data

1. Set a coverage goal

Decide what percent of the Android install base you must keep. Common goals are 95%, 99%, or 99.9% when you still support older phones.

2. Read cumulative reach

Cumulative distribution is the right metric for minSdkVersion. It measures devices on that API level or newer, not only devices stuck on one release.

3. Choose the newest safe floor

Prefer the newest Android version that still meets your goal. That maximizes modern APIs and Play policy headroom while protecting the users you care about.

Market share

Android version market share by API level

Individual Android version share, sorted highest to lowest. Use this when you need the current mix of OS versions, not the cumulative install floor.

Android 15 (V)

API 35

19.3%

Android 14 (U)

API 34

17.2%

Android 13 (T)

API 33

13.9%

Android 11 (R)

API 30

13.7%

Android 12 (S)

API 31

11.4%

Android 10 (Q)

API 29

7.8%

Android 16 (B)

API 36

7.4%

Android 9 (Pie)

API 28

4.5%

Android 8.1 (Oreo)

API 27

2.3%

Android 8 (Oreo)

API 26

0.8%

Android 6 (Marshmallow)

API 23

0.4%

Android 7 (Nougat)

API 24

0.4%

Android 7.1 (Nougat)

API 25

0.4%

Android 5.1 (Lollipop)

API 22

0.3%

Android 5 (Lollipop)

API 21

0.1%

FAQ

Android distribution FAQ

Answers for teams setting minSdkVersion, reviewing Play Store support, or planning Capacitor Android upgrades.

What is an Android version distribution chart?

It shows how Android versions are split across active devices. Cumulative reach answers the practical question: if this API level is your minimum SDK, what percentage of the market can install your app.

How do I choose a minSdkVersion from this chart?

Set a coverage goal first (many teams use 95%). Then pick the newest Android version that still meets that goal. On this dataset, Android 9 (Pie) reaches about 95.2%. Raise the target toward 99% if you need broader support, or lower it if you can drop older APIs.

What is the difference between market share and cumulative reach?

Market share is the percent of devices on one exact Android version. Cumulative reach is the percent of devices on that version or newer. For min SDK decisions, use cumulative reach.

How often is this Android distribution data updated?

Capgo refreshes the chart from Composables Android Distribution Chart daily. If the published figures change, the JSON in the repo is updated automatically. This page currently reflects data updated November 30, 2025.

Does this help Capacitor and Ionic apps?

Yes. Capacitor apps still compile to native Android projects, so minSdkVersion affects which devices can install your release. Use this chart before you raise the floor for a plugin, Live Update baseline, or Play Store build.

Related developer resources

Keep going with iOS coverage data, signing tools, and Capgo release workflows.

How this data is kept current

A daily job fetches the latest numbers from the sources above. If the figures changed, the JSON files are committed automatically; if not, the repo stays untouched. The pages read these files at build time, so the charts stay in sync with the latest published data.