Target API level checker
Drop in your .apk or .aab file and find out in a second whether it targets Android 16 (API 36), the level Google Play asks for from August 31, 2026. It is free, and your file is read right here in your browser instead of being uploaded.
Drop your .apk or .aab
or browse files. Any size works, we only read the settings inside
Sign in once, then check as many builds as you like.
What that warning in Play Console means
App must target Android 16 (API level 36) or higher
To provide users with a safe and secure experience, Google Play requires all apps to meet target API level requirements. From August 31, 2026, if your target API level is not within 1 year of the latest Android release, you will not be able to update your app.
Every Android app declares which version of Android it was built for. That setting is called the target API level, and Google Play has a rule about how old it is allowed to be. It has to be no more than one year behind the newest version of Android. Android 16 is the newest one, and it is known to your build tools as API 36, so that becomes the floor on August 31, 2026.
This is a rule about publishing, not about taking your app down. Your app stays on the Play Store and the people who already have it keep using it normally. What stops working is releasing anything new. Play Console will block your update until the file you upload targets a high enough level. A brand new app has to meet the rule from day one.
All of it comes down to a single setting called targetSdkVersion. That is the number this page reads, and it reads it from the actual file you are about to upload rather than from your project settings, so an old override or a value added by a library cannot catch you out later.
August 31, 2025
API 35 became the minimum
Since this date, new apps and updates have had to target Android 15 or higher. Anything lower is turned down as soon as you upload it.
August 31, 2026
API 36 becomes the minimum
Updates have to target Android 16 or higher. Your app stays on the Play Store either way, but you cannot publish anything new until you raise the number.
Every year after
The number keeps moving
Google Play wants your target level to stay within a year of the newest Android version, so expect the same deadline every August against whatever version ships next.
You get an answer in a second
There is no upload bar to sit through and no queue. We open the package, read the small file that holds the settings, and tell you. A 500 MB build is just as quick as a 5 MB one.
Your build stays on your computer
Everything runs inside your browser tab. Nothing is sent to us, saved, or logged. That matters when the file on your desk is a build nobody outside your team is meant to see.
Works with .apk and .aab
Google Play looks at the bundle you upload, so the checker reads app bundles as well as plain APK files and reports the same number Play will see.
Checked against the real rule
You get more than a number. You get a plain answer about what Google Play accepts today and what it will accept from August 31, 2026.
How to fix it: set your target to 36
The change itself is two lines. The only tricky part is knowing which file to put them in, because every set of tools keeps them somewhere different. Pick yours below, install the Android 16 SDK, build again, then drop the new file into the checker at the top of this page to make sure it worked.
android {
compileSdk = 36
defaultConfig {
targetSdk = 36
}
}You need Android Gradle Plugin 8.9 or newer and the Android 16 SDK installed from the SDK Manager. Raise compileSdk along with targetSdk, or the build will not find the new APIs.
android {
compileSdkVersion 36
defaultConfig {
targetSdkVersion 36
}
}Same requirements as above. You need Android Gradle Plugin 8.9 or newer and the Android 16 SDK installed. Older plugin versions refuse to build against API 36.
android {
compileSdk = 36
defaultConfig {
targetSdk = 36
}
}Flutter writes targetSdk = flutter.targetSdkVersion by default, so the value follows whichever Flutter version you are on. Either upgrade Flutter until that default reaches 36, or type the number in yourself like the example above.
buildscript {
ext {
compileSdkVersion = 36
targetSdkVersion = 36
}
}React Native keeps these numbers in the root build.gradle file, not in the app folder. Before you ship, check that your React Native version and any native packages you use support API 36.
ext {
compileSdkVersion = 36
targetSdkVersion = 36
}Capacitor reads these values from variables.gradle. Run npx cap sync afterwards so the Android project picks up the change.
Target API Level → Android 16.0 (API level 36)
Minimum API Level → unchangedThere is no file to edit here. Set it in Player Settings, and install the Android 16 SDK through Unity Hub or the Android SDK Manager first.
Checking the number from a terminal
Handy inside a build pipeline, or for an app somebody else built. The aapt2 tool comes with the Android SDK.
aapt2 dump badging app-release.apk | grep targetSdkVersion
# targetSdkVersion:'36'
# For an app bundle:
bundletool dump manifest --bundle=app-release.aab | grep targetSdkVersionWhat changes once you target Android 16
Changing the number is the easy part. That number is also what switches your app over to the new Android behaviours, so a few things start working differently. These are the ones that catch teams out. Try them on a real phone running Android 16 before you send the update to anyone.
Your app draws behind the system bars
Android 16 always paints your app under the status bar at the top and the navigation bar at the bottom. If your screens do not leave room for them, buttons and text end up hidden underneath.
Bigger memory pages on new phones
New devices use a larger memory page size. Apps with C or C++ code inside need to be rebuilt for it or they will not start at all. Any ready made .so file you ship needs checking too.
The back gesture works differently
Android now animates the back gesture by default. If you catch the back button yourself in code, that handling stops behaving the way it used to. Switch to OnBackPressedCallback.
Tablets ignore your orientation lock
On any screen wider than 600dp, Android 16 ignores a request to lock the app to portrait or to stop it being resized. If your app is portrait only, open it on a tablet or a foldable before you ship.
Try the new build on real phones first
Upload it to App Dropper and send your testers a link they can tap to install. No Play review, no internal testing track, no waiting around.
Common questions
Tap a question to see the answer.
What target API level does Google Play ask for?
Right now, every new app and every update has to target API 35, which is Android 15, or higher. That rule started on August 31, 2025. On August 31, 2026 it moves up to API 36, which is Android 16. The reason it keeps moving is that Google Play wants your target level to be no more than one year behind the newest version of Android.
What happens if I miss the deadline?
Your app stays on the Play Store and everyone who already installed it can keep using it. What you lose is the ability to publish. Play Console will turn down any new release for that app until you raise the target level. If you are launching a brand new app, you cannot publish it at all until you meet the requirement.
Do you upload my APK anywhere?
No. The whole check happens inside your browser tab. We read the small manifest file that sits inside your app package and nothing else, so your build never reaches us. That also means the size of your file does not matter, and there is nothing for us to store or delete afterwards.
Can I check an app bundle (.aab)?
Yes. Google Play asks for an .aab file when you publish a new app, so the checker reads those as well as .apk files. Both give you the same target level that Google Play will see when you upload.
How do I check an app I did not build myself?
This tool is the quickest way, since all you need is the file. If you prefer the command line, the aapt2 tool that comes with the Android SDK prints the target level for any APK. Play Console also shows it for every release you have already uploaded, under App bundle explorer.
Is targetSdk the same as compileSdk?
No, and only targetSdk counts for this rule. compileSdk decides which Android features you are allowed to use while you write your app. targetSdk tells a phone which set of behaviours to apply while your app runs. In practice you raise both to the same number, because you cannot build against an older version than the one you target.
Will raising the target level break my app?
It can, and that is the honest answer. Raising targetSdk is exactly what switches your app over to the new Android behaviours. Moving to API 36 turns on full screen layouts, the new back gesture, bigger memory pages for apps with C or C++ code, and resizable windows on tablets. Changing the number takes a minute. Testing what it changed is the real job.
Can I get more time?
In past years Google has offered a one off extension that you ask for from Play Console before the deadline, usually buying you until early November. If you need it, look for the notice on your app dashboard in Console. It only delays the date, it does not remove the requirement.
What about Wear OS, Android TV and cars?
Those follow the same yearly pattern but sit a version or two lower, and Google lists the exact number for them on its own target API level page. This checker uses the phone and tablet requirement, which is the one behind the warning most people see in Play Console.
Does my minimum SDK matter here?
No. You can still support older phones with a low minimum version and target API 36 at the same time. The two settings do different jobs. The one thing to watch is an app that never sets a target level at all, because Android then treats the minimum as the target, and that almost always fails the rule.
Sorted your target level and need the build in your testers' hands? Share an APK in seconds or read uploading your first build.