Quick Answer: ads.txt (Authorized Digital Sellers) is a plain-text file you host at the root of your domain (https://yourdomain.com/ads.txt) that lists which companies are allowed to sell your ad inventory. To set it up, create a text file with one line per authorized seller in the format ad-system-domain, publisher-account-ID, DIRECT or RESELLER, optional certification ID, upload it to your root domain, then validate it with a validator and your ad platform's status check. Update it whenever you add, change, or drop a monetization partner, and review it on a schedule so stale lines do not stay in the file. The current spec, including ads.txt, app-ads.txt, and sellers.json, is maintained by IAB Tech Lab and now lives on GitHub.
What is ads.txt and why does it matter?
ads.txt is a public file that publishers use to declare which sellers can sell their advertising space. IAB Tech Lab introduced it in 2017 to fight domain spoofing, where low-quality or counterfeit inventory is passed off as coming from a reputable publisher. Buyers and their platforms can crawl the file and compare it with who is actually selling the impression.
For publishers, a correct file protects your brand and revenue. For advertisers, it is one of the simplest ways to check that a seller is authorized. Many demand sources will only bid on inventory from sellers they can match to a publisher's file, so errors in the file can quietly reduce your ad revenue.
Which ads.txt specification should you use?
Use the current IAB Tech Lab specification and your partners' official seller records. Version 1.1 introduced OWNERDOMAIN and MANAGERDOMAIN. INVENTORYPARTNERDOMAIN predates 1.1 and should be used only for the inventory-sharing cases described in the specification. Check the official ads.txt resources when implementing or updating your file.
What goes inside an ads.txt file?
Each record has up to four comma-separated fields. The first three are required.
google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0
| Field | What it is | Example |
|---|---|---|
| 1. Advertising system domain | The domain of the SSP, exchange, or ad network | google.com |
| 2. Publisher account ID | Your account ID in that system | pub-0000000000000000 |
| 3. Relationship | DIRECT if you own or control the account, RESELLER if you authorize another party to sell on your behalf | DIRECT |
| 4. Certification authority ID (optional) | The ad system's ID in the TAG registry | f08c47fec0942fa0 |
You can also include variables, one per line, in the form VARIABLE=value:
| Variable | Purpose |
|---|---|
CONTACT | Who buyers can contact about the file |
SUBDOMAIN | Points to a subdomain that has its own ads.txt |
OWNERDOMAIN | The root domain of the inventory owner |
MANAGERDOMAIN | The domain of the party that manages and monetizes the inventory, optionally scoped by country |
INVENTORYPARTNERDOMAIN | A partner whose inventory is included in your monetization (introduced before v1.1) |
Comments start with #. Keep each record on its own line.
How do you set up an ads.txt file? (step by step)
- Collect the lines from each partner. Your ad networks, SSPs, and exchanges provide the exact lines to add. Copy them exactly, since one wrong character can invalidate the line. Do not guess account IDs.
- Create a plain-text file named
ads.txt. Use a text editor, not a word processor, and save it as plain text with standard (UTF-8) encoding. - Add one record per line with your partner entries, and add
OWNERDOMAIN,MANAGERDOMAIN, andCONTACTwhere they apply to you. - Upload the file to the root of your root domain, for example
https://example.com/ads.txt. The file should not be placed in a subfolder. If a subdomain needs its own file, use theSUBDOMAINvariable in the root file to point to it. - Serve it as
text/plainand make sure it loads directly in a browser without a login, a block, or a long redirect chain. - Match your ad code. Adding a line to ads.txt does not place ads by itself. The ad tags still need to be on your pages.
- Validate and wait for crawlers. See the next section.
No authorized sellers yet? If you want to declare that no one is authorized, the spec allows a placeholder record instead of an empty file, such as:
placeholder.example.com, placeholder, DIRECT, placeholder
Hosting on WordPress, Shopify, or a CMS? If you cannot upload to the root, use your platform's built-in ads.txt setting or a plugin, or ask your host to add a redirect to a hosted ads.txt file. Always test the final result at yourdomain.com/ads.txt.
How do you validate your ads.txt file?
Use this checklist after every change.
- Open it in a browser. Visit
https://yourdomain.com/ads.txt. You should see plain text, not an error page or HTML. - Check the status code. The URL should return a successful response (HTTP 200).
- Run a validator. Paste the contents into the IAB Tech Lab validator or another reputable ads.txt checker. Fix errors line by line.
- Check syntax by eye. Look for missing commas, extra spaces, wrong relationship words, smart quotes pasted from a document, and domains with
https://or a path in them. - Check the status in your ad platform. Google AdSense and Ad Manager, for example, report whether they found your file and whether your account lines are present. Resolve any warnings they show.
- Cross-check with sellers.json. Cross-check seller IDs, names, domains and seller types against the actual relationship. DIRECT publisher accounts and RESELLER intermediary accounts represent different entities; not every seller entry should name your publisher domain.
- Re-check after a few days. Crawlers do not read your file instantly. Allow time, then confirm the status has cleared.
What are the most common ads.txt errors?
| Error | What it looks like | Fix |
|---|---|---|
| File not found | 404 at /ads.txt | Place the file at the domain root |
| Wrong location | File only on a subdomain or inside a folder | Host at the root domain, use SUBDOMAIN for subdomain files |
| Missing required field | A line with fewer than three fields | Add the missing field |
| Invalid exchange domain | A typo or a full URL such as https://example.com | Use the bare domain, as the partner provides it |
| Wrong relationship type | Direct account or a blank value | Use exactly DIRECT or RESELLER |
| Wrong or copied account ID | An ID from another account or an old one | Re-copy it from your partner dashboard |
| HTML or formatting garbage | Rich-text characters, stray tags, or a login page returned | Save as plain text and serve as text/plain |
| Blocked or slow file | Security tool, firewall, or robots rule blocks crawlers | Allow access so crawlers can read the file |
| Stale entries | Partners you no longer use are still listed | Remove them in your next review |
How and when should you update ads.txt?
Update the file whenever your seller list changes, not only once a year.
Update right away when you:
- Add a new SSP, exchange, header bidding partner, or ad network
- Change account IDs or move to a new account
- End a partnership or switch to a different reseller
- Launch a new site, subdomain, or app
- Change who manages your monetization (update
MANAGERDOMAIN) - Receive a notice from a partner that its lines have changed
Run a maintenance review on a regular schedule (monthly or quarterly):
- Compare your file with the current lines in each partner's dashboard or documentation.
- Remove entries for partners you no longer work with, and
RESELLERlines you no longer want. - Remove duplicates and fix comments so the file stays readable.
- Keep a change log: who changed what, and when. A comment line with the date is a simple way to do this.
- Re-run validation after every edit, then monitor revenue and platform alerts for the next few days.
Cautions: Never replace the whole file with a downloaded "mega list" without checking it. Extra authorized sellers you do not use weaken the protection ads.txt gives you. Add only partners you actually work with.
What about app-ads.txt and CTV?
- app-ads.txt extends the same idea to mobile and connected TV apps. Because an app has no root domain, the file is hosted on the root of the developer website listed in the app store listing. The format and validation are the same as ads.txt. Check that the developer URL in each store listing matches the site hosting the file, then update the file whenever you change networks or mediation partners.
- CTV publishers should treat ads.txt and app-ads.txt as a baseline. Because CTV supply chains are more complicated, also review sellers.json and the supply chain object so you can see who is actually reselling your inventory.
How can advertisers use ads.txt?
Buyers can use ads.txt to verify sellers before spending.
- Open
domain.com/ads.txtfor the publishers you buy from. - Check that your SSP or agency partner appears with the right relationship type.
- Compare the publisher's
OWNERDOMAINandMANAGERDOMAINwith the seller records in sellers.json. - Prefer
DIRECTpaths for your highest-value inventory, and question long chains of resellers. - Treat missing or inconsistent files as a risk signal. Ask the seller to explain it or choose a different path.
ads.txt helps verify authorized sellers and reduce domain spoofing; it does not guarantee a spoof-free supply chain. It does not stop bots, invalid clicks, or sophisticated fraud on legitimate sites, so keep traffic quality monitoring in place.
FAQ
What is ads.txt?
ads.txt, short for Authorized Digital Sellers, is a public text file on a publisher's root domain that lists the companies authorized to sell its ad inventory.
Where should the ads.txt file be placed?
At the root of the domain, such as https://example.com/ads.txt. Subdomains that need a separate file are pointed to with the SUBDOMAIN variable.
Is ads.txt required?
Not by law, but many advertising platforms and buyers rely on it. Without a valid file, your inventory may attract less demand, and platforms such as AdSense may show warnings about revenue at risk.
How long does an ads.txt update take to take effect?
It depends on each crawler. Allow time after you save changes, and re-check your platform status over the next few days before assuming there is a problem.
What happens if I do not have an ads.txt file?
Buyers cannot verify who is authorized to sell your inventory. Some buyers may avoid your inventory or lower their bids as a result, and unauthorized parties can more easily pass themselves off as sellers of your space.
What is the difference between DIRECT and RESELLER?
DIRECT means you control the account in that ad system. RESELLER means you authorize another party to sell your inventory through their account.
What is OWNERDOMAIN and MANAGERDOMAIN?
OWNERDOMAIN is the root domain of the inventory owner, and MANAGERDOMAIN is the domain of the party that manages and monetizes the inventory. Both were added in ads.txt 1.1 to give buyers more context through sellers.json.
What is the difference between ads.txt and sellers.json?
ads.txt is published by the publisher and lists who may sell their inventory. sellers.json is published by the ad system and lists the sellers it works with. Buyers compare both to confirm the relationship.
What is app-ads.txt?
app-ads.txt applies the ads.txt standard to mobile and connected TV apps. It is hosted on the developer website listed in the app store.
Does ads.txt stop click fraud?
No. ads.txt helps prevent domain spoofing and unauthorized reselling, but it does not stop bots or invalid clicks on legitimate, authorized inventory.
How often should I check ads.txt?
Check it every time your partners change, and run a full review monthly or quarterly. Also check it if your ad revenue drops suddenly.
Quick checklist
- File is at
https://yourdomain.com/ads.txtand loads as plain text - Every line comes directly from a partner you actually work with
- Required fields present,
DIRECTandRESELLERspelled correctly -
OWNERDOMAIN,MANAGERDOMAIN, andCONTACTadded where relevant - Validated with a checker, and ad platform status is clean
- Stale partners and duplicates removed
- app-ads.txt hosted on the developer site listed in the app store
- Review scheduled monthly or quarterly, with a change log
Next Steps
ads.txt is a small file with a big job: it tells buyers who is allowed to sell your inventory. Set it up from your partners' exact lines, validate it, and treat it as a living file that changes whenever your monetization stack does. Keep an eye on the news from IAB Tech Lab, but do not wait for a new standard to clean up the one you have now.
Seller authorization and sophisticated invalid traffic require different checks. Compare Search and Display traffic quality risks when deciding what to measure.
Investigate Your Paid-Click Quality
JuicyTraffic helps advertisers investigate landing-page click quality by campaign, source and placement using a tracking link and an on-site probe. Compare its per-click evidence with ad-platform reports and business outcomes. It does not replace malware protection, a website firewall, impression verification or an A/B testing platform.
References
Related Articles
- SIVT (Sophisticated Invalid Traffic): What It Is, How It Differs From GIVT, and How to Spot It in Your Own Data
- What Is Native Advertising? Examples, Formats and Traffic Quality Risks
- Search Ads vs Display Ads: Which Has More Invalid Traffic?
About the Author
Dylan Dan is the founder of JuicyTraffic. He has spent 15 years specializing in adult advertising and ad-fraud prevention, helping advertisers assess traffic quality, identify invalid clicks and protect media budgets across dedicated ad networks.
