Version cheat sheet
Every API level, Android version, internal codename and release month, in one printable table generated from the version dataset.
The lookup table. Generated at build time from data/versions.json, so it cannot disagree with any
page on the site.
TL;DR#
targetSdkandminSdkare API levels, not version numbers.- Android 12 and 12L are API 31 and 32: the marketing version and the API level are not the same axis.
- The internal codename continues past the public dessert names. Android 10 onward have codenames (Quince Tart, Red Velvet Cake, Snow Cone, Tiramisu, Upside Down Cake, Vanilla Ice Cream, Baklava, Cinnamon Bun) but no public dessert branding.
Mental model#
Two ladders leaning against the same wall. One is labelled with what the box says ("Android 13"), the
other with what the code checks (Build.VERSION.SDK_INT >= 33). Most confusion comes from reading
one ladder and quoting the other.
Where the analogy breaks#
The ladders are not evenly spaced. Some rungs took three months, some took eighteen, and one rung (API 20) existed only for watches.
The big picture#
Text description of this diagram
The Android stack with a version axis. Each release changes different layers: some are runtime changes, some are framework API changes, some are vendor interface changes. The table below is the lookup for mapping between them.
Deep dive#
| API | Version | Codename | Released | Runtime |
|---|---|---|---|---|
| 1 | 1.0 | BASE | 2008-09 | Dalvik |
| 2 | 1.1 | BASE_1_1 | 2009-02 | Dalvik |
| 3 | 1.5 | CUPCAKE | 2009-04 | Dalvik |
| 4 | 1.6 | DONUT | 2009-09 | Dalvik |
| 5 | 2.0 | ECLAIR | 2009-10 | Dalvik |
| 6 | 2.0.1 | ECLAIR_0_1 | 2009-12 | Dalvik |
| 7 | 2.1 | ECLAIR_MR1 | 2010-01 | Dalvik |
| 8 | 2.2 | FROYO | 2010-05 | Dalvik |
| 9 | 2.3 | GINGERBREAD | 2010-12 | Dalvik |
| 10 | 2.3.3 | GINGERBREAD_MR1 | 2011-02 | Dalvik |
| 11 | 3.0 | HONEYCOMB | 2011-02 | Dalvik |
| 12 | 3.1 | HONEYCOMB_MR1 | 2011-05 | Dalvik |
| 13 | 3.2 | HONEYCOMB_MR2 | 2011-07 | Dalvik |
| 14 | 4.0 | ICE_CREAM_SANDWICH | 2011-10 | Dalvik |
| 15 | 4.0.3 | ICE_CREAM_SANDWICH_MR1 | 2011-12 | Dalvik |
| 16 | 4.1 | JELLY_BEAN | 2012-07 | Dalvik |
| 17 | 4.2 | JELLY_BEAN_MR1 | 2012-11 | Dalvik |
| 18 | 4.3 | JELLY_BEAN_MR2 | 2013-07 | Dalvik |
| 19 | 4.4 | KITKAT | 2013-10 | Dalvik |
| 20 | 4.4W | KITKAT_WATCH | 2014-06 | Dalvik |
| 21 | 5.0 | LOLLIPOP | 2014-11 | ART |
| 22 | 5.1 | LOLLIPOP_MR1 | 2015-03 | ART |
| 23 | 6.0 | M | 2015-10 | ART |
| 24 | 7.0 | N | 2016-08 | ART |
| 25 | 7.1 | N_MR1 | 2016-10 | ART |
| 26 | 8.0 | O | 2017-08 | ART |
| 27 | 8.1 | O_MR1 | 2017-12 | ART |
| 28 | 9 | P | 2018-08 | ART |
| 29 | 10 | Q | 2019-09 | ART |
| 30 | 11 | R | 2020-09 | ART |
| 31 | 12 | S | 2021-10 | ART |
| 32 | 12L | S_V2 | 2022-03 | ART |
| 33 | 13 | TIRAMISU | 2022-08 | ART |
| 34 | 14 | UPSIDE_DOWN_CAKE | 2023-10 | ART |
| 35 | 15 | VANILLA_ICE_CREAM | 2024-10 | ART |
| 36 | 16 | BAKLAVA | 2025-06 | ART |
| 37 | 17 | CINNAMON_BUN | 2026-06 | ART |
How it evolved#
See the Time Machine for the same data as an interactive axis.
Curiosity corner#
- The codename for Android 9 is just "P" publicly, though internally it was Pistachio Ice Cream.
- API 20 exists only for Android Wear. No phone ever shipped it.
Try it#
adb shell getprop ro.build.version.sdk
adb shell getprop ro.build.version.release
Check yourself#
Check yourself
What does an API level identify?
Sources#
Sources
Every version number, API level, class name and date on this page is traced to one of these. Pages are re-verified against them; last_verified above says when.
- docs<uses-sdk> | App architecturedeveloper.android.comaccessed 2026-10-27↩
- docsBuild.VERSION_CODES | API referencedeveloper.android.comaccessed 2026-10-27↩
- docsAndroid releases and versionsdeveloper.android.comaccessed 2026-10-27↩