Methodology: How Our Checkers Score a Site or a Page
A score you cannot inspect is just a number. This page explains exactly what our two checkers fetch, how they weigh what they find and where they stop being reliable.
The two audits
| AdSense eligibility checker | Free SEO checker | |
|---|---|---|
| Scope | A whole site: homepage plus a sample of up to 11 other pages | One page, in depth |
| Checks | 57, of which 4 are always informational and never scored | Up to 53, depending on the page |
| Categories | 8 | 9 |
| Output | Score out of 100, verdict, action plan, downloadable report | Same |
The SEO checker runs fewer checks on a page that has no images or no share image, because those checks do not apply. The count on a given report is the count that ran.
What gets fetched
For an AdSense audit we fetch the homepage, robots.txt, the XML sitemap, ads.txt, a deliberately invented URL to see how your server answers a missing page, and a sample of up to 11 inner pages taken evenly from the sitemap (or from the homepage links when the sitemap is small). We test up to 16 internal links for dead ends, using a HEAD request and falling back to GET when a server refuses HEAD. We also read a few of your essential pages (privacy, contact, about, terms) once each, to check their content and whether they can be indexed. For one SEO audit we fetch the page itself, its robots.txt, a sitemap, the share image, up to 12 internal links and up to 6 image headers.
Requests are polite: at most 3 in parallel, a 12 second timeout, and pages are read up to 2 MB. Every request, including each redirect hop, is checked so that the tool can only reach public addresses.
How the score is computed
Each check has a weight from 1 to 5 that reflects how often that problem causes a refusal or costs visibility. A passed check earns its full weight, a warning earns half, a failure earns nothing, and informational checks are left out. The score is earned weight divided by possible weight, as a percentage.
| Score | AdSense verdict | SEO verdict |
|---|---|---|
| 85 and above | Looking good | Solid page |
| 70 to 84 | Nearly there | Good base |
| 50 to 69 | Needs work | Needs work |
| Below 50 | Not ready yet | Major issues |
AdSense checker: categories
| Category | Checks | What it covers |
|---|---|---|
| Connection and security | 6 | HTTPS, redirect to HTTPS, www consistency, redirect chain, response time |
| Indexing and crawlability | 10 | robots.txt rules for Googlebot and the AdSense crawler, sitemap, noindex in meta and headers, canonical, own domain |
| Required pages | 6 | Privacy policy and its advertising-cookie wording, contact, about, terms, and whether they can be indexed |
| Content | 10 | Number of pages, depth on a sample, share of substantial pages, titles, descriptions, headings, freshness |
| Structure and navigation | 7 | Menu, footer, internal links, broken links, proper 404, clean URLs, favicon |
| Mobile and performance | 7 | Viewport, responsive CSS, compression, mixed content, page weight, scripts, image alt text |
| Trust and E-E-A-T | 6 | Contact method, author signals, structured data, publisher schema, public profiles, footer identity |
| AdSense specifics | 5 | A content-policy keyword scan, plus informational items: domain history, ads.txt, ad code, Search Console tag |
SEO checker: categories
Title and metadata (7), content quality (6), headings and structure (up to 4), links (7), images (up to 5), indexability (6), rich results and social (up to 4), speed and technical (9) and security headers (5).
Thresholds that are ours, not Google’s
Google publishes few numeric thresholds. Where we use one, it is our judgment, and the report words it as a recommendation rather than a rule.
| Threshold | Value | Why |
|---|---|---|
| Pages on the site | 25 for a full mark, 10 for a warning | A reviewer needs enough substantial pages to judge. Google sets no minimum. |
| Average page depth | 600 words for a pass, 350 for a warning | A page far below this rarely answers a question properly. |
| Title length | 30 to 60 characters | Longer titles are truncated in results. The limit is in pixels, so this is an approximation. |
| Meta description | 70 to 165 characters | Same reason. Google may rewrite it anyway. |
| Server response | Under 800 ms for a pass | Matches the “good” time to first byte guidance on web.dev. |
Domain age is shown for context only and is not scored: Google states no minimum domain age for AdSense.
What the checkers cannot measure
Originality, whether a page answers the search intent, backlinks and authority, and real-user Core Web Vitals are outside what a fetch can see. Every report ends with a manual checklist for exactly those points, because they weigh at least as much as everything measured.
About GreenlightBot
Audits are made by a fetcher that identifies itself with this user agent:
Mozilla/5.0 (compatible; GreenlightBot/1.0; +https://greenlightmysite.com/methodology/#bot)
It runs only when someone submits a URL. Because the person submitting the URL is asking us to read it, GreenlightBot does not apply robots.txt rules to the pages it audits, much like a link-preview fetcher. It reads robots.txt to report on it. It identifies itself on every request, runs at low volume, and each visitor is limited to 6 audits per hour. If you do not want your site to be audited, block the user agent in your server configuration or write to hello@greenlightmysite.com.
Keeping the tools honest
We run both checkers on this site and publish the results on the home page and in the changelog. When a check turns out to claim more than the evidence supports, we change the check: the domain age check, for example, used to warn on young domains until we found that Google does not state such a rule.