Which ads.txt errors matter to a buyer, and which should stop a deal?
Part of Supply path transparency

The short answer
ads.txt errors range from cosmetic to blocking. A duplicate line or missing contact is a warning. A wrong field count, malformed account ID or bad relationship value can stop a line working, and a redirect chain or corrupt file can stop the whole file. A deal should pause when the seller it relies on is no longer authorized.
Key takeaways
- Google's Ad Manager tools sort ads.txt problems into errors that stop parts of the file from working and warnings that do not.
- The specification tells crawlers to ignore a file that is obviously corrupted or malformed, so one bad edit can cost every line.
- Google's own help pages disagreed in October 2026 on whether a second redirect inside the same root domain is followed.
- A fixed file is not read at once: the specification's default expiry is 7 days, and Google crawls about once a day.
- Only errors that touch the seller on the deal's own path are a reason to stop the deal.
Which errors can an ads.txt file contain?
Hand editing can introduce errors: a partner sends a product code instead of an account ID, someone types RESELLLER, and a year later the file still lists an exchange the site dropped. Google's Ad Manager syntax guide (opens in a new tab) marks rows red when the problem will stop parts of the file from working as expected, and yellow for issues that will not necessarily stop it. The table follows that split and adds problems a validator cannot see.
| Error | How it shows up | What it means for a buyer |
|---|---|---|
| Wrong number of fields | A record with two fields, or five; Google requires exactly 3 or 4 comma separated fields on every non-comment line | That line authorizes nobody. If it names the seller on your path, the path is unauthorized |
| Malformed account ID | For Google accounts, anything but pub- plus 16 digits, such as a leftover ca- or ca-video- prefix | The ID will not match bid requests, so that seller reads as undeclared |
| Bad relationship value | Field 3 is not DIRECT or RESELLER, for example a typo or a word like PARTNER | The relationship is unreadable; ask which one the publisher meant |
| Wrong ID for the right exchange | The system domain is correct but the account number belongs to another account | Google says it runs no auction for a request when its own ID in the file is incorrect |
| Stale line | An exchange or reseller the publisher no longer works with is still listed | The file still authorizes a seller the publisher has dropped |
| Mislabeled DIRECT | A reseller's account listed as DIRECT | A path looks shorter than it is until sellers.json is checked |
| Duplicate line | The same record appears twice | Cosmetic; Google lists it as a warning |
| No contact line | No CONTACT variable anywhere in the file | Cosmetic, but there is no one to ask when another error appears |
The last four rows pass a syntax checker without comment. A stale or mislabeled line is well formed but wrong about the business. IAB Tech Lab's ads.txt 1.1 implementation guidance (opens in a new tab) asks publishers to validate that all DIRECT entries reference seller accounts they have direct account control of, the check that catches both.
How does a syntax error affect an ads.txt file?
The ads.txt 1.1 specification (opens in a new tab) asks crawlers to be forgiving about some things and strict about others. Consuming systems should ignore any sequence of whitespace or tabs and accept CR, LF or CRLF line endings. But if the data is obviously corrupted or malformed, the specification says the contents of the file should be ignored. That is the difference between a bad line, which costs one authorization, and a bad file, which costs all of them.
- The # character ends the data on that line. The specification says any line containing # should tell the consumer to ignore everything after it, so a stray # inside an account ID silently truncates the ID.
- Fields may not contain tabs, commas or spaces. Anything of that kind should be URL encoded, otherwise the field count changes.
- Invisible characters break parsing. Google's crawl guidance (opens in a new tab) warns that invalid whitespace characters may be hard to detect but can get a file ignored, and advises against pasting from a rich text editor.
- Variables need the equals sign. A variable line takes the form VARIABLE=VALUE, and the specification names the equals sign as the only supported separator.
What happens when an ads.txt file redirects?
Redirects are allowed within limits, and Google's documentation describes those limits in two ways. The specification lets crawlers follow any number of redirects that stay within the original root domain, plus a single redirect to a third party domain for hosting. Google's Ad Manager ads.txt FAQ (opens in a new tab) agrees, listing example.com to www.example.com and to a subdomain as supported. Google's crawl guidance, checked the same day in October 2026, says that if a second redirect is included, even if it's for the same domain, the file will not be crawled.
| Redirect pattern | Specification | Google help pages |
|---|---|---|
| domain.com to www.domain.com | Followed, same root domain | Supported; crawling starts at the root domain |
| HTTP to HTTPS on the same domain | Followed, same root domain | Supported, though Google also asks for the file on both protocols |
| One hop to a hosting partner's domain | Allowed once, as delegation | Supported |
| Two hops, both inside the root domain | Followed | The FAQ says supported; the crawl guidance says not crawled |
| Second hop after leaving the root domain | Treated as an error | Not crawled |
For a buyer, the safe reading is the strict one. If a site's file sits two hops away, ask the publisher to point the root address straight at the final location, then confirm in the platform's authorization status that the file is read.
How long do buyers cache an ads.txt file?
Every consuming system keeps a copy, which is why an error and its fix both take time to show. The specification says systems that cache the file must periodically verify the copy is fresh, should respect HTTP cache-control and Expires headers, and should default to an expiry of 7 days when no directives are present. When a later fetch fails with an error other than 404, they should keep using the last successfully retrieved data.
| Event on the publisher's server | Specification | Google, per its Ad Manager help pages |
|---|---|---|
| File updated | Picked up when the cached copy expires; default 7 days | Crawled about every 24 hours; changes may take up to 48 hours |
| Hard 404 on a file seen before | No declarations exist | Previous entries purged |
| Soft 404 (a normal page at the address) or server error | Keep the last good data for non-404 errors | Previous entries kept for up to five days |
| 404 on HTTP or HTTPS only | HTTPS data preferred when both exist | A 404 on either protocol purges previous entries |
Two consequences follow. A publisher that breaks its file may keep delivering for days on cached data, then stop at once. And a fix may take several days to reach buyers' platforms; Google's AdSense troubleshooting page (opens in a new tab) says verification can take up to a month for a site with few ad requests.
Which ads.txt errors should stop a deal?
Judge an error by whether it touches the path the deal actually uses. Google's Display & Video 360 help (opens in a new tab) says the platform checks every seller identified in the bid request's SupplyChain object, intermediaries included, against the publisher's file and automatically excludes unauthorized sellers. An error on the deal's own seller line therefore stops delivery whether or not anyone pauses the deal. An error on a line the deal does not use leaves that path unaffected.
ads.txt error checklist before a deal goes live
- The exchange domain and seller account the deal uses appear on one well formed line with 3 or 4 fields.
- That account ID matches the ID in the exchange's sellers.json exactly, with no stray prefix, space or # character.
- The relationship on that line agrees with the seller_type the exchange reports, or the publisher has explained the difference.
- Every intermediary in the deal's supply chain is declared in the file, since unauthorized intermediaries are blocked too.
- The root address returns the file with HTTP 200 on both HTTPS and HTTP, in no more than one redirect.
- No line authorizes a partner the publisher says it has dropped.
- The file has a CONTACT line, or the publisher has named an ad operations contact for the deal.
- The date of the check is recorded, along with the platform's last crawl time if it shows one.
What does an ads.txt error review look like on a real plan?
Fictional example
A window blinds retailer in Michigan
A fictional retailer of custom window blinds and shades, with showrooms in Detroit and Grand Rapids, asks its agency for a private marketplace deal on 30 home decor, interior design and local lifestyle sites. Before the deal is set up, the trading desk runs every site's file through the checklist.
Twenty-six files are clean or carry only warnings: four have duplicate lines and nine have no contact line, which the planner notes. A home decor blog's line for the deal's exchange has five fields, so that seller reads as undeclared; it is graded stop until the publisher corrects it.
An interior design magazine serves its file through two redirects inside its own domain, which one Google page accepts and another does not, so it is graded hold until the publisher shortens the chain. Two lifestyle sites still list a reseller they dropped last spring; the deal runs on their direct lines, and the stale entries go on the renewal list.
How does PlacementGraph show ads.txt problems on a site list?
PlacementGraph reads each candidate's file and reports the selling path in plain words.
Frequently asked questions
Does a missing CONTACT line make an ads.txt file invalid?
No. CONTACT is an optional variable in the specification, and Google's Ad Manager tools show a missing contact as a yellow warning, not an error. It still matters in practice: when a buyer finds a real error, the contact line is the fastest way to reach the person who can fix it.
Should an ads.txt file declare which version of the specification it follows?
No. The specification says a version number and a last updated date are not official variables, and that there have been no breaking changes since ads.txt was created in 2017. Crawlers judge freshness from the Last-Modified header and a checksum of the contents, and support new variables as they appear.
Do exchanges warn publishers about ads.txt errors?
The specification suggests they should. It recommends that exchanges provide a tool that generates the exact lines a publisher needs, and that they consider crawling publisher domains and notifying publishers when a file or a declaration is missing. Google's Ad Manager shows errors and warnings per row in its ads.txt management tool.
Are app-ads.txt errors read the same way?
Largely yes. Google's Ad Manager syntax guide applies the same errors and warnings to ads.txt and app-ads.txt files. The extra failure point for apps is the store listing: the developer website named there must be a valid URL, and Google warns that the file should not sit on a subdomain.
Sources
- ads.txt Version 1.1 specification (opens in a new tab)IAB Tech Lab, 2022 (GitHub)
- Ads.txt Implementation Guidance (ads.txt 1.1) (opens in a new tab)IAB Tech Lab (GitHub)
- Validate ads.txt/app-ads.txt syntax (opens in a new tab)Google, Ad Manager Help
- Ensure ads.txt/app-ads.txt can be crawled (opens in a new tab)Google, Ad Manager Help
- ads.txt/app-ads.txt FAQs (opens in a new tab)Google, Ad Manager Help
- Authorized Digital Sellers (opens in a new tab)Google, Display & Video 360 Help
- Resolve common ads.txt issues (opens in a new tab)Google, AdSense Help
Researched and written by PlacementGraph Research. Read how we research, source and update these pages. Corrections: diana@placementgraph.com.