> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modaal.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Android API Levels: Versions, Codenames, and Device Coverage

> Every Android version with its API level, VERSION_CODES constant, codename, year, and live device coverage — plus how to choose the right minSdk.

Every Android release carries an **API level** — the integer that build files name in `minSdk`, `targetSdk`, and `compileSdk`. The current release is Android 17 (API level 37, 2026), and the table below lists every version back to Android 1.0 with its API level, `VERSION_CODES` constant, codename, release year, and the share of active devices an app reaches if it requires that version. Coverage comes from [Statcounter GlobalStats](https://gs.statcounter.com/android-version-market-share/mobile/worldwide); the one-row-per-release format follows [apilevels.com](https://apilevels.com/).

## Which API level is which Android version?

**Coverage measured August 2026** (Statcounter GlobalStats, mobile devices, worldwide). "Runs on" is cumulative: the share of devices on that version *or newer* — the reach of an app whose `minSdk` is that API level.

| Android version     | API level | `VERSION_CODES`          | Codename           | Runs on   | Year     |
| ------------------- | --------- | ------------------------ | ------------------ | --------- | -------- |
| Android 17          | 37        | `CINNAMON_BUN`           | Cinnamon Bun       | 1.0%      | 2026     |
| Android 16          | 36        | `BAKLAVA`                | Baklava            | 27.0%     | 2025     |
| Android 15          | 35        | `VANILLA_ICE_CREAM`      | Vanilla Ice Cream  | 44.2%     | 2024     |
| Android 14          | 34        | `UPSIDE_DOWN_CAKE`       | Upside Down Cake   | 57.1%     | 2023     |
| Android 13          | 33        | `TIRAMISU`               | Tiramisu           | 72.0%     | 2022     |
| Android 12L         | 32        | `S_V2`                   | Snow Cone          | 72.0%     | 2022     |
| Android 12          | 31        | `S`                      | Snow Cone          | 82.1%     | 2021     |
| Android 11          | 30        | `R`                      | Red Velvet Cake    | 90.3%     | 2020     |
| Android 10          | 29        | `Q`                      | Quince Tart        | 94.6%     | 2019     |
| Android 9           | 28        | `P`                      | Pie                | 96.6%     | 2018     |
| Android 8.1         | 27        | `O_MR1`                  | Oreo               | 97.6%     | 2017     |
| **Android 8.0**     | **26**    | **`O`**                  | **Oreo**           | **98.3%** | **2017** |
| Android 7.1         | 25        | `N_MR1`                  | Nougat             | 98.5%     | 2016     |
| Android 7.0         | 24        | `N`                      | Nougat             | 98.6%     | 2016     |
| Android 6.0         | 23        | `M`                      | Marshmallow        | 99.3%     | 2015     |
| Android 5.1         | 22        | `LOLLIPOP_MR1`           | Lollipop           | 99.4%     | 2015     |
| Android 5.0         | 21        | `LOLLIPOP`               | Lollipop           | 99.9%     | 2014     |
| Android 4.4W        | 20        | `KITKAT_WATCH`           | KitKat             | —         | 2014     |
| Android 4.4         | 19        | `KITKAT`                 | KitKat             | 99.9%     | 2013     |
| Android 4.3         | 18        | `JELLY_BEAN_MR2`         | Jelly Bean         | —         | 2013     |
| Android 4.2         | 17        | `JELLY_BEAN_MR1`         | Jelly Bean         | —         | 2012     |
| Android 4.1         | 16        | `JELLY_BEAN`             | Jelly Bean         | 99.9%     | 2012     |
| Android 4.0.3–4.0.4 | 15        | `ICE_CREAM_SANDWICH_MR1` | Ice Cream Sandwich | —         | 2011     |
| Android 4.0         | 14        | `ICE_CREAM_SANDWICH`     | Ice Cream Sandwich | —         | 2011     |
| Android 3.2         | 13        | `HONEYCOMB_MR2`          | Honeycomb          | —         | 2011     |
| Android 3.1         | 12        | `HONEYCOMB_MR1`          | Honeycomb          | —         | 2011     |
| Android 3.0         | 11        | `HONEYCOMB`              | Honeycomb          | —         | 2011     |
| Android 2.3.3–2.3.7 | 10        | `GINGERBREAD_MR1`        | Gingerbread        | —         | 2011     |
| Android 2.3         | 9         | `GINGERBREAD`            | Gingerbread        | —         | 2010     |
| Android 2.2         | 8         | `FROYO`                  | Froyo              | —         | 2010     |
| Android 2.1         | 7         | `ECLAIR_MR1`             | Eclair             | —         | 2010     |
| Android 2.0.1       | 6         | `ECLAIR_0_1`             | Eclair             | —         | 2009     |
| Android 2.0         | 5         | `ECLAIR`                 | Eclair             | —         | 2009     |
| Android 1.6         | 4         | `DONUT`                  | Donut              | —         | 2009     |
| Android 1.5         | 3         | `CUPCAKE`                | Cupcake            | —         | 2009     |
| Android 1.1         | 2         | `BASE_1_1`               | Petit Four         | —         | 2009     |
| Android 1.0         | 1         | `BASE`                   | —                  | —         | 2008     |

The bolded row is the floor [Duet](/duet) ships. Duet — Modaal's cross-platform parity framework for native iOS and Android apps — sets `minSdk = 26` in every scaffolded Android target's Gradle files, with `compileSdk = 36` and `targetSdk = 36`, so a new Duet app installs on ≈98.3% of active Android devices.

<Frame caption="August 2026 device share by Android version, newest to oldest. The marked span is the reach of an app with minSdk 26.">
  <img src="https://mintcdn.com/modaal/JvQq_HlyMqkJyZGb/images/android-api-coverage-bar.svg?fit=max&auto=format&n=JvQq_HlyMqkJyZGb&q=85&s=9c2fdbc6c43fca3865a77e7237bff1fd" alt="Horizontal bar of Android version market share from Statcounter GlobalStats for August 2026, segments from Android 17 through Android 8 and older, with a bracket marking that minSdk 26 reaches about 98.3 percent of devices" width="920" height="296" data-path="images/android-api-coverage-bar.svg" />
</Frame>

## How do you read this table?

* **"Runs on" prices a `minSdk` choice.** It is the sum of Statcounter's monthly shares for that version and everything newer; requiring API 26 excludes the ≈1.7% of devices below it.
* **The source measures usage, not installs.** Statcounter derives shares from web traffic across its network, so a phone used daily counts for more than one in a drawer. It is an independent proxy for the active install base, not Google's own distribution data.
* **Rows marked "—"** sit below Statcounter's measurement floor for the month — each under 0.05% of traffic.
* **Two rows can share a number.** Android 13 and 12L both show 72.0% because 12L's own share is 0.02%, which disappears in rounding.
* **Codenames live on in the constants.** Releases are branded by number, and each still carries a dessert codename that surfaces in the [`Build.VERSION_CODES`](https://developer.android.com/reference/android/os/Build.VERSION_CODES) constants — `TIRAMISU` is API 33, `BAKLAVA` is API 36.
* **Minor SDK releases share their version's row.** Android 16 and 17 also ship mid-cycle SDK levels (36.1, 37.1), documented alongside the [version-code constants](https://developer.android.com/reference/android/os/Build.VERSION_CODES); `minSdk` stays the integer API level.

## What minSdk should you use?

Pick the lowest API level whose excluded devices you can accept, and let the table price the choice: as of August 2026, `minSdk 26` reaches ≈98.3% of active devices, `minSdk 29` reaches ≈94.6%, and `minSdk 31` reaches ≈82.1%.

The three numbers in a build file do different jobs, defined by the [`uses-sdk` element](https://developer.android.com/guide/topics/manifest/uses-sdk-element): `minSdk` is the oldest version the app installs on, `targetSdk` declares which version's behavior changes the app has been tested against, and `compileSdk` is the API surface the code compiles against. Only `minSdk` costs you devices. `targetSdk` and `compileSdk` stay current regardless — Google Play [requires a recent `targetSdk`](https://developer.android.com/google/play/requirements/target-sdk) for new submissions and updates.

Raising `minSdk` buys the ability to call newer platform APIs unconditionally — no runtime version checks, no compatibility fallbacks — and shrinks the device matrix you test. The cost is the coverage delta between the two rows, and the table states it exactly.

## Common questions

<AccordionGroup>
  <Accordion title="What minSdk should I use in 2026?" icon="sliders">
    For most new apps, API 26–29. Below 26 the added reach is under 2% of devices; above 31 you exclude nearly a fifth. Duet-scaffolded Android targets ship `minSdk 26` — the ≈98.3% row — and raise it per project only when a needed API demands it.
  </Accordion>

  <Accordion title="What's the difference between minSdk, targetSdk, and compileSdk?" icon="code">
    `minSdk` gates installation — devices below it never see the app. `targetSdk` opts the app into the behavior rules of that version; the system applies compatibility behavior for newer devices. `compileSdk` only affects compilation. An app commonly compiles against and targets the newest API while keeping a much lower `minSdk`.
  </Accordion>

  <Accordion title="What happens on devices older than the minSdk?" icon="ban">
    Google Play filters the app out of search and its store page shows it as incompatible, per the [`uses-sdk` filtering rules](https://developer.android.com/guide/topics/manifest/uses-sdk-element). The system also refuses to install the APK directly, so sideloading doesn't bypass the floor.
  </Accordion>

  <Accordion title="How fresh are these coverage numbers?" icon="rotate-right">
    The measurement date is printed above the table — the numbers are from that month's Statcounter GlobalStats data, and the page is refreshed at least quarterly and whenever the Android SDK versions Modaal pins change. The chart regenerates from the same numbers as the table.
  </Accordion>

  <Accordion title="Do Android versions still have dessert names?" icon="cake-candles">
    Yes, as codenames: public branding uses the number, and each release's dessert name lives in its `VERSION_CODES` constant — Android 17 is Cinnamon Bun, Android 16 is Baklava. The last release marketed under its dessert name was Android 9 Pie in 2018.
  </Accordion>
</AccordionGroup>

<Note>
  [Modaal](https://modaal.dev) scaffolds an app on the floor this page prices. [Set up the Android toolchain](/guides/setup-android) covers the SDK install; the components it pins live in the API 36 row above.
</Note>

## Sources and further reading

* [Statcounter GlobalStats — Android version market share](https://gs.statcounter.com/android-version-market-share/mobile/worldwide) — the coverage data (mobile devices, worldwide)
* [apilevels.com](https://apilevels.com/) — the reference whose one-row-per-release format this table follows
* [Build.VERSION\_CODES](https://developer.android.com/reference/android/os/Build.VERSION_CODES) — every API level and its constant, from the platform itself
* [SDK Platform release notes](https://developer.android.com/tools/releases/platforms) — what each platform release added
* [The uses-sdk element](https://developer.android.com/guide/topics/manifest/uses-sdk-element) — `minSdk` and `targetSdk` semantics and Play filtering
* [Google Play's target API level requirement](https://developer.android.com/google/play/requirements/target-sdk) — the policy floor on `targetSdk`
* [Android version history](https://en.wikipedia.org/wiki/Android_version_history) — community-maintained release chronology (Wikipedia)

## Read next

<CardGroup cols={2}>
  <Card title="How Android apps work" icon="cubes" href="/articles/how-android-apps-work">
    The anatomy behind these numbers: the manifest, activities, Jetpack Compose, and the Gradle build that names minSdk.
  </Card>

  <Card title="Set up the Android toolchain" icon="android" href="/guides/setup-android">
    The one-banner install of the pinned SDK components — the API 36 platform, build tools, and your first emulator.
  </Card>
</CardGroup>
