The AD_ID permission and the Advertising ID declaration

Checked against Google's policy pages on .

  • com.google.android.gms.permission.AD_ID

What does it allow?

The advertising ID is a resettable identifier apps use for advertising and analytics. Apps that target Android 13 or higher must declare com.google.android.gms.permission.AD_ID in their manifest to read it; without the declaration, the app reads a string of zeros instead. Users can also delete their advertising ID, after which apps get zeros too.

Which apps does Google Play allow to use it?

The permission is a normal one, granted at install, so the question Google Play asks is not whether you may use it but whether you say so. Play Console's App content page has an Advertising ID question, and your Data safety answers must match what the app does.

In the Data safety form, the advertising ID belongs to the "Device or other IDs" data type, which Google describes as identifiers that relate to an individual device, browser or app, and gives the advertising identifier as an example. If your app, or an SDK in it, sends the ID off the device, that counts as collection, and Google's Data safety rules say data an SDK collects is yours to declare.

Why is it in my app?

Google's own page gives the example: SDKs such as the Google Mobile Ads SDK (play-services-ads) declare AD_ID in their library manifest, and it is merged into your app by default, "even if you don't explicitly declare the permission".

To see every permission in your build and which ones may need a declaration, paste your merged manifest into the Play Console permission declaration checker.

What can I use instead?

If your app shows no ads and does not need the advertising ID for analytics, remove the permission with tools:node="remove" (or Expo's android.blockedPermissions), and answer the Advertising ID question to match.

How do I remove it?

Add it to your own manifest with tools:node="remove". The manifest merge then leaves it out, whichever library declared it. In Flutter and React Native the file is android/app/src/main/AndroidManifest.xml.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove" />
</manifest>

In Expo, block it in your app config instead:

{
  "expo": {
    "android": {
      "blockedPermissions": [
        "com.google.android.gms.permission.AD_ID"
      ]
    }
  }
}

Then test the feature the library provides: if it needed the permission, that feature may stop working.

How do I declare it if I keep it?

If you keep it, answer the Advertising ID question on the App content page, and make your Data safety form consistent with it. The two answers and the merged manifest should all say the same thing.

Common questions

Play Console says my app uses the advertising ID, but I don't use it. Why?
An SDK in your app declares AD_ID and it was merged into your manifest. Remove it with tools:node="remove" if you don't need it, or declare it if you do.
What happens if I remove AD_ID but keep an ads SDK?
On Android 13 and higher, the SDK reads the advertising ID as zeros. Check with your ads provider what that means for your ads before removing it.

Sources

May we use analytics and ad measurement? Analytics (Vercel, and Ahrefs on our public pages) count page views without cookies. Ad measurement lets Google's tag on our public pages see which visits came from our Google ads, using a Google cookie. The site works the same either way. Cookie Policy · How Google uses data ·