ads.txt & sellers.json, explained.
Two things, in plain English. First, why a clean, current ads.txt protects revenue for publishers. Second, how to read every finding Path Signal returns.
Why ads.txt matters
ads.txt is the publisher's public record of who can sell its inventory. Kept clean, it protects yield. Left stale, it leaks revenue for the publishers.
What is ads.txt, and why does it exist?
ads.txt stands for Authorized Digital Sellers. It's a plain-text file a publisher hosts at the root of its domain, like example.com/ads.txt. Each line names an advertising system that's allowed to sell that publisher's inventory, the publisher's account ID on it, and whether the relationship is DIRECT or RESELLER. The IAB Tech Lab created it to stop domain spoofing, where someone sells counterfeit inventory under a trusted publisher's name. Buyers and exchanges read the file to confirm the supply they're bidding on is genuine.
What is app-ads.txt?
app-ads.txt is the mobile-app version of ads.txt. Instead of a website domain, it's tied to the developer domain listed in the app-store entry, and it authorizes sellers of in-app inventory. The format is identical. Path Signal reads both: paste a domain and it checks ads.txt, then falls back to app-ads.txt when only the app file exists.
What is sellers.json?
sellers.json is the other half of the picture, published by the Supply Side Platform (SSPs) rather than the publisher. It lists every seller account an SSP works with, the seller's domain, and whether that seller is a PUBLISHER (sells its own inventory), an INTERMEDIARY (resells others'), or BOTH. Comparing a publisher's ads.txt against each SSP's sellers.json is how you confirm a declared relationship is real and lines up on both sides. That comparison is what Path Signal's verification does.
Why does a clean, current ads.txt matter to publishers?
Your ads.txt is the only public record of who can sell your inventory, and buyers trust it. Every authorized line is a path a buyer can pay you through. Every stale, duplicate, or unauthorized line is yield drag. Old entries leave the door open for someone to keep selling your inventory long after a relationship has ended, and a bloated file makes it harder for buyers to find the cleanest, highest-paying path to you. Keeping the file current is the cheapest yield protection there is. It costs a text edit.
Why do buyers read your ads.txt?
Before a DSP spends against your inventory, it reads your ads.txt to confirm the seller it's buying through is one you actually authorized. A clean file lets buyers favor your DIRECT paths, which means fewer hops, lower fees, and more of the spend reaching you. A stale or contradictory file makes them hedge instead: bid lower, route around you, or reach you only through a pricier reseller. Supply-path optimization rewards publishers whose records are clear.
What does a stale or bloated ads.txt cost you?
Three things, and none of them are loud. Risk of unauthorized transactions after the relationship is over. Duplicate reseller paths pad your supply chain, which buyers increasingly trim for efficiency. And contradictions between your ads.txt and an SSP's sellers.json push your paths down the queue under supply-path optimization. The leak is quiet by design, which is why it's worth spending a few minutes on an audit.
Reading your findings
Path Signal reads your ads.txt, fetches every connected SSP's sellers.json, and cross-checks each line. Here is how to read what comes back.
cross-check legend
- confirmedSSP record matches your declaration.
- contradicted · domainFiled under a different publisher domain.
- contradicted · typeDifferent seller_type than declared.
- unlistedSSP has no record of the account.
- uncheckedSSP's sellers.json couldn't be read.
relationship
- DIRECTYou hold the account and the SSP pays you directly.
- RESELLERAn intermediary is authorized to sell on your behalf.
What's the difference between DIRECT and RESELLER?
DIRECT means you hold the account with the Supply Side Platform and it pays you directly. That's the shortest, lowest-fee path to your inventory. RESELLER means an intermediary is authorized to sell on your behalf, which adds a hop and usually a fee. Both are legitimate. Buyers tend to favor DIRECT for transparency and cost, but reseller paths extend your demand.
What does the sellers.json cross-check do?
For every line in your file, Path Signal looks up your account ID in that SSP's own sellers.json and compares what each side says. The result is one of five outcomes: confirmed, contradicted (domain), contradicted (type), unlisted, or unchecked. Each one shows as a glyph next to the row and gets tallied in the cross-check panel.
What does “confirmed” mean?
The SSP lists your account ID, and its recorded domain and seller_type match what your ads.txt declares. The path is real and consistent on both sides. Nothing to do.
What does “contradicted” mean (domain vs type)?
The SSP has your account, but its record disagrees with your declaration. This happens two ways. Contradicted by domain means the SSP files the account under a different publisher domain than yours. That's often legitimate when a parent company owns the inventory or a sales house monetizes it (see owner and manager domains below), and sometimes it's just a stale record. Contradicted by type means the SSP records a different seller_type than the relationship you declared, like a DIRECT line the SSP lists as INTERMEDIARY, or the reverse. The type contradiction is the stronger signal, so look at those first.
What does “unlisted” mean?
The SSP has no record of your account ID at all. You say the SSP can sell your inventory, but the SSP doesn't acknowledge the account. Usually that's a stale line to remove, or a mistyped account ID to fix.
What does “unchecked” mean?
Path Signal couldn't read that SSP's sellers.json. It was unreachable, timed out, too large, or the server blocked the request. This isn't a finding about your file; verification just couldn't finish for that row. The confirmed, contradicted, and unlisted outcomes all reflect what an SSP's records actually said. Re-verify later and an unchecked row often clears.
What does “X entries need attention” mean, and what is the fix list?
The amber banner counts the lines that came back contradicted or unlisted, the ones worth acting on. Switch to the fix view and Path Signal groups them by suggested action: remove a stale or unauthorized line, reclassify a mis-declared relationship, or investigate a contradiction you don't recognize. The goal is a file where every line verifies.
What is “inventory ownership” and the owner domain?
ads.txt 1.1 lets you declare the business behind the content domain. OWNERDOMAIN names the entity that owns the inventory. MANAGERDOMAIN names the entity that monetizes it, usually an exclusive sales house, and optionally per country. Path Signal reads both, so when an SSP files your account under a declared owner or manager domain, that counts as a confirmed match instead of a domain contradiction.
- owner domain
- examplenews.com
- managed by
- saleshouse.example · US
What do the four summary cards mean?
These four cards size up the file at a glance. Total entries is every parsed line in the file. Direct is the number of lines declared DIRECT. Reseller is the number declared RESELLER. Unique exchanges is how many distinct SSP domains appear across all the lines. Read them together: a high reseller count against few unique exchanges means the same SSPs reach you through many paths, which is the fan-out covered next.
What is “reseller fan-out”?
For each SSP, this is how many separate reseller paths reach the same inventory. Direct only means one clean account. 1, 2, or 3+ reseller paths means that SSP can reach you through that many intermediaries. Wide fan-out is legitimate, but it's the duplication buyers collapse under supply-path optimization, and every extra reseller path is a place fees pile up.
What is “inventory concentration”?
This is the share of your entries covered by your top 10, 25, and 50 SSPs. Each row is cumulative and nested, so the numbers aren't meant to add up: the top 25 already includes the top 10. Reading down the rows shows how concentrated your demand is. Most publishers find a small set of SSPs covers the bulk of the file, and the long tail is where stale, unverified lines tend to hide. If you have fewer SSPs than a bucket counts, Path Signal collapses the redundant rows into a single “all N SSPs” line, so you won't see top 25 and top 50 both pinned at 100%.
What is “top SSPs by entry count”?
The advertising systems that show up most often across your file, ranked. It's a quick read on which SSPs carry the most paths to your inventory, and so where a single contradiction or stale entry has the widest reach.