Blog

Ads.txt for Crypto Publishers: What It Is and When It Matters

2026-08-10 · 5 minute read

Every ad network's help centre tells you to add an ads.txt file. Almost none of them tell you what it does, and none of them tell you when it makes no difference.

What it is

ads.txt is a plain text file at the root of your domain, at https://yoursite.com/ads.txt. It lists which companies are allowed to sell your ad inventory. A line looks like this:

praxads.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0

That reads: praxads.com may sell this site's inventory, our publisher id is that string, the relationship is direct rather than resold, and the last field is the seller's certification id.

A buyer who wants to be careful fetches your ads.txt before bidding. If somebody offers them your inventory and they are not in your file, the buyer knows the offer is not legitimate.

The problem it was built for

Domain spoofing. A fraudster claims to be selling impressions on a well-known site, sells them to a buyer at that site's rates, and serves the ads on worthless inventory. The buyer pays premium prices for junk, and the real site earns nothing but takes the reputational hit when the advertiser works out what happened.

Ads.txt closes that specific hole, and it closed a lot of it. Domain spoofing at scale is much harder than it was.

When it actually matters for a crypto publisher

When you sell programmatically through an exchange. If your inventory reaches buyers through an ad exchange or SSP, a missing ads.txt will cost you bids. Some demand-side platforms will not buy unauthorised inventory at all.

When you work with more than one network. The file is where you declare all of them. A network that finds itself missing from your file may treat your inventory as unauthorised.

When a buyer is doing brand-safety diligence. Larger advertisers check. A missing file is a small negative signal at exactly the moment you want to look professional.

When it does not matter

This is the part that is usually left out.

Direct relationships. If a network sells your inventory to advertisers it has a direct contract with, and nobody is bidding through an exchange, nothing in the chain looks at your ads.txt. This describes a good deal of crypto advertising, which is still substantially direct-sold.

Small sites with one network. If you run one tag from one network on one site, ads.txt prevents a fraud that nobody is currently attempting against you.

Fixing a fill rate problem. Adding ads.txt will not raise your CPMs. If a network tells you it will, ask them to explain the mechanism.

Adding the file is ten minutes of work and it never hurts. But if somebody has told you it is why your revenue is flat, they are wrong, and the real reason is worth finding.

How to write one

Create a plain text file. Not HTML, not a page in your CMS that renders a template. A buyer's parser fetches the raw file and a site that answers every path with its homepage will fail the check while looking fine in a browser.

Put one line per seller, in the format above. Your network gives you the exact line, including their publisher id for you. Do not invent it.

Add DIRECT for networks you deal with directly and RESELLER for ones authorised to resell. If you do not know, ask the network rather than guessing.

Comments start with #. Use them, because in a year you will not remember why a line is there.

Then check it: open https://yoursite.com/ads.txt in a private window. You should see text, not a page. Our monetization checker verifies the same thing and tells you specifically whether the file parses rather than only whether something answered.

Two mistakes worth avoiding

Leaving old networks in. A line for a network you stopped working with two years ago authorises them to sell your inventory. Remove it when the relationship ends.

Putting it behind a redirect or a login. The file has to be publicly readable at the root of the domain, over HTTPS, with no redirect chain. Subdomains need their own.

The summary

Ads.txt is a low-cost, low-drama piece of hygiene. Add it, keep it accurate, and do not expect it to change your revenue. The industry oversells it because it is one of the few unambiguously good things it has done in a decade, and publishers undersell their actual problems because ads.txt is easier to fix than placement, viewability and audience geography.

What a crypto publisher's file usually looks like

Most crypto sites run one or two networks, so the file is short. A real one for a site running PraxNet and one other network is four lines:

# PraxNet, direct, added 2026-08
praxads.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0

# Coinzilla, direct, added 2025-11
coinzilla.com, 12345, DIRECT

The last field on the first line is a certification authority id. Not every seller has one and it is optional; use whatever your network gives you and do not invent one, because a wrong value is worse than an absent one.

If you run subdomains that carry ads, each one needs its own file, or you use the SUBDOMAIN= directive in the root file to point at them. Most crypto publishers do not need this. If you are not sure whether you do, you do not.

The sellers.json half nobody mentions

Ads.txt says which companies may sell your inventory. sellers.json is the other side: it is published by the network, and it says which publishers they sell for. A careful buyer checks both and looks for them to agree.

You do not publish a sellers.json. But it is worth knowing it exists, because if a network's sellers.json does not list you while your ads.txt lists them, a buyer doing the full check sees a mismatch and may discount the inventory. If you have added a network to your file and your revenue from programmatic buyers has not moved in a month, that is a reasonable thing to ask them about.

Checking it properly

Three things, in order:

Fetch it as a machine would. curl -sI https://yoursite.com/ads.txt and look at the status and the content type. You want a 200 and text/plain. A text/html content type means your framework is serving a page.

Check there is no redirect. The spec allows exactly one redirect, and only to the same root domain. A chain of two, or one that lands on a different domain, is treated as no file at all by most parsers.

Check the subdomain you actually serve from. If your articles live on blog.yoursite.com, that host needs its own ads.txt or a SUBDOMAIN directive pointing at it. This is the single most common way a file that looks correct does nothing.

Those three are where the money is. We wrote about them in Crypto CPM Rates 2026.


More writing for publishers