Vibeloy
Sign Up
All posts

Blog

What Is app-ads.txt and Where Do You Host It?

Published: Updated: 7 min read

What is app-ads.txt and what problem does it solve?

app-ads.txt is a standard defined by the IAB Tech Lab; it is the mobile-app adaptation of the existing web ads.txt standard, officially named Authorized Sellers for Apps (app-ads.txt). Its purpose is simple: to publicly declare which ad systems, under which publisher IDs, are authorized to sell inventory on behalf of your app.

Without this file, or with incorrect content, malicious third parties can impersonate your app and sell fake or unauthorized ad inventory (app spoofing). This undermines both your ad revenue and advertisers' trust in your app.

As of 2026, AdMob checks the app-ads.txt file on the developer website for every app you link; if the file is missing or incorrect, you will see a warning in the AdMob console, and it can affect your ad fill rate.

File format: anatomy of a line

Each line consists of 4 comma-separated fields: the ad system's domain, your publisher ID within that system, the relationship type, and an optional certification ID. An example line looks like this: google.com, pub-1234567890123456, DIRECT, f08c47fec0942fa0

google.com is the domain of the ad system handling the sale (for AdMob/Ad Manager this is always google.com). pub-XXX is your publisher ID specific to your AdMob account, found in the AdMob console under Settings > Account information. DIRECT means you sell the inventory directly; if it's sold through an intermediary, RESELLER is used instead. f08c47fec0942fa0 is Google's IAB-registered certification ID (TAG-ID) and is constant across all google.com lines — you never need to change this value.

If you use more than one ad network (Meta Audience Network, AppLovin, Unity Ads alongside AdMob, for example), a separate line is added for each network; each has its own domain and publisher ID. A single app's app-ads.txt file can range from a few lines to dozens.

Where does the file go?

The file goes in the ROOT directory of the developer website declared on your store listing: https://yoursite.com/app-ads.txt. A file placed in a subdirectory (e.g. /app/app-ads.txt or /files/app-ads.txt) is not considered valid and cannot be verified.

On Android, this is the developer website field you enter on the Play Console store listing; AdMob and other ad networks crawl that address. On iOS, Apple has no official field equivalent to Play Console's; AdMob instead uses the 'Marketing URL' field on the App Information tab in App Store Connect — which is why it matters to keep a consistent website address in that field.

If you don't have a website, you have two options: set up free static hosting like GitHub Pages and place the file at the root, or let a tool like Vibeloy generate the file and host it on your own subdomain.

AdMob's verification process and the 'limited ad serving' warning

AdMob periodically crawls the app-ads.txt file on the developer website of every linked app. If the file cannot be found, your publisher ID isn't present in it, or the format is wrong (misplaced commas, a missing field, the wrong domain), you'll see a warning in the AdMob console.

This warning doesn't stop ads immediately, but it can lower your fill rate; some advertisers avoid bidding on inventory that appears unauthorized, which reduces revenue. The longer the warning persists, the bigger its impact grows.

After you publish the file correctly, AdMob generally re-crawls within about 24 hours; the warning fully clearing from the console can take a few more days on top of that, and there is no guaranteed way to speed this up. During that window, all you can do is make sure the file stays at the root, accessible, and correctly formatted.

A solution for developers without a website

GitHub Pages, Netlify, or similar free static hosting options are enough to publish an app-ads.txt file, but you still need to connect a domain and manage DNS yourself — for a solo developer, that's maintenance overhead unrelated to the app itself.

Vibeloy's app-ads.txt generator produces a correctly formatted file for free once you enter your AdMob publisher ID (pub-XXX); with a free account you can copy the full file content. If you don't have your own website, automatically publishing the file on your own subdomain (e.g. yourapp.vibeloy.dev/app-ads.txt) is included in the premium plan — you just enter that address in your store listing's developer website field.

Frequently asked questions

Do ads stop entirely without app-ads.txt?
No, not immediately; but you'll see a warning in the AdMob console, and your fill rate can decline over time because some advertisers avoid bidding on inventory that looks unauthorized.
How many lines do I need if I use multiple ad networks?
You need a separate line for each ad network; each has its own domain and its own publisher ID for you. If you use networks like Meta Audience Network or AppLovin alongside AdMob, each one adds its own line.
What is the difference between DIRECT and RESELLER?
DIRECT means you (the app owner) sell the inventory directly — this applies to networks like AdMob that you manage from your own account. RESELLER indicates the inventory is sold through an intermediary or partner network; the ad network's own integration documentation will usually tell you which one to use.
Should I change the f08c47fec0942fa0 value?
No. This is Google's IAB-registered certification ID (TAG-ID) and stays constant across all google.com lines. You never need to change it — only the pub-XXX portion changes, to match your own AdMob publisher ID.
How soon does AdMob notice changes to the file?
AdMob generally re-crawls the file within about 24 hours; the warning fully clearing from the console can take a few more days on top of that. There's no guaranteed way to speed this up — just make sure the file stays at the root, accessible, and correctly formatted.