Ads.txt — how it works & why it matters

By  AdPresso
Last updated December 10, 2025

In the programmatic ecosystem, ads.txt tackles one of the most persistent and costly problems: ad fraud. Fraudsters siphon billions of dollars every year by selling fake inventory, misrepresenting domains, or inserting themselves into supply chains where they absolutely don’t belong. For publishers, this means lost revenue, diluted reach, and a bidding environment where legitimate impressions compete with counterfeits.

Ads.txt takes a refreshingly simple approach to this complex problem. As a publicly accessible text file placed at the root of your domain, it allows buyers to verify whether a platform is genuinely authorized to sell your inventory. For anyone running programmatic ads — including WordPress publishers using AdSense, ad networks, or SSPs — providing an ads.txt is recommended for stable monetization.

This guide offers a comprehensive walkthrough of what ads.txt is, how it originated, and why publishers benefit from keeping it clean, complete, and up to date.

Definition of ads.txt and its core purpose

At its core, ads.txt is an industry standard that lets publishers publicly declare which companies are officially authorized to sell their digital ad inventory. The acronym stands for Authorized Digital Sellers, and the purpose is straightforward: bring transparency to the programmatic supply chain by publishing a verified list of trusted sellers.

The IAB Tech Lab developed and maintains the ads.txt standard as the central technical specification for programmatic advertising. Thanks to broad industry support, ads.txt has become one of the most widely adopted tools for reducing fraud and improving supply-chain visibility that DSPs, SSPs, exchanges, and publishers rely on to maintain trust.

How ads.txt evolved

Ads.txt emerged as a response to real threats: domain spoofing and falsified reach. Before its introduction, fraudsters could claim to sell inventory from premium publishers while delivering ads on low-quality or fabricated sites. Advertisers often bought spoofed inventory unknowingly.

The IAB Tech Lab released ads.txt in 2017, and it has since evolved to include app-ads.txt, extending the same principles to mobile apps and OTT environments. Over time, ads.txt became embedded in programmatic buying logic — DSPs now routinely check it to validate authorized sellers before bidding.

How ads.txt relates to sellers.json and the SupplyChain object

Ads.txt sits alongside two other essential transparency initiatives: sellers.json and the SupplyChain object (schain). While all three address similar challenges, each plays a different role in the verification process.

  • ads.txt: publisher-hosted, specifies who is authorized to sell a domain’s inventory.
  • sellers.json: platform-hosted, identifies which publishers and intermediaries an SSP or exchange represents, including whether they act as direct sellers or resellers.
  • The SupplyChain object: appears in the bid request itself and documents the actual path an impression takes, including all intermediaries involved in real time.

Together, these tools form a multi-layered transparency framework: domain-level authorization, platform-level disclosure, and impression-level verification. For buyers, this provides a much clearer picture of how inventory flows through the ecosystem. For publishers, it adds structural protection against misrepresentation.

Which problems does ads.txt solve?

Domain spoofing

Domain spoofing is one of the most damaging forms of ad fraud. Here, bad actors misrepresent their inventory as belonging to high-quality domains — even though they serve the actual impression elsewhere. Without a mechanism to validate seller identities, buyers frequently overpay for inventory that does not meet brand safety, quality, or reach expectations.

Ads.txt allows DSPs to cross-reference sellers against a trusted, publisher-owned source. If a seller is not listed, buyers can automatically avoid bidding, eliminating a large portion of spoofed inventory.

Arbitrage and complex reseller chains

Another widespread issue is the uncontrolled resale of inventory within opaque arbitrage networks. A single impression may pass through multiple intermediaries, each adding margin without adding value. This ad flow creates inefficiency, disrupts pricing, and complicates reporting.

Because ads.txt requires publishers to explicitly declare DIRECT vs RESELLER relationships, buyers can differentiate between first-party and third-party routes. This transparency helps advertisers filter out excessively long or undesirable paths, and encourages cleaner supply chains overall.

Practical advantage for publishers

Publishers who maintain a complete and accurate ads.txt file gain several significant benefits:

  • Stronger control over brand and inventory: Only authorized partners appear as legitimate sellers, reducing the chance that third parties misuse the publisher’s domain for fraudulent sales.
  • Stabilized demand channels: Verified supply paths tend to receive more consistent bidding, because buyers trust that the inventory is authentic and adequately represented.
  • Fewer reporting discrepancies: Clear authorization reduces mismatches and anomalies in revenue reports, impression counts, and reconciliation cycles.
  • Potential revenue uplift over time: As trust in the domain’s inventory strengthens, advertisers often bid more confidently, gradually improving effective CPMs.

Benefits for advertisers and buyers

Marketers also benefit significantly from the widespread adoption of ads.txt:

  • Less wasted spend: With fewer opportunities for fraudulent sellers to enter the supply chain, budgets flow toward real, high-quality impressions.
  • More accurate performance data: Clean supply routes improve the reliability of metrics such as viewability, brand safety, and conversion rates.
  • Greater control over media quality: By validating authorized sellers, buyers can enforce higher standards and avoid risky or unknown inventory sources.

For advertisers, ads.txt translates into cleaner media plans and more dependable campaign outcomes, which ultimately benefits publishers as well.

Structural and technical basics of ads.txt

For ads.txt to function reliably at scale, the standard must define strict rules governing the file's location, structure, and long-term maintenance. These technical requirements ensure that crawlers can automatically discover the file, interpret its contents correctly, and align its signals with the rest of the programmatic ecosystem.

Mandatory placement on the root domain

The ads.txt file must always reside on a website’s root domain. This placement is non-negotiable. Buyers expect to find it at predictable paths such as: example.com/ads.txt

From there, crawlers extract the list of authorized sellers and match them against bid requests.

Although subdomains host their own ads.txt files, the root domain must reference them explicitly in its ads.txt. Without this reference, crawlers may ignore subdomain files entirely or fail to connect them to the main domain’s inventory. The logic is simple: the root file acts as the central directory; subdomain files are extensions that must be declared.

Browser check and common errors

Verifying whether an ads.txt file exists and is publicly reachable is surprisingly straightforward. You can append /ads.txt to your domain name in a browser. If the file loads cleanly, that’s a good first signal that redirects, firewall rules, or incorrect permissions don’t block it.

Typical red flags include:

  • 404 responses (file not found)
  • Empty or partially populated files
  • Improperly configured redirects
  • Special characters or formatting issues that break line parsing

Because buyers rely on automated parsing, even minor syntax errors can lead to blocked bids or lost revenue.

The structure of a standard ads.txt record

A valid ads.txt file uses a consistent, predictable format that represents each authorized seller—whether an SSP, an exchange, or a reseller—with a single line. That line contains three mandatory fields and one optional certification field. Together, they enable ad platforms to verify who is authorized to sell your inventory.

Here is what each field represents.

Advertising system domain

The canonical domain of the platform you are working with. This entry identifies the ad system that is permitted to sell your impressions.

Seller account ID

This unique ID identifies your account within that system. You can view it as your account identifier in the exchange’s backend.

Relationship type

Either DIRECT (you, as the publisher, have a direct agreement with the platform) or RESELLER (an intermediary is selling your inventory on your behalf).

(Optional) Certification authority ID

Used for programs such as TAG, providing an extra layer of validation for buyers.

A standard entry might look like this:

exampleexchange.com, 12345, DIRECT, f08c47fec0942fa0

The domain names the platform, the numeric ID identifies your seller account, DIRECT describes your contractual setup, and the final value is an optional TAG certification.

Extended entries using Variable Declaration Records

With version 1.1 of the ads.txt specification, the IAB Tech Lab expanded the format through Variable Declaration Records. These allow you to attach relevant metadata directly inside the file and can be extremely helpful when operating multiple domains, subdomains, or complex ad setups.

Two common variable types are:

CONTACT

An email address, phone number, or URL for operational communication. This information is beneficial for SSPs or demand partners that need to contact your AdOps team.

SUBDOMAIN

A declaration that a specific subdomain maintains its own ads.txt file. Crawlers should check subdomains independently rather than relying solely on the main domain.

Some tools also support additional structured variables, such as inventorypartnerdomain or more specific CONTACT fields, as long as they comply with IAB conventions.

A combined example might look like this:

exampleexchange.com, 12345, DIRECT, f08c47fec0942fa0

CONTACT: adsops@examplepublisher.com

SUBDOMAIN: news.examplepublisher.com

The first line is the core authorization. The CONTACT line provides a direct communication channel for operational queries, while SUBDOMAIN instructs crawlers to fetch and validate the ads.txt file at news.examplepublisher.com. This setup is particularly valuable for publishers with multi-section websites, sub-brands, or separate ad stacks across different site areas.

Creating and maintaining the ads.txt file

At its core, ads.txt is deliberately simple: a plain text file, free of formatting tricks or markup. That simplicity is exactly what makes it reliable — crawlers can read it easily, and the ecosystem stays predictable. You can create or update the file using your hosting provider’s file editor, an FTP client, or a plugin like AdPresso that generates it dynamically, and place it directly in the webroot. 

The choice of tool matters less than the process behind it. A solid workflow ensures you can quickly add new partners, remove deprecated or inactive accounts, consistently reflect changes to subdomains or site structure, and maintain a syntactically correct file. Neglecting ads.txt can damage revenue as much as not having one, leading to blocked bids, lost revenue, and frustrated AdOps teams.

Special scenarios and edge cases

Modern publishing setups are often more complex than a simple homepage. Multiple properties, redirects, or multi-site environments can complicate your ads.txt strategy. With a few clear rules, though, even sprawling architectures stay manageable.

Subdomains, redirects, and multi-site environments

If you operate multiple subdomains — for example, blog.example.com or shop.example.com — and each uses its own monetization partners, each subdomain requires its own ads.txt file. Otherwise, crawlers receive conflicting signals about which IDs are legitimate.

Your root domain should include declarations such as:

SUBDOMAIN: blog.example.com

This entry indicates to crawlers that they should also fetch:

blog.example.com/ads.txt

A key rule: ads.txt cannot contain redirects.

If a referenced URL triggers a redirect, most crawlers simply ignore it. In multi-site WP setups or larger domain portfolios, keep the paths direct, static, and clearly declared.

Ads.txt in the context of Google AdSense

Google AdSense is particularly strict about ads.txt compliance. The system displays warnings such as "Earnings at risk" or "Unauthorized seller" when the root file is absent, the publisher ID is incorrect or incomplete, subdomains lack a declaration, or redirects or permission issues block crawler access.

Until you fix these issues, AdSense may limit or even suppress monetization. The fix is usually straightforward: log in to AdSense, copy the publisher line, add it to a properly formatted ads.txt file at the root, and ensure any subdomains are declared. Status updates typically propagate within 24–48 hours, restoring expected ad delivery.

Relevance for large platforms and AFP setups

Large ecosystems — such as AdSense for Platforms (AFP), marketplaces, or user-generated-content networks — operate at a different scale. They often manage thousands of sub-accounts, and in this context, the Public Suffix List (PSL) becomes relevant. 

Domains such as co.uk cannot host an ads.txt at the absolute top level, so verification relies on each subdomain acting as its own authority.

In AFP environments, the data-ad-host attribute embedded in the ad tag helps maintain clarity. Rather than listing countless individual sub-accounts in a single ads.txt file, publishers can authorize a higher-level host ID that covers the broader structure. 

This approach offers:

  • fewer files to maintain
  • cleaner authorization rules
  • consistent, impression-level verification
  • a scalable workflow for massive domain portfolios

For marketplaces or platforms with distributed publishing environments, this is what makes ads.txt maintainable without drowning in complexity.

Integration of ads.txt into websites

Integrating ads.txt is a key step toward improving transparency and security in programmatic advertising. At its core, there are two main approaches to implement the file on your website.

Manual creation and upload

The manual method requires creating the ads.txt file in a plain-text editor. You must add all authorized sellers with the correct syntax, then upload the file via FTP or the hosting panel to the website's root directory, ensuring it is accessible at a path like example.com/ads.txt.

This approach gives you complete control, but it requires technical knowledge and ongoing maintenance to avoid errors and keep the file up to date.

Utilizing specialized ad management plugins

For site owners looking to manage ads efficiently, plugins like AdPresso can automate the process. These tools detect your existing partnerships, generate correctly formatted ads.txt files, and intelligently merge any pre-existing files without creating duplicates. 

Ad plugins simplify maintenance, minimize error-prone steps, and ensure your file aligns with the current market landscape.

Both methods are valid—manual works best for small, technically savvy publishers, while automated plugins are more efficient for larger sites or networks. The key is consistent upkeep: a well-maintained ads.txt maximizes both protection and revenue potential.

App-ads.txt: The mobile solution

Mobile apps need a version of ads.txt too — enter app-ads.txt, the “little sibling” of the web-based standard. Apps don’t live on fixed domains; they exist in stores like Google Play or the Apple App Store. Fraudsters can exploit this by creating fake copies and selling inventory under false identities. App-ads.txt solves the problem by linking authorization to the app’s store metadata rather than a domain.

Developers register their website URL in the store profile — essentially a digital signpost. DSPs and SSPs append /app-ads.txt, retrieve the file, and verify authorized sellers in the same format as standard ads.txt. Developers with multiple apps can use subpaths. Only bids from listed sellers are accepted, creating a protective layer against SDK spoofing and “Appnapping.”

App publishers see clear benefits because the standard blocks unauthorized resellers, prioritizes genuine inventory, and secures revenue. Store-based attribution ensures stable demand from brand budgets, driving higher CPMs and overall earnings. Publishers also build credibility, signaling that their inventory is trustworthy and less susceptible to fraud.

Operations, maintenance, strategic context

Since its 2017 launch, ads.txt has become a programmatic industry standard, largely thanks to strict adoption requirements from major networks like Google. Today, over 60% of top publishers use the standard, significantly reducing domain spoofing, while networks like DoubleClick and AdSense continue to apply pressure by filtering unauthorized inventory.

Adoption since 2017

Initially, coverage was slow—only 8–20% of top sites used ads.txt—but adoption surged in 2018 after Google announced it would filter unauthorized inventory from auctions. Key players like OpenX and other SSPs accelerated adoption, and now roughly 45–60% of relevant domains have implemented ads.txt—a major milestone for transparency in programmatic.

Benefits of lean, well-organized files

Short, focused ads.txt files are incredibly valuable. Lists with hundreds of entries are often partially ignored by DSPs, leading to blocked bids and reduced revenue. Too many RESELLER entries can also invite unnecessary arbitrage. Lean files enable faster crawling and discourage fraud bots that exploit excessively long lists.

Maintenance and troubleshooting

Bot caching can delay changes by several days, so allow 24–48 hours after updates and verify with tools like Google Search Console or adstxt.guru. Common pitfalls include syntax errors (wrong commas or tabs), caching plugins (e.g., WP-Rocket), blocked user agents, or incorrect MIME types. The fix is usually simple: upload the plain-text file with the text/plain MIME type, bypass caching plugins, and keep backups before major updates.

Realistic expectations

Ads.txt effectively combats domain spoofing and unauthorized sellers, but it does not prevent click fraud, invalid traffic, or bot impressions—real user engagement remains unverified. It’s not a silver bullet but a foundational piece alongside sellers.json and SupplyChain objects. Publishers need monitoring and clean practices to reap full benefits.

Conclusion

Ads.txt has firmly established itself as an indispensable standard. It protects against domain spoofing, arbitrage, and unauthorized sellers while providing a simple, lightweight technical solution. From root placement to standard entries and app-ads.txt for mobile apps, it brings clarity to complex supply chains and strengthens trust in digital inventory.

Even with limitations like no built-in protection against click fraud or invalid traffic, ads.txt remains a milestone. Coupled with sellers.json and SupplyChain objects, it creates more stable revenue streams for publishers and safer media for buyers — a true win-win. Long-term, diligent maintenance, whether manual or via plugins like AdPresso, pays off by securing market position and revenue. As the ecosystem evolves, new standards such as llms.txt may appear, but ads.txt will remain the cornerstone of transparent, fair programmatic advertising.

Frequently asked questions about ads.txt

What is an ads.txt file?

An ads.txt file is a simple text file located on the root domain of a publisher's website (e.g.,example.com/ads.txt). It lists all authorized sellers and their account IDs, serving as a public record to prevent ad fraud like domain spoofing and bring transparency to the supply chain.

Is the ads.txt file important for serving Google AdSense Ads?

Yes, ads.txt is essential for Google AdSense. If you miss the file or if it contains an incorrect Publisher ID (e.g., pub-123456789), AdSense will display the warning "Earnings at risk," and you risk losing up to 100% of your earnings. AdSense crawlers strictly check the file. Therefore, correct implementation is a prerequisite for ad serving and full monetization.

How do I create an ads.txt file?

Using a text editor, enter authorized partners in the format: "domain.com, accountid, DIRECT/RESELLER, tagid." Upload it as "ads.txt" to the root directory using FTP or your hosting panel. Plugins like AdPresso can automatically generate this file from your existing partnerships. After uploading, check the file via your browser at example.com/ads.txt and wait 24–48 hours for crawlers to update.

What happens without an ads.txt file?

Large networks like Google AdSense block earnings ("Earnings at risk"), DSPs filter out bids, and your revenue decreases by up to 100%. Unauthorized sources are ignored, thereby disadvantaging legitimate publishers and favoring fraudsters. It is mandatory for transparency in programmatic advertising—without it, you lose market share and trust.

What is the difference between DIRECT and RESELLER?

DIRECT signifies a direct contractual relationship between the publisher and the platform (highest priority). RESELLER indicates a reseller authorized by the publisher who acts secondarily (carrying a higher arbitrage risk). Clear labeling allows buyers to control chain lengths and filter undesirable paths for supply chain transparency.

What is app-ads.txt?

App-ads.txt is the mobile equivalent for apps that lack a domain. Developers link their website within app store metadata. Crawlers download developer.com/app-ads.txt using the same format. This standard protects against appnapping and SDK spoofing, increasing revenue through verified sources. It became an IAB standard in 2018 and is particularly relevant for Android/iOS publishers.

This is AdPresso

Streamlined WordPress ad management, built on 15 years of expertise for serious monetization.
Features robust protection, targeting, A/B testing, diverse placements, and insightful tracking to spark your full revenue potential.

StudiesBlog
AdPresso Logo