Free tool

Version Code Planner

Android has two version fields. versionName is what people see ("1.4.2"); versionCode is an integer that Google Play and the installer compare — every update must have a higher one. Enter your version and get a versionCode under three proven schemes, plus the next few in the series.

Plan the versionCode

Pure arithmetic in the browser.

The next build must be higher than this.

versionCode vs versionName

versionName is a free-form string shown to users — on the Play listing, in Settings → Apps, in your About screen. Android never interprets it; "1.4.2", "2024.09" and "Sunrise" are all legal. versionCode is a positive integer, invisible to users, that the installer and Google Play compare: an update installs only if its versionCode is higher than the one already installed, and Play refuses an upload whose code is not higher than every code it has seen for that app. The maximum is 2,100,000,000.

So the name is for people and the code is for machines, and the only rule that matters is that the code goes up with every build you ship.

Three schemes that work

SchemeExampleGood forWatch out for
Semantic (MMmmpp)1.4.2 → 10402Apps with real releases; the code is derivable from the nameMinor or patch above 99 needs a wider layout; hot-fixes on the same version need a new patch number
Date (YYMMDDnn)25 09 13 01 → 25091301Frequent builds, CI, anything where "when" matters more than "what"Two builds on the same day need nn incremented; it says nothing about features
Sequential1, 2, 3, …Small apps, solo developers, ZIP rebuildsYou must remember the last one — write it in a file next to your ZIP

Mixing schemes is fine as long as the number keeps rising. Moving from sequential (say, 14) to semantic (10402) is a jump upward and works; moving from date-based (25091301) back to semantic (10402) is a jump downward and Play will refuse it — you would be stuck with date-based forever.

What happens if you get it wrong

For a ZIP-to-APK app

Every rebuild from a new ZIP is a new version. The builder asks for both fields; set the name to whatever you told users and the code to something higher than last time — the planner's sequential column is the simplest habit. Keep a VERSION.txt in your project folder with the last code, and you will never guess.

Frequently asked questions

Does versionName have to match versionCode?

No. They are independent. The name can be anything; only the code must increase. Semantic scheme ties them together so you can derive one from the other, which is convenient but not required.

Can I reuse a versionCode after deleting a release?

Not on Google Play. Once a code has been uploaded — even to internal testing, even if the release was discarded — it is used forever for that app.

What is the maximum versionCode?

2,100,000,000. The date scheme reaches 99,123,199 by the end of the century and the semantic scheme would need version 21,000 to overflow, so neither is a practical concern.

Do I need to change the version to re-install the same APK?

If you install over the existing app, yes — Android refuses a same-code install unless you uninstall first. During testing it is easiest to uninstall the old build before installing the new one.

Read next

Related tools

Ready to turn your ZIP into an APK?

Upload the ZIP of your HTML project, pick a name and an icon, and download a signed Android APK. Free, in the browser, no Android Studio.

Convert ZIP to APK