Google’s help page for a site that is not ready to show ads gives 4 reasons and a fix for each. You can rule out 2 of them in minutes with a browser and curl: ad code that is missing or incomplete, and a site the reviewer cannot reach. The other 2, too little unique content and policy violations, are judgments about your pages, and the notice does not spell out which one applies. Check them in that order and you stop rewriting a site that only had a misplaced script.
The label you probably saw is “low value content”. It is how publishers describe the refusal, and it is the label that came back on one of our own sites, the story told on our about page. Google’s help page uses other words: not enough unique, useful content, and a poor experience. Treat the label as a pointer to the official wording, not as a diagnosis.
The 4 reasons, read as a reviewer would
The first column below paraphrases Google’s help page, so the wording in your account may differ. The other columns are our reading and our order of checks.
| What the notice says | What it usually means | Check first | Tool |
|---|---|---|---|
| Ad code missing or incomplete | The pages that were fetched do not carry the full snippet, or carry it on a different site than the one you registered | View the source of the live homepage and find the snippet in the <head>, or verify the site through Search Console, which Google offers as the alternative | The AdSense checker reports the ad code and the Search Console tag as informational items |
| Site not accessible | The reviewer could not load the pages: a password, a robots.txt block, an invalid certificate, no redirect from http to https, a wrong URL, an unpublished site | Open the site in a private window, follow the redirects with curl, read robots.txt for the AdSense crawler | The robots.txt tester and the HTTPS and crawlability checks of the AdSense checker |
| Not enough unique content, or a poor experience | Too few substantial pages, pages that repeat each other, navigation a stranger cannot use | Count the pages that would deserve to exist without ads on them, then read your homepage as a stranger | The content and navigation categories of the AdSense checker, then our guide to low value content |
| Policy violations | A page falls in a restricted category or breaks a placement or behavior rule | Read the policy center in your account and match its text to your pages | No tool decides this: the checker’s keyword scan only tells you where to read first |
Rows 1 and 2 are mechanical: the problem is there or it is not. Rows 3 and 4 need judgment, and Google’s page does not say how much content is enough.
A 5-step diagnosis, cheapest check first
Run these on the live site, in this order. Replace example.com with your domain.
- Code. The command prints your publisher ID once for each occurrence of the snippet in the HTML the server sends. No output means the snippet is absent from that page. Curl does not run JavaScript, so a snippet injected by a tag manager will not appear; Google’s page asks for the code in the head of the site, so put it there directly.
- Access. Follow the redirects and read the status lines. You want 1 redirect from
http://tohttps://, then a 200. A 401 means a password prompt, which Google’s page says to remove temporarily, and a 403 means something is refusing the request. - Robots. Read the file, look for a
Disallow: /underUser-agent: *and for any group that namesMediapartners-Google, the AdSense crawler. Google applies the most specific group that matches a crawler, so a group written for another bot tells you nothing about this one. The robots.txt tester checks 7 crawlers at once, and our guide to robots.txt mistakes shows the usual traps. - Indexation. In Search Console, inspect the homepage and 2 articles with the URL Inspection tool, then open the page indexing report. Search Console reports pages blocked by robots.txt and pages carrying a
noindexdirective, so this step catches both. - Content. Only now. Take Google’s self-review areas (unique content, navigation people can use, an experience that makes them want to read) and score each honestly, page by page.
The commands for steps 1 to 3, plus the header check that belongs to step 4:
curl -s https://example.com/ | grep -o 'adsbygoogle.js?client=ca-pub-[0-9]*'
curl -sIL http://example.com/ | grep -iE '^(HTTP|location)'
curl -s https://example.com/robots.txt
curl -sI https://example.com/ | grep -i x-robots-tag
If steps 1 to 4 come back clean, the cause is most likely in step 5 or in the policy center, and you have saved yourself from redesigning a site that was reachable and correctly tagged.
The fix for each reason
Ad code. Copy the snippet from your account again rather than retyping it, and place it in the <head> of a template shared by every page (the shared template is our recommendation; Google’s page asks for the head of the right site). Clear any page cache, then repeat the first command of the diagnosis. If you cannot edit the head, for instance on a hosted builder, verify the site through Search Console, which is the alternative Google names.
Site not accessible. Remove password protection for the length of the review and take down any maintenance page. Rewrite robots.txt so that no group matching the AdSense crawler or Googlebot disallows the whole site. Renew the certificate and make http redirect to https. Then confirm that the exact URL registered in your account, with or without www, is the one that answers a 200.
Not enough unique content, or a poor experience. This is the longest fix, and the only one with no command. Find the thin and duplicate pages with the low value content method, then merge, rewrite or remove them, finish or delete every placeholder, and fix the menu so that each section opens onto real pages. Add what a reader of your topic would look for and cannot find. Google sets no page count, so measure the result against the self-review areas and not against a number.
Policy violations. Read the policy named in your policy center, change the content or the placement it describes, and resolve the issue from the policy center, as Google’s page directs. If your subject is security, health or finance, the sensitive niches guide shows how the same topic can be written inside the rules.
Once the fix is live, Google’s instruction is to request a new review, and it quotes the same delay as for a first one: usually a few days, in some cases 2 to 4 weeks. The 3-week plan for reapplying turns that into dates.
Valuable inventory, the rule behind the vague notice
Behind the “not enough content” wording sits Google’s policy on ads on screens without publisher content, which the program calls valuable inventory. It says Google’s ads are not allowed on screens with no content or low-value content, on pages under construction, on alert, navigation or behavioral screens, and on dead ends such as thank-you, exit and error pages. It says your content should be the focal point of the page, and it lists auto-generated content with no review or editorial curation among the problems.
It gives no number. It describes pages, so the test that works is to take each page and ask whether it would be a destination if no ad were on it. A results screen with only figures, an empty category archive and a “coming soon” placeholder all fail that test, while a short page that answers a real question passes it. Tool sites are exposed to this rule because a tool page can be little more than a widget, and the editorial layer around a tool is how we approached it.
What Google does not tell you
Google does not spell out the precise reason behind a given refusal, and in our experience the notice does not walk you through your pages one by one. It also publishes no minimum number of pages, no minimum word count, no minimum traffic and no minimum domain age. It does not say what share of refusals each of the 4 reasons accounts for, or whether a young domain is examined more strictly. Every list that claims otherwise is someone’s experience, our own 20 to 30 pages recommendation included.
3 habits follow from that. Diagnose by elimination, as above, rather than by guessing. Change one class of thing at a time and write down the date, because the notice will not tell you later which change mattered. And do not trust a threshold you read anywhere, ours included, until you have checked it against what your own site does. The account approval stage also checks payment information, so a stalled application is not always about your pages; how long approval takes covers the 2 stages.