Free tool

Android Package Name Generator

Turn your domain and app name into a valid applicationId — or paste one you already have and find out why Gradle or Play Console is rejecting it.

No domain? Use io.github.yourusername.

What a package name actually is

Every Android app has an applicationId — usually called the package name — and it is the one thing about your app you can never change. It is how the Play Store identifies your listing, how Android decides whether an install is an update or a new app, and how the system keeps your files separate from every other app on the device. Publish under com.mycompany.shop and that string is yours for as long as the listing exists. Get it wrong and the only fix is a new listing with zero installs and zero reviews.

The rules Gradle enforces

The validator above checks every one of these, which is worth doing before a build rather than after a five-minute Gradle run.

The rules Google Play adds on top

Play refuses anything starting with com.example — that prefix is reserved for sample code and tutorials, and it is the single most common upload rejection for first-time publishers. Names containing android as a segment are similarly reserved by the platform. And once a package name has been used on Play, it is gone forever: even if you delete the app, unpublish it, or close the account, nobody — including you — can ever upload under that name again.

Reverse domain naming, and what to do without a domain

The convention is your domain backwards, then the app: example.com plus a shop app becomes com.example.shop. The point is collision avoidance — because you control the domain, nobody else will legitimately claim that prefix. It has nothing to do with where the app is hosted, and no DNS lookup ever happens.

If you do not own a domain, the accepted fallback is io.github.yourusername.appname, which borrows the uniqueness of your GitHub account. Avoid inventing a company-sounding domain you do not own — if someone later registers it and publishes under the same prefix, you have a conflict you cannot win.

Choosing well the first time

Package name vs. application ID

They started as the same thing and are still identical in most projects, which is why the terms get used interchangeably. Strictly, the package name is the Java/Kotlin namespace your source files live in (namespace in modern Gradle), and the application ID is the identity Android and Play use. Modern Gradle lets you set them independently — handy when you want a .debug suffix so a debug build installs alongside the release one. When people ask for your app's package name, they mean the application ID.

Frequently asked questions

Can I change my app's package name after publishing?

No. On Google Play the package name is permanent: it identifies the listing itself. Changing it means creating a new listing that starts from zero installs, ratings and reviews, and existing users are never migrated — they would have to find and install the new app manually. This is the single most important thing to get right before your first upload.

Why is com.example rejected by Google Play?

The com.example prefix is reserved for documentation and sample code, so Play blocks uploads that use it. Replace it with your own reverse domain, or with io.github.yourusername if you do not have a domain.

Does my package name need to match a domain I own?

It is a convention, not a technical requirement — nothing verifies the domain. But the convention exists to prevent collisions, so using a domain you do not control risks a genuine conflict later. If you have no domain, io.github.yourusername.appname gives you the same uniqueness for free.

Can a package name contain numbers or hyphens?

Numbers are allowed as long as no segment starts with one — com.studio7.app is fine, com.7studio.app is not. Hyphens are never allowed anywhere in a package name, so my-app has to become myapp.

What is the difference between applicationId and namespace?

namespace is the Kotlin/Java package your generated R class and source files live in; applicationId is the identity Android and Play use to recognise your app. They are usually identical, but keeping them separate lets you add a suffix like .debug to development builds so both can be installed on one device at the same time.

Read next

Related tools

Ready to turn your site into an app?

Upload an HTML file or a ZIP, set your icon and name, and download a signed Android app. No Android Studio, no command line.

Open the builder