You log into your AdSense account, click over to Sites, and there it is: your domain, sitting next to a little status that reads “Not found.” No further explanation, no arrow pointing you toward what to do next. Just those two words, quietly implying you’ve done something wrong.
If you landed here after seeing that message, take a breath. This is one of the most common ads.txt issues out there, and it’s almost always fixable in under ten minutes once you know where to look.
What “Not found” actually means
This status is pretty literal. It doesn’t mean your ads.txt file has an error in it, or that the formatting is wrong, or that one of your entries is invalid. It means Google’s crawler went looking for a file at yoursite.com/ads.txt and simply couldn’t find anything there at all.
That distinction matters, because it tells you where to focus your energy. You’re not debugging syntax right now — you’re debugging a missing or misplaced file. The fix is almost always about location, not content.
The usual suspects
Let’s go through the reasons this happens, roughly in order of how often they actually trip people up.
You haven’t uploaded it yet
This sounds obvious, but it’s genuinely the most common reason. Maybe you generated the file, saved it to your desktop, and then got distracted before actually uploading it anywhere. Or maybe you’re managing multiple sites and assumed you’d already done this one. Worth checking first before anything else.
It’s sitting in the wrong folder
Ads.txt has to live at the absolute root of your domain — the same directory level as your homepage. If it’s inside a subfolder like /wp-content/uploads/ads.txt or /files/ads.txt, crawlers will never find it, no matter how correctly formatted the contents are. They check one specific path and one path only: yoursite.com/ads.txt, with nothing before the filename.
If you’re on WordPress, this usually means the file needs to go directly into your site’s main installation directory, not inside any of the WordPress-specific folders like wp-admin or wp-content.
There’s a subdomain or www mismatch
This one’s sneaky. If your site is technically set up at www.yoursite.com but your ads.txt is only reachable at yoursite.com without the www (or the other way around), crawlers checking the version they expect won’t find anything. Ad crawlers check the exact domain your ad code is actually running on, not a version you assume is equivalent.
If you’re not sure which version your site defaults to, just try both in your browser and see which one loads your actual homepage. That’s the version that needs the ads.txt file.
Your server is redirecting or blocking the request
Sometimes the file is technically there, but your server’s configuration redirects requests to it, or a security plugin is quietly blocking automated crawler requests to text files. From your browser, everything might look fine because you’re logged in or the redirect doesn’t affect regular page visits the same way. It’s worth checking your file with a fresh incognito browser window, and if you’re using any kind of firewall or bot-blocking plugin, checking whether it has an exception list you need to add ads.txt to.
The filename itself is wrong
It needs to be exactly “ads.txt,” all lowercase, with that exact extension. Not “Ads.txt,” not “ads.txt.txt” (a mistake that happens more than you’d think when a file manager hides extensions by default), and not “ads-txt.txt.” Small thing, easy to miss, worth a direct check.
It just hasn’t been recrawled yet
Sometimes you’ve done everything right, but the status hasn’t updated because Google’s crawler simply hasn’t come back to check again. Google typically rechecks a site’s ads.txt file within about a day, though it can occasionally take longer depending on how often your site gets crawled generally.
How to actually check it yourself, step by step
Before touching anything else, verify the situation with your own eyes rather than relying only on what AdSense tells you.
Step one: open a private or incognito browser window (this avoids cached results or logged-in quirks) and type your domain followed by /ads.txt directly into the address bar. So something like yoursite.com/ads.txt.
Step two: look at what actually loads. You want to see plain, readable text — your actual ads.txt lines sitting there on a blank page. If you get a 404 error page, the file genuinely isn’t where it needs to be. If a file download prompt pops up instead of the text just displaying, your server might be serving it with the wrong content type, which can also cause crawlers to misread it.
Step three: check both the www and non-www version of your domain, just to rule out a mismatch.
Step four: if everything looks correct in your browser but AdSense still shows “Not found,” it’s worth waiting 24 to 48 hours before assuming something’s still broken. Crawl timing genuinely does account for a chunk of these cases.
Fixing it once you know what’s wrong
If the file is simply missing, generate one and upload it to the correct root location. It’s worth using a proper generator tool for this step rather than hand-typing the syntax, since a single misplaced comma or an extra “ca-” left in your publisher ID can silently invalidate an otherwise fine-looking line. SmartBalak’s free Ads.txt Generator handles the formatting automatically — you pick the network, enter your publisher ID and relationship type, and it builds a correctly structured line you can copy or download directly.
If the issue was a folder placement problem, move the file to the true root directory. For most WordPress installs on shared hosting, that’s the same folder where you’d find your wp-config.php file if you looked through FTP or your hosting file manager.
If it was a www/non-www mismatch, make sure the file is reachable on whichever version of the domain your site actually serves traffic on. In some cases, it’s worth placing a copy at both versions just to be safe, especially if your domain has ever changed its default redirect behavior.
If a security plugin or firewall was the culprit, look for a setting that allows crawler access to root-level text files, or add an explicit exception for /ads.txt specifically.
Speeding up the recheck
Once you’ve fixed the underlying issue, you don’t necessarily have to sit around waiting for Google’s next scheduled crawl. Inside your AdSense account, under the Sites section, there’s usually a “Check for updates” option next to your domain. Clicking it triggers a fresh check rather than waiting for the automatic schedule, which can save you a day or two of uncertainty.
Avoiding this next time
A few habits make this kind of thing much less likely to happen again.
Whenever you add a new ad network to your site, update your existing ads.txt file rather than replacing it outright — a surprising number of people accidentally overwrite their whole file with just the newest entry, wiping out ones they’d already set up correctly.
If you ever migrate hosting providers or change your site’s domain structure, add “confirm ads.txt is still reachable” to your post-migration checklist. It’s an easy thing to forget when you’re focused on making sure the actual site content transferred properly.
And if you manage more than one website, it’s worth doing a quick manual check on all of them every few months — just visiting each domain’s /ads.txt path and confirming it still loads as expected. Files don’t typically break on their own, but hosting changes, plugin updates, and server misconfigurations happen more often than people expect.
The takeaway
“Not found” sounds more alarming than it actually is. Nine times out of ten, it comes down to the file simply not existing yet, sitting in the wrong folder, or a crawler not having caught up with a recent fix. Once you know what to check, walking through it takes minutes, and getting it sorted properly means you stop quietly losing ad revenue to a problem that had a pretty straightforward fix all along.