You logged into AdSense, and there it was. A red banner. “Violations found: Dishonest declarations.“
And your stomach dropped, because dishonest sounds like Google just called you a fraud.
Take a breath. In most cases, you didn’t do anything wrong. Nobody is accusing you of lying, your earnings aren’t gone, and your account probably isn’t banned. The name is the problem here, not you. It’s one of the worst-worded warnings Google has ever shipped, and it scares thousands of publishers who are guilty of nothing more than a missing text file.
Let’s walk through what this message really means, why you got it, and exactly how to clear it. Then, because you should know your options, what to do in the rarer case where it’s serious.
So what is a “declaration,” anyway?
When you connect a site to AdSense, you’re essentially telling Google, “This is my site, and I’m authorized to run ads on it.” That claim is the declaration. Google’s crawler then goes and checks whether the live site backs up what you told it.
If the crawler shows up and can’t find the proof it expects, its logic assumes a mismatch between what you declared and what’s actually there. So it slaps on the “dishonest declarations” label automatically. No human looked at your site. No one decided you were scamming anyone. A bot found a gap and reached for the harshest-sounding tag in the drawer.
Nine times out of ten, the gap is your ads.txt file — missing, deleted, moved, or containing the wrong publisher ID.

What is ads.txt and why does it break everything?
ads.txt stands for Authorized Digital Sellers. It’s a plain text file that sits at the root of your domain and lists who’s allowed to sell ads on your site. It’s an IAB Tech Lab standard that exists to stop fraudsters from selling fake inventory in your name.
Google is blunt about its value: using ads.txt helps buyers spot counterfeit inventory and can send more advertiser money your way instead of toward that fake inventory. It’s technically optional, but Google strongly recommends it, and when it’s broken, the crawler treats the whole picture as unverified.
Here’s the catch that trips people up: even a tiny error — an extra space, a missing comma, a misspelled domain, or the wrong relationship value — can make exchanges ignore your entire file. One stray character and you’ve effectively got no ads.txt at all, as far as Google’s concerned.
How to fix the “dishonest declarations” warning, step by step
Most people clear this in about ten minutes. Here’s the order I’d do it in.
1. Find out which site is actually broken. If you run several sites under one account, Google’s email almost never tells you which one is the culprit. Open AdSense, go to Sites or the Policy Center, and look for the domain flying a red warning flag instead of the green “Ready” status. That’s your problem child.
2. Check whether the file even exists. Open a fresh browser tab and type yoursite.com/ads.txt. Two outcomes:
- You get a 404 or a blank page → the file is missing. You need to create one.
- The file loads with text → it exists, so the problem is inside it. Go to step 4.
3. Create the file if it’s missing. Make a plain text file — literally in Notepad or TextEdit, not Word — named exactly ads.txt. Inside it, paste your authorized line. For AdSense it looks like this:
google.com, pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0
Swap the X’s for your real publisher ID (you’ll find it in your AdSense account). The safest move is to copy the exact line Google gives you inside AdSense rather than typing it, since one typo restarts this whole headache. Upload the file to your site’s root directory — the top level, so it’s reachable at www.yoursite.com/ads.txt, not buried in a subfolder.
4. If the file loads but the error stays, check the publisher ID character by character. Compare the pub- number in your file against the one in your account. A single wrong digit, a missing pub- prefix, or a sneaky extra space will trigger the flag. Fix the line, save, re-upload.
5. Purge your cache. This one saves a lot of frustration. If you edited the file and the error won’t budge, Google is probably still reading an old cached copy. Log into your host or your CDN — Cloudflare being the usual suspect — and hit Purge Cache so the fresh file goes live immediately.
6. Then wait. This is where patience matters. Google’s crawler updates on its own schedule. Changes can take a few days to show up, and if your site doesn’t send many ad requests, it can take up to a month for the status to refresh. So if you’ve done everything right and the banner is still there tomorrow, that’s normal. Don’t rip the file out and start over.
On WordPress?
You don’t have to touch your server files by hand. The free Ads.txt Manager plugin lets you paste the line into your dashboard and handles placement for you. Do a fresh yoursite.com/ads.txt check afterward to confirm it’s actually serving.
Running a mobile app on AdMob?
The equivalent file is app-ads.txt, and it lives on your developer website, not inside the app. Make sure the website URL in your app store listing points to the exact domain hosting that file, or the crawler won’t connect the two.
The traps that keep people stuck
A few reasons the warning survives even after a “fix”:
You uploaded to a subdomain. The spec wants the file on your root domain. Put it on blog.yoursite.com when your ads run on yoursite.com and the crawler won’t count it.
The relationship value is wrong. If your line says RESELLER when AdSense is a DIRECT seller for you, that’s a mismatch. For a standard AdSense setup it should read DIRECT.
You’re just not waiting long enough. I’ll say it again because it’s the number one reason people panic-post in forums: the crawl is slow, especially on low-traffic sites. Give it days, not minutes.
When it’s not just ads.txt
I don’t want to pretend every case is a harmless glitch, because a few aren’t. The “dishonest declarations” policy also covers genuinely dishonest signals, and Google’s own examples include providing incorrect personal details at signup, falsifying or obscuring your address with emojis or odd punctuation, giving a misleading phone number or bank account, or faking the URL to hide where your ads really appear.
If none of that describes you, you’re almost certainly in the ads.txt bucket. If some of it does, fixing the underlying honesty of the information is the real repair, not a quick file edit.
It’s also worth knowing where this sits in Google’s enforcement ladder. As of 2026, Google generally issues up to three strikes for a policy violation before your account gets suspended, and suspensions typically run 30 days and can’t be appealed directly — though you can submit a form asking for more detail. A warning banner is a nudge to fix something. It is not the same as a disabled account.
What if your appeal goes nowhere?
Here’s the honest part most guides skip.
Sometimes you do everything right, the ads.txt is spotless, and the account still won’t come back. Or you’re stuck in the loop of a permanent disable with an appeal that reads like a form letter. It happens, and it’s brutal when it does. This isn’t a rare edge case either — through 2025 and 2026 a wave of publishers got hit with account bans citing a single “dishonest declarations” reason they couldn’t make sense of.
If you’re there, the smartest thing you can do is stop pouring energy into a black box and start rebuilding your income somewhere you actually have control. The good news is that the monetization landscape in 2026 is deeper than it’s ever been. Contextual networks like Media.net, push and pop players like PropellerAds and Adsterra, and full-service platforms like Ezoic all take publishers that AdSense has shown the door — many with lower payout thresholds and support you can actually reach.
That’s the whole reason this site exists: we score every network against a published rubric so you’re not gambling your recovery on a name you found in a random list. If AdSense has become more trouble than it’s worth, start with our breakdown of the best AdSense alternatives for 2026 and pick the one that fits your traffic and niche.
The short version
“Dishonest declarations” almost always means a missing or broken ads.txt file, not fraud. Find the flagged site, check www.yoursite.com/ads.txt, create or fix the file with your correct publisher ID, upload it to the root, purge your cache, and wait a few days for Google to re-crawl. Nine times out of ten, that’s the entire fix.
And if it turns out to be the tenth time — the one where the account just won’t come back — you don’t have to build your business on a platform that can pull the rug without a straight answer. There are better-fitting homes for your traffic, and they’re worth a look before you spend another week arguing with a banner.
