Skip to content
AppFoyer
Start free

Guides app-ads.txt

Why AdMob says your app-ads.txt was not found

How ad-network crawlers find the file, the six things that usually stop them, and how to tell a real problem from a crawl that has not run yet.

A not-found result is almost always mechanical: no developer website in your store listing, a URL pointing where the file is not, a redirect, the wrong content type, a malformed line, or a crawl that has not run yet — AdMob allows 24 hours. Files on AppFoyer subdomains are verified by AdMob.

1:09
1:09 video · opens on YouTube

Do this in a few minutes instead

AppFoyer hosts the pages this guide is about — privacy policy, terms, support, account deletion and app-ads.txt — on their own subdomain, with no domain or server of your own. One app is free, and nothing a store requires is ever behind a paywall.

Checked 12 October 2026. Store policies change, sometimes without notice. Everything below links to the official documentation, and that page — not this one — is the authority. If the two disagree, the store is right.

When a network reports app-ads.txt as not found, it is almost always one of six mechanical causes: no developer website in the store listing, a website URL that points somewhere the file is not, a redirect in front of the file, the wrong content type, a malformed line, or a crawl that simply has not run yet. None of them are about your app, your account or your ad units.

app-ads.txt is an IAB standard that lets an ad network confirm that whoever is selling your app’s inventory is authorised to do so. The network finds it through the website URL printed in your store listing — which is why the causes above are all about that URL rather than about the app.

How the crawler finds the file

The chain has three links, and a break in any one produces the same message:

  1. The network reads the developer website URL from your store listing.
  2. It fetches /app-ads.txt at the root of that domain.
  3. It looks for a line naming the network and your publisher id.

So the file is not found via your app, your package name, or your AdMob account. It is found via the website URL printed in the store listing. Get that wrong and nothing else matters.

The six usual causes

No website URL in the listing. The most common one. If the store listing has no developer website, the crawler has nowhere to start. On the App Store that field is the optional Marketing URL, not the required Support URL — see app-ads.txt for iOS apps.

The URL points somewhere without the file. The listing says example.com but the file is on www.example.com, or on a page path rather than the domain root.

A redirect. The specification expects the file to be served directly. A chain of redirects — even http → https, or apex → www — is a frequent cause of failure. Serve it at 200, at the address the listing names.

The wrong content type. It must be served as plain text. A file served as text/html, or a hosting platform that wraps it in a page, will not parse.

A typo in the line itself. The format is strict — domain, publisher id, relationship, certification id — and a missing comma or a stray space breaks the line.

The crawl simply has not run yet. Networks re-crawl on their own schedule, typically measured in days rather than minutes. A file uploaded an hour ago showing as missing is usually just early.

How to check it yourself in ten seconds

curl -i https://your-domain.example/app-ads.txt

You want 200 OK, Content-Type: text/plain, no Location: header, and your lines in the body. If curl is happy and the network still is not, the problem is upstream: the URL in the listing, or the crawl schedule.

A note on subdomains

The specification refers to the root of the domain declared in the store listing, and a subdomain has its own root. Serving the file from yourapp.example.page/app-ads.txt is therefore spec-legal when that exact address is what the listing declares.

AdMob documents the rule this relies on: its crawler “probe[s] up to one subdomain level from the developer website”, and it names platform hosting such as Firebase Hosting as an acceptable place for the file.

AdMob verifies files on AppFoyer subdomains. In October 2026 AdMob reported “app-ads.txt file found and verified” for apps on both stores whose developer website is an AppFoyer address. An earlier crawl, on 23 September 2026, had reported one of those same apps as not found; it now passes with nothing changed on our side. If AdMob says “not found” for your AppFoyer address, go through the causes above and give the crawl its 24 hours. We have no crawl result of our own from other ad networks yet.

What AppFoyer does here

We serve the file as plain text with no redirect and the headers the specification asks for, give you presets for the common networks, and validate each line as you type it. We do not promise that a given network will accept it — see the paragraph above.

The authoritative sources