Sign in

· pleaseopen.me

ads.txt Explained: Why Your App Needs One (Even Without a Website)

What app-ads.txt is, why ad networks require it, and how to host ads.txt for your app without a website — free under your slug on pleaseopen.me.

app-ads.txt proves to ad networks that your app is really yours, which helps prevent fraudsters from spoofing your inventory. Without it you can see lower fill rates and payouts even though you did nothing wrong. The file has to live on the developer website listed on your App Store or Google Play page — a hassle if you don't have one. pleaseopen.me hosts it for you under your own slug, no website required.

If you monetize your app with ads and you've never heard of "app-ads.txt," there's a good chance you're leaving revenue on the table — or worse, an ad network has already emailed you about it and you weren't sure what they meant.

Here's what it actually is, why it exists, and how to deal with it if you don't have a developer website to host it on.

What app-ads.txt actually does

App-ads.txt is a standard created by the IAB Tech Lab (the industry body that sets technical standards for digital advertising) to fight ad fraud. It's a plain text file that lists every ad network authorized to sell advertising space in your app.

Here's the problem it solves: without it, nothing stops a bad actor from spoofing your app's identity and selling fake "inventory" claiming to be your app to advertisers. Advertisers pay for what they think is a slot in a popular app, but the traffic is fabricated or comes from somewhere else entirely. This is a real, large-scale fraud category in mobile advertising, and it costs advertisers money — which is why ad networks care about it, and increasingly, why they'll pay less (or nothing) for your inventory if you don't have this file set up correctly.

The mechanism is simple: when an ad network gets a bid request that claims to come from your app, it checks the developer website listed on your app's store page, looks for an app-ads.txt file there, and confirms your app's publisher ID appears in it. If it doesn't match, the ad network can treat the traffic as suspicious and refuse to bid on it — which, in practice, can mean lower fill rates and lower eCPMs for you, even though you did nothing wrong.

What the file actually looks like

It's a plain text file, one line per authorized ad network, formatted roughly like this:

  • google.com, pub-3940498599942544, DIRECT, f08c47fec0986fa0
  • applovin.com, 9eaf9ad6dc92d5fcn6f47c30168fb8fq, DIRECT
  • mintegral.com, 19435, DIRECT, 0aeed123c80d6423

Each line has: the ad network's domain, your publisher/account ID with that network, the relationship type (DIRECT if you work with them directly, RESELLER if through an intermediary), and optionally a certification ID the network provides.

Every ad network you use — AdMob, AppLovin, Unity Ads, Mintegral, and so on — will give you the exact line to add for your account. You just need somewhere to host the combined file.

The part that trips up solo developers: you need a website

This is where it gets annoying if you're a solo developer who's never built a marketing site. Both app stores require a "developer website" URL on your store listing, and that's the domain ad networks check for your app-ads.txt file. If you don't have a website — which is extremely common for solo and small-team developers — you're stuck creating one just to host a single text file.

A few ways developers typically solve this:

  • Spin up a minimal personal or company site and host the file at the root (yoursite.com/app-ads.txt). Overkill if all you need is this one file, but reusable for other things (like your privacy policy).
  • Use a free static hosting option (GitHub Pages, Netlify, Vercel) purely to serve the file. Works, but you're now maintaining infrastructure for a text file.
  • Use a service designed for exactly thispleaseopen.me lets you host both your privacy policy and app-ads.txt under a slug without owning a domain, which is usually the fastest path if you don't already have a website for other reasons.

Whichever route you pick, the file has to be served with Content-Type: text/plain and UTF-8 encoding, or some ad networks' crawlers won't parse it correctly — a common silent failure point.

Keeping it updated

The file isn't "set once, forget forever." Every time you add a new ad network or mediation partner, you need a new line. Miss one, and that network may not bid on your inventory at all, or may bid at a steep discount because it can't verify you as an authorized seller. If you run multiple apps, each one typically needs its own app-ads.txt entries matching that specific app's monetization setup — easy to lose track of manually once you're maintaining more than one or two apps.

Common mistakes

  • Hosting it at the wrong location. It needs to be reachable from the developer website listed on your app store page — typically yoursite.com/app-ads.txt, not nested in a random subfolder.
  • Copy-pasting another developer's file. The publisher IDs are account-specific. Using someone else's ID doesn't authorize you — it just means the ad network sees a mismatch and neither of you gets paid correctly.
  • Forgetting to update it after switching ad networks or mediation platforms. This is the most common reason developers see a sudden, unexplained drop in fill rate after making changes to their monetization stack.
  • Not having one at all. Some networks will still serve ads without it, just at reduced rates, since you're a higher-risk, unverified inventory source in their eyes.

How to set it up on pleaseopen.me

You don't need to buy a domain or stand up a site just to prove your inventory is authorized. Claim a free slug, paste the seller lines your ad networks give you, and put that pleaseopen.me URL in the developer website field on your store listing. That's the whole setup, and it's completely free.

From there:

  • App Store Connect / Play Console — set your developer website to your pleaseopen.me slug so crawlers can find the file.
  • Ad networks — copy the exact app-ads.txt line each network provides (AdMob, AppLovin, Unity, Mintegral, and so on) into your page.
  • Privacy policy — the same slug can host the policy Apple and Google also require. See what indie developers actually need in a privacy policy.

The same pleaseopen.me URL also unblocks App Store links that fail inside TikTok and Instagram — so one developer website covers store listing, ads authorization, and social bio clicks.

FAQ

What is app-ads.txt? A public file, created by the IAB Tech Lab, that lists which ad networks are authorized to sell ads in your app. Networks use it to fight inventory spoofing.

Is ads.txt the same as app-ads.txt? ads.txt is the original web standard. app-ads.txt is the mobile-app version. App stores and ad networks look for app-ads.txt on your developer website.

Do I need app-ads.txt if I only use AdMob? Yes if you want full fill rates. AdMob and other networks may still serve ads without it, often at a discount, because they can't verify you as an authorized seller.

Where do I host app-ads.txt without a website? Put your store listing's developer website on a slug such as pleaseopen.me and host the file there — no separate domain required.

Does a privacy policy replace app-ads.txt? No. One discloses user data practices; the other authorizes ad sellers. Most ads-supported apps need both.

Bottom line

If your app runs any ads and you don't have an app-ads.txt file set up, it's worth the twenty minutes it takes to fix — the downside is small, and the upside (better fill rates and eCPMs, plus not looking like fraud-adjacent inventory to advertisers) is worth it for any app doing meaningful ad volume.

pleaseopen.me takes a couple of minutes to set up and is free.

Get started on pleaseopen.me for free

Claim a slug in about a minute — use it as your App Store link, developer website, privacy policy URL, and app-ads.txt host.

Get started on pleaseopen.me