Skip to content

Android API levels and version list ​

In short: Android 17 is API level 37, Android 16 is API 36, Android 15 is API 35, Android 14 is API 34 and Android 13 is API 33. This list gives every Android version with its API level and code name back to Android 1.0, notes the permission changes testers meet at each level, and exports as CSV, all in your browser.

37 versions shown

Android versions and API levels, from Android's uses-sdk guide read on 2026-11-02
APIVersionCode nameFor testers
37Android 17CINNAMON_BUN
  • ACCESS_LOCAL_NETWORK: a runtime permission to find and connect to devices on the local network.
36Android 16BAKLAVA
  • RANGING: a runtime permission for the generic ranging module.
35Android 15VANILLA_ICE_CREAM
34Android 14UPSIDE_DOWN_CAKE
  • READ_MEDIA_VISUAL_USER_SELECTED: people can give access to selected photos only.
  • Foreground services need the permission for their type, such as FOREGROUND_SERVICE_CAMERA.
  • Non-linear font scaling: large text grows less than small text at high font sizes.
33Android 13TIRAMISU
  • POST_NOTIFICATIONS: notifications need a runtime permission.
  • READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO replace READ_EXTERNAL_STORAGE.
  • NEARBY_WIFI_DEVICES and BODY_SENSORS_BACKGROUND arrive.
32Android 12 (12L)S_V2
31Android 12S
  • BLUETOOTH_SCAN, BLUETOOTH_CONNECT and BLUETOOTH_ADVERTISE replace the old Bluetooth permissions.
  • SCHEDULE_EXACT_ALARM: exact alarms need special access.
30Android 11R
  • WRITE_EXTERNAL_STORAGE has no effect for apps that target this level or higher; MANAGE_EXTERNAL_STORAGE is All files access.
  • QUERY_ALL_PACKAGES arrives with package visibility rules.
29Android 10Q
  • ACCESS_BACKGROUND_LOCATION: background location is asked for separately.
  • ACTIVITY_RECOGNITION and ACCESS_MEDIA_LOCATION arrive.
28Android 9P
  • ACCEPT_HANDOVER arrives; FOREGROUND_SERVICE is needed for foreground services.
27Android 8.1O_MR1
26Android 8.0O
  • ANSWER_PHONE_CALLS and READ_PHONE_NUMBERS arrive.
25Android 7.1, 7.1.1N_MR1
24Android 7.0N
23Android 6.0M
  • Runtime permissions: apps ask for dangerous permissions while running, and people can deny them.
22Android 5.1LOLLIPOP_MR1
21Android 5.0LOLLIPOP
20Android 4.4WKITKAT_WATCH
  • KitKat for wearables only.
19Android 4.4KITKAT
18Android 4.3JELLY_BEAN_MR2
17Android 4.2, 4.2.2JELLY_BEAN_MR1
16Android 4.1, 4.1.1JELLY_BEAN
15Android 4.0.3, 4.0.4ICE_CREAM_SANDWICH_MR1
14Android 4.0, 4.0.1, 4.0.2ICE_CREAM_SANDWICH
13Android 3.2HONEYCOMB_MR2
12Android 3.1.xHONEYCOMB_MR1
11Android 3.0.xHONEYCOMB
10Android 2.3.3, 2.3.4GINGERBREAD_MR1
9Android 2.3, 2.3.1, 2.3.2GINGERBREAD
8Android 2.2.xFROYO
7Android 2.1.xECLAIR_MR1
6Android 2.0.1ECLAIR_0_1
5Android 2.0ECLAIR
4Android 1.6DONUT
3Android 1.5CUPCAKE
2Android 1.1BASE_1_1
1Android 1.0BASE
A phone’s API level and Android version
adb shell getprop ro.build.version.sdk
adb shell getprop ro.build.version.release

From Android’s API level table, read on 2026-11-02. Nothing leaves your browser.

Testing on several Android versions at once? BenchFleet shows every connected phone on one screen, whatever its version, and on Pro runs the same workflow on all of them at once or on a schedule. See testing apps on real phones.

Free for up to 3 phones, with no account. Pro adds workflows, schedules and AI for up to 25 phones from £12 a month + VAT.

How to use it ​

  • Search by version (Android 14), API level (34), code name (UPSIDE_DOWN_CAKE) or a change (notification).
  • Tick Only levels with changes for testers to see the levels where permissions and storage rules changed.
  • Export the list as CSV for a test plan, or print it.

minSdk, targetSdk and what to test ​

minSdkVersion is the oldest API level your app installs on, and targetSdkVersion the level whose behaviour it has opted into. Test at least on both ends and on the version most of your users have; the changes at each level in between tell you what else to check. The Android test matrix generator turns a range of versions and your other conditions into the rows to test, and the mobile app testing checklist lists the checks for each row.

Android's own pages explain each version's changes: the API level table links every version's highlights, and behaviour changes are listed per release.

Questions ​

What is an API level?

A whole number for each version of Android's framework API. Apps declare the lowest they run on (minSdkVersion) and the one they are tested against (targetSdkVersion); a phone's API level is in ro.build.version.sdk.

How do I find a phone's API level?

Run adb shell getprop ro.build.version.sdk for the API level and adb shell getprop ro.build.version.release for the Android version, or look under About phone in its settings.

Why are there two API levels for Android 12?

Android 12 is API 31, and Android 12L, a release for large screens and foldables, is API 32.

Where does the list come from?

From the API level table in Android's uses-sdk guide, read on 2 November 2026. The notes for testers name only changes we have a source for, such as the permissions each level added.

Does the page send my searches anywhere?

No. The list and the search work in your browser, and nothing leaves your browser.

Start with the Free plan

Free for up to 3 phones, with no account. Pro adds workflows, schedules and AI for up to 25 phones from £12 a month + VAT.