Case study: a real site vs AdSense approval.
This is how professionals audit a site before (re)applying to AdSense. We requested metax.academy's live homepage, ads.txt, robots.txt, sitemap.xml, policy-page URLs and the www variant — the same way Google's crawlers do. Every finding below is real, ranked by severity, with its exact fix. Replace the domain with yours and repeat each check.
9 findings. Every one fixable.
The ads.txt verification failure, explained end-to-end.
Your file's content is perfect. The problem is that Google's crawler almost certainly never receives it — Cloudflare answers first.
What we verified
- ✔ https://metax.academy/ads.txt → returns your correct line:
google.com, pub-4463113802541266, DIRECT, f08c47fec0942fa0 - ✔ https://www.metax.academy/ads.txt → same file (good).
- ⚠ Your HTML contains Cloudflare's challenge-platform script on every page, and a fetch of curriculum.html returned an HTTP 307 challenge redirect — proof that bot-challenging is active on the zone.
Why that breaks verification
Google fetches ads.txt with a non-browser crawler. When Cloudflare Bot Fight Mode or a security rule fires, the crawler receives a JavaScript challenge page (HTTP 403/503/307) instead of your text file. It cannot solve challenges → AdSense reports "ads.txt not found / couldn't verify" even though humans can see the file.
The fix — 5 Cloudflare steps
- Security → Bots → turn OFF Bot Fight Mode (it cannot whitelist Google's ads crawler).
- Security → WAF → Custom rules → new rule: Verified Bot equals true → Skip all remaining rules & challenges.
- Rules → Configuration Rules → for URI path
/ads.txt: Security Level = Essentially Off, Browser Integrity Check = Off. - Caching → Purge cache for
https://metax.academy/ads.txt(kills any cached 404/challenge). - Verify like Google does:
curl -A "Mediapartners-Google" -i https://metax.academy/ads.txt
Then AdSense → Sites → your site → Check for updates. Google re-crawls ads.txt every few days; allow up to a week for the warning to clear.
The 11-step approval checklist.
This checklist is universal — it applies to any site applying for AdSense, not just the case-study domain. Work top to bottom. Your ticks are saved in your browser's IndexedDB — return anytime, nothing is lost.
Understand the system you're applying to.
The AdSense track explains every mechanism behind these findings — so the next application is your last.