Skip to content
whichadnetwork
Guide

ads.txt and sellers.json, explained for publishers who just want to get paid

Two plain text files decide whether buyers will bid on your inventory at all. Most publishers never open either, because their ad network manages both — which is fine until the day something in them is wrong.

1 August 2026 · 9 min read

Around a decade ago the advertising industry had a fraud problem it could not argue its way out of. Anyone could claim to be selling inventory on a well-known publisher’s behalf, and buyers had no way to check. The response was not a technology or a regulator. It was two text files.

We read both, at scale, every day — 38,758 network–site relationships across 39,459 sites are assembled from nothing else. So this is a working practitioner’s account rather than a summary of the specification.

ads.txt: the publisher’s declaration

ads.txt sits at the root of your domain — yoursite.com/ads.txt — and lists every advertising system authorised to sell your inventory. Buyers fetch it before bidding. If a seller offers them your inventory and is not named in your file, a compliant buyer treats the offer as fraudulent and declines it.

Each line has four fields, comma-separated:

google.com, pub-1234567890123456, RESELLER, f08c47fec0942fa0

  • The advertising system’s domain. Where bids are handled — not necessarily the company you have a contract with.
  • Your account id with that system. The seat your inventory is sold under. This is the field that matters most, and the one most often wrong.
  • DIRECT or RESELLER. DIRECT means you have the relationship yourself; RESELLER means the named system is authorised to resell on behalf of someone who does. Managed network lines are usually RESELLER, which surprises publishers who expect DIRECT.
  • The certification authority id. An optional identifier for the system in the industry’s registry. Harmless if absent, useful for disambiguation when present.

What a real file looks like

Longer than you expect. A site on a managed network typically carries several hundred lines, because the network adds its entire demand stack at once — every exchange it works with, each under its own seat. The network’s own domain frequently does not appear anywhere in the file.

That last point trips up nearly everyone trying to identify a site’s network from its ads.txt alone. The file names the exchanges that touch the inventory, not the partner managing it. Identifying the manager requires the other file.

sellers.json: the network’s declaration

The same transparency rule runs in the opposite direction. Every advertising system publishes sellers.json at its own root — network.com/sellers.json — listing the sellers it represents and the account id each one holds. Where ads.txt is one file per publisher, sellers.json is one file per network, which is why it is the file that makes indexing an entire market possible.

Each entry carries a seller id, the seller’s domain, and a type: PUBLISHER where the seller owns the inventory, INTERMEDIARY where it is passing it on, or BOTH. Sellers may also be marked confidential, in which case the domain is withheld — legitimate under the specification, and a real limit on any index built from these files, ours included.

The mistakes that cost publishers money

Because buyers actually enforce these files, an error in yours means bids that never arrive. The failure is silent: nothing breaks, no warning appears, revenue is simply lower than it should be. These are the ones we see most often across the index.

  • Serving it with the wrong content type or a redirect. The file must be reachable as plain text at the exact root path. A site that returns HTML, a 301 to a marketing page, or a soft 404 has, as far as any buyer is concerned, no ads.txt at all.
  • Forgetting subdomains. A file at the root does not automatically cover shop.yoursite.com. Inventory on a subdomain needs its own file or a valid delegation.
  • Leaving a departed network’s lines in place. Old seats stay authorised, which is both a small fraud exposure and a source of confusion for anyone trying to work out who runs your site — including us.
  • Hand-editing a network-managed file. If your network maintains the file, your edits will be overwritten at the next update, and any line you added that it does not know about will disappear without notice.
  • Blocking the crawlers that read it. Aggressive bot rules sometimes catch the verification crawlers buyers use. The file exists, and nobody can fetch it.

Checking your own, in about ten minutes

  • Open yoursite.com/ads.txt in a private window. You should get plain text, no redirect, no styling. Check the response is a 200.
  • Find your network’s block. Note the account ids it uses for you — they are the thing buyers match on.
  • Open your network’s sellers.json and search it for your domain. The seller id there should correspond to the account ids in your file. If your network appears nowhere and lists you nowhere, the relationship is invisible to buyers.
  • Look for lines from networks you no longer work with and ask your current network to remove them.
  • Repeat for any subdomain that serves advertising.

If you would rather not do this by hand, every site we index has a page here showing the networks detected on it and the evidence behind each match. Search your domain from the home page.

Why one-sided listings are so common

A substantial minority of every network’s published roster is never confirmed by the publisher side, and it is worth understanding why before reading anything sinister into it. Resellers legitimately never appear under their own name in a publisher’s file. Agencies place several publishers under one shared seat. Networks are slow to prune sites that have left, so a publisher who switched last year can sit in the file indefinitely.

Only the last of those is a problem, and it is the common one. We wrote up how to tell the cases apart in why a network lists a site that is not running its ads, and the per-network confirmation rates are in how to verify a network’s publisher claims. Because we read the files daily, we can also see them change: our ad network market share report tracks which networks gained and lost publishers each month.

The short version

ads.txt is you saying who may sell your inventory. sellers.json is a network saying whose inventory it sells. Buyers check that the two agree, and inventory whose paperwork does not line up gets bid on less, or not at all.

You do not need to maintain either by hand — your network almost certainly does it for you. You do need to be able to open them and tell whether they say what you think they say, because when they are wrong nothing announces it.

Common questions

What is ads.txt?

A plain text file at the root of your domain in which you declare which advertising systems are authorised to sell your inventory, and under which account ids. Buyers fetch it before bidding, and inventory offered by a seller not named in your file is treated as unauthorised. It exists to stop fraudsters reselling inventory they do not have.

Do I need an ads.txt file?

If you sell advertising programmatically, yes — without one, compliant buyers cannot verify that whoever is offering your inventory is entitled to, and many will not bid. If a managed network runs your ads, it almost certainly maintains the file for you, but it is still worth being able to check that the file is reachable and correct.

What is the difference between DIRECT and RESELLER?

DIRECT means you hold the account with that advertising system yourself. RESELLER means the named system is authorised to sell your inventory on behalf of someone who holds the direct relationship. Lines added by a managed network are usually RESELLER, which surprises publishers who assume DIRECT indicates a better arrangement. It does not — it describes the contractual path, not the quality.

What is sellers.json?

The mirror image of ads.txt, published by advertising systems at their own root. It lists the sellers a system represents and the account id each one holds, so a buyer can trace an offer back to a named publisher. Because it is one file per network rather than one per site, it is what makes indexing a network's entire publisher roster possible.

Why is my ad network not listed in my own ads.txt?

Because managed networks sell through upstream exchanges, and it is those exchanges that appear in your file — under seats belonging to the network. Your network's own domain often appears nowhere. This is normal, and it is why identifying a site's network from its ads.txt alone does not work.

How often should ads.txt be updated?

Whenever your partners change. If your network manages the file it will update on its own schedule — often weekly. The thing to check periodically is not freshness but accuracy: that the file is still reachable, still plain text, and no longer authorising a network you left.

Every figure on this page is read from our own index when the page is built, and refreshes on a weekly cycle — so the numbers move as the data does. Method and evidence rules: coverage & method.

Read next

Data
The best ad networks for home and garden blogs: a genuine three-way split

Home and garden is the only large category where two premium networks and the industry’s widest-funnel network all hold comparable share. Here is why, and what it means for where you apply.

6 min read
Data
Is Mediavine hard to get into? The roster says less than its reputation does

Mediavine has the strictest reputation in independent publishing. Measured by the publishers it actually carries, several networks are more selective — and the reason why is more interesting than the ranking.

6 min read
Data
The best ad networks for craft and DIY blogs: the premium end of the long tail

Crafts and DIY is a mid-sized category with premium-category authority, and the open-funnel networks hold a much smaller share of it than their size elsewhere would predict.

6 min read