The grade, shown working
Every website grader gives you a number. Ours shows the math.
The Website Checkup is a tool we built ourselves, and this page is its complete methodology: all 22 checks, what each one measures, why it matters, the exact thresholds, and the published research behind them. The scoring engine and this page read the same file, so what you see here is what actually runs.
The whole grade in one bar. Every segment is a check, sized by its weight. Tap one.
Two instruments, kept honest by keeping them apart.
Our structural read
We fetch your page once, the way a browser does, and stream the HTML through 22 checks. No login, no plugin, nothing installed. This produces the letter grade, and everything it measures is listed below.
Google's Lighthouse
Alongside our grade we show Google's own scores, run by Google's PageSpeed tooling on a simulated mid-range phone: Performance, SEO, Accessibility, and Best Practices. Their numbers, their thresholds, labelled as theirs.
We never blend the two into one number. A blended score would mean our grade changed whenever Google's lab conditions wobbled, and you could no longer tell what moved it. Two clean instruments beat one muddy one.
The formula
Weighted checks, nothing else.
Every check has a weight, and the weights sum to exactly 100. A pass earns the full weight. A warning earns half, because a partial problem is a partial cost. A failure earns nothing. Your score is the total, and the letter comes from the school scale below. There is no curve, no secret adjustment, and no factor that is not on this page.
How we set the weights: a check worth 8 to 10 points directly costs calls or visibility when it fails, with strong published evidence. 5 to 7 is a meaningful, well-documented effect. 3 to 4 is real but smaller, or something Google often compensates for. 1 to 2 is housekeeping, worth fixing but rarely decisive. Where the honest evidence is weak, the weight is small, and we say so in the check itself.
One more thing worth knowing: these checks were not invented for this tool. They come from the launch checklist we run on our own client builds. Every site we ship has to pass this same list before it goes live, so the grader holds your site to the standard we hold ourselves to.
We checked the big graders before writing this page. HubSpot's Website Grader, WooRank, and SEOptimer all score out of 100, and none of the three publishes a single weight, threshold, or source. This page exists because we would rather be checkable.
35 of 100 points
Getting found on Google
Whether Google can read the page, understand what the business does, and show it well in results.
Page title
8 points
Why it matters
The title tag is the clickable headline Google shows for your page, and your one line of sales copy in the results. Google publishes no length limit, but the largest study of real titles found Google rewrote 61.6% of them, and titles of 51 to 60 characters were the ones it rewrote least. Stay in that zone and the headline searchers see is the one you wrote.
How we measure it
We read the title element from your page's HTML, the same way a search engine first sees it, and count its characters. Between 15 and 60 characters passes, the range Google leaves alone most often. Missing fails. Very short or very long earns a warning, because Google will almost certainly rewrite it.
Pass Present, 15 to 60 characters
Warning Present but under 15 or over 60 characters
Fail Missing or empty
Google Search Central: Control your title links (2025) [1] · Zyppy: Google rewrites 61.6% of title tags (80,959 titles) (2022) [2]
Search description
4 points
Why it matters
The meta description is the sentence under your headline in Google results. Two independent studies found Google rewrites it 63 to 71 percent of the time, which is exactly why this check carries less weight than the title. But a missing one means Google always writes your pitch for you, by grabbing whatever page text it finds.
How we measure it
We read the meta description tag and count its characters. Presence is the real check: missing fails. The 50 to 160 character range is industry convention rather than a Google rule (Google publishes no limit, it just cuts the snippet to fit the screen), so length outside that range only earns a warning.
Pass Present, 50 to 160 characters
Warning Present but under 50 or over 160 characters
Fail Missing or empty
Google Search Central: Control your snippets (2025) [3] · Portent: Google rewrites 68-71% of meta descriptions (2020) [4] · Ahrefs: 62.78% rewritten across 20,000 keywords (2020) [5]
Main heading
3 points
Why it matters
A main heading tells visitors and screen readers what the page is about at a glance, and about 3 pages in 10 do not have one at all. We are honest about the limits here: Google has said on the record that it handles multiple H1s, or none, just fine. So we only fail a page with no heading, and we never pretend this is a ranking factor.
How we measure it
We count the H1 elements in your HTML. At least one passes, and we do not penalise multiple H1s, because Google itself says they are fine. Zero fails: the page never plainly states its subject, and a screen reader has nothing to anchor on.
Pass At least one H1 (one clear heading is the cleanest structure)
Fail No H1 at all
John Mueller, Google: multiple H1s are fine (#AskGoogleWebmasters) (2020) [6] · Web Almanac: only 71% of pages have an H1 (2025) [7]
Business information for Google
8 points
Why it matters
Structured data is machine-readable code that spells out your hours, address, phone number, services, and reviews, and it is what makes you eligible for enhanced listings. Here is the gap: fewer than 4% of pages carry LocalBusiness markup. For a local business it is cheap differentiation almost nobody in town has done. Google hosts case studies of large sites measuring more clicks after adding it, though those are self-reported by big publishers, so we lean on the adoption gap instead.
How we measure it
We look for JSON-LD structured data blocks in your HTML and read out the types they declare, like LocalBusiness or Service. Any valid structured data passes. None fails. We report which types we found so you can see what Google sees.
Pass At least one JSON-LD block with a declared type
Fail No structured data found
Web Almanac: LocalBusiness markup on 3.97% of pages (2024) [8] · Google Search Central: How structured data works (2025) [9]
Duplicate page protection
3 points
Why it matters
Most pages are reachable at more than one address: with and without www, with and without a trailing slash. A canonical tag names the official one so Google does not split your credit between copies of the same page.
How we measure it
We look for a canonical link tag in your HTML. Present passes. Absent earns a warning rather than a failure, because Google can usually work out the duplicate on its own. Usually.
Pass Canonical tag present
Warning No canonical tag
Google Search Central: Consolidate duplicate URLs (2025) [10]
Crawler instructions
2 points
Why it matters
robots.txt is the standard instruction file every search engine asks for before crawling a site, and 85% of sites have one. Missing is not fatal. It is the difference between giving directions and hoping.
How we measure it
We request /robots.txt on your domain. A successful response passes. Anything else earns a warning.
Pass robots.txt answers
Warning No robots.txt
Google Search Central: robots.txt introduction (2025) [11] · Web Almanac: 85% of sites serve a valid robots.txt (2025) [7]
Sitemap
4 points
Why it matters
A sitemap is the list of every page you want Google to index. Google finds pages without one, but its own documentation recommends a sitemap as the reliable way to make sure nothing gets missed and new pages get found faster. No adoption statistic exists that we trust, so we cite none.
How we measure it
We read your robots.txt for a Sitemap line, and if there is none we check /sitemap.xml directly. Found either way passes. Found neither way fails.
Pass Sitemap declared in robots.txt or present at /sitemap.xml
Fail No sitemap found either way
Enough words to rank
3 points
Why it matters
Google ranks pages, and pages are made of words. A homepage with a photo, a slogan, and a phone number gives Google almost nothing to match searches against. There is no magic word count and we do not pretend there is one. A page that answers real questions simply needs room to do it.
How we measure it
We count the readable text that arrives in your HTML, the words present before any scripts run. Under 150 words earns a warning. This check never fails outright, because some site builders inject text with JavaScript after load, and Google can render that. The words that arrive first are still the ones a slow phone shows.
Pass 150 or more readable words in the HTML
Warning Under 150 readable words
17 of 100 points
Working on a phone
Google indexes the mobile version of every site, and these checks fail exactly when a phone visitor suffers.
Built for phone screens
10 points
Why it matters
Since October 2023, Google indexes the mobile version of every site. Not the desktop version, the mobile one. And 95% of pages now carry the viewport tag that makes a page fit a phone, so missing it genuinely marks a site as neglected: phone visitors get a shrunken desktop page they have to pinch and zoom. Heaviest weight in our system.
How we measure it
We read the viewport meta tag from your HTML and check it adapts to the device width. Present and correct passes. Missing or fixed-width fails.
Pass Viewport tag set to device width
Fail No viewport tag, or fixed width
Google Search Central: mobile-first indexing completed (2023) [14] · Web Almanac: 95.2% of mobile pages have a viewport tag (2025) [7]
Tap-to-call
7 points
Why it matters
For a local service business, the phone call is the lead. A tel: link turns your number into something a thumb can tap; without it, a phone visitor has to memorize your number, switch apps, and type it, and every step loses people. This one needs no statistics: your number is either tappable on a phone or it is not, and you can test it yourself in ten seconds.
How we measure it
We look for any link using the tel: format, the web standard that makes a phone number tappable. Present passes. Absent fails.
Pass At least one tap-to-call link
Fail No tap-to-call link on the page
RFC 3966: the tel URI standard (2004) [15] · MDN: creating phone number links (2025) [16]
23 of 100 points
Loading fast
What the page makes a visitor download and wait for, measured from the network, not guessed.
Server response time
7 points
Why it matters
Before a single image or word can load, your server has to answer. Google’s published guidance calls a response under 0.8 seconds good and over 1.8 seconds poor, and only about half of real websites hit the good line. Google itself notes this is not a Core Web Vital, so we weight it below the phone checks. A slow answer still delays everything that follows.
How we measure it
We request your page from Cloudflare's network, follow any redirects, and time the gap between asking and the first byte of the answer. Under 800ms passes, the same threshold Google documents. Up to 1800ms warns. Past that fails. One measurement, live, not an average.
Pass First byte in under 800ms (Google's "good")
Warning 800ms to 1800ms
Fail Over 1800ms (Google's "poor")
web.dev: Time to First Byte thresholds (2024) [17] · Web Almanac: only 44-55% of origins hit the good TTFB line (2025) [18]
Page size
4 points
Why it matters
Every kilobyte of page code downloads before a phone can draw anything. The median page on the web ships about 22KB of HTML. Builder pages routinely ship ten to fifty times that: code the visitor pays to download and never sees. No published standard says where "too heavy" starts, so our thresholds are our own judgment, stated as multiples of that median.
How we measure it
We count the bytes of HTML your page sends, the document itself, before images. Under 150KB passes (already several times the web's median). Under 500KB warns. Heavier fails. These lines are ours, and we label them that way.
Pass HTML under 150KB
Warning 150KB to 500KB
Fail Over 500KB
Scripts blocking the page
6 points
Why it matters
A script loaded the old way stops the browser dead until it finishes downloading. Nothing draws, nothing responds. Google’s Lighthouse flags exactly this pattern, and only about one page in seven passes that audit. The fix is usually one word of code.
How we measure it
We count external scripts in your HTML that load without defer or async, the two standard ways to keep a script from blocking. Zero passes. Up to 2 warns. More fails. We report the count; we do not invent a milliseconds-saved estimate, because Lighthouse does not publish how it calculates one.
Pass No blocking scripts
Warning 1 to 2 blocking scripts
Fail More than 2 blocking scripts
Chrome Developers: Eliminate render-blocking resources (2024) [20] · Web Almanac: only 13-15% of pages pass this audit (2025) [18]
Modern image formats
4 points
Why it matters
Google’s own study measured WebP images 25 to 34 percent smaller than JPEG at the same quality. Adoption is still low: most main images on the web are JPEG or PNG. A photo-heavy page in old formats makes every visitor download weight the site does not need.
How we measure it
We look at each image's file type. If more than 60% are old formats (JPEG, PNG, GIF) it fails. More than 20% warns. A page with no images at all also warns, because a local business page with no photos is a hard sell.
Pass 20% or fewer images in old formats
Warning Up to 60% in old formats, or no images on the page
Fail Over 60% in old formats
Google Developers: WebP compression study (25-34% smaller) (2020) [21] · Web Almanac: WebP is still only 11% of main images (2025) [18]
Images load as needed
2 points
Why it matters
Images below the fold do not need to download before the visitor scrolls to them. Lazy loading is built into every modern browser and costs one attribute. On an image-heavy page it is free speed.
How we measure it
We only judge this on pages with 8 or more images. If none of them use the loading="lazy" attribute, it warns. It never fails, because a short page can be fine without it.
Pass Lazy loading in use, or fewer than 8 images
Warning 8+ images and none load lazily
11 of 100 points
Turning visitors into calls
A website that ranks but never gets contacted is a brochure. These checks are about the last step.
Contact form
9 points
Why it matters
Not everyone calls. A short form catches the visitor comparing three companies at midnight. And a form that opens the visitor’s email app instead of sending the message is worse than none: on a phone with no mail app set up, it silently does nothing. We have watched a real business lose leads to exactly that, which is why it is an automatic fail here.
How we measure it
We look for form elements in your HTML. A working form passes. No form but a link to a contact page warns, because every extra click loses people. No form and no contact link fails. A form that submits through mailto: fails outright.
Pass A real form on the page
Warning No form, but a link to a contact page
Fail No way to reach you, or a mailto: form
MDN: how form data is actually sent (and why mailto: is unreliable) (2024) [23]
Visitor measurement
2 points
Why it matters
You cannot fix what you cannot see. Without any measurement you do not know how many people visited, which page they left from, or whether last month’s change helped or hurt. This is the lightest-weighted check in the group because it is about running the site well, not about the site itself.
How we measure it
We look for the loading code of the common measurement tools: Google Analytics (which alone runs on more than half of all websites), Plausible, Fathom, Cloudflare, Matomo, Hotjar, Clarity. Any of them passes. None warns.
Pass A measurement tool is installed
Warning No measurement found
W3Techs: Google Analytics runs on 55.9% of all websites (2026) [24]
14 of 100 points
Trust signals
The small things visitors judge in seconds: security, freshness, and how the site looks when shared.
Secure connection
6 points
Why it matters
Chrome has stamped "Not secure" next to the address of every plain HTTP page since 2018, about 92% of pages are now HTTPS, and Google has announced the next step: from October 2026, Chrome will ask permission before even loading an insecure public site. Being the site that triggers that prompt is not a look any business survives.
How we measure it
We check the address your site actually answers on after redirects. HTTPS passes. HTTP fails.
Pass Served over HTTPS
Fail Served over plain HTTP
Google Security Blog: HTTPS by default in Chrome (Oct 2026) (2025) [25] · Chromium Blog: marking HTTP "not secure" (Chrome 68) (2018) [26] · Web Almanac: 91.5% of pages load over HTTPS (2025) [7]
Link preview
3 points
Why it matters
When your link gets texted to a spouse or posted in a local Facebook group, the preview card comes from Open Graph tags, and only about a third of pages set the preview image. There is no honest study on what that costs in clicks, so we will not invent one. The failure is something you can see yourself: text your own site to someone and look at the grey box.
How we measure it
We look for the two tags that build the card: og:title and og:image. Both passes. One warns. Neither fails.
Pass Preview title and image both set
Warning Only one of the two set
Fail No preview tags at all
The Open Graph protocol (2024) [27] · Web Almanac: og:image on only ~37% of pages (2021) [28]
Image descriptions
2 points
Why it matters
Alt text is the written description a screen reader speaks aloud and Google reads. WebAIM’s annual survey of the top million homepages found 16.2% of all homepage images missing it, and more than half of homepages failing at least once. It is one of the most common accessibility failures on the web, and one of the easiest to fix.
How we measure it
We count images missing the alt attribute entirely. None missing passes. Up to half missing warns. More than half fails. An empty alt on a decorative image counts as present, which is correct usage.
Pass Every image has an alt attribute
Warning Up to half are missing it
Fail More than half are missing it
The WebAIM Million: 16.2% of homepage images lack alt text (2026) [29]
Redirect hops
1 point
Why it matters
Each redirect hop is a round trip to a server before your page even starts loading. Google says it follows up to 10 hops but advises keeping chains to 3 at most, and ideally redirecting straight to the destination. One hop, usually http to https or adding www, is normal. We hold a tighter line than Google because every extra hop is avoidable.
How we measure it
We follow your address hop by hop, up to five, and count them. One or none passes. More warns. We report the count, not an invented time cost, because no honest per-hop figure exists.
Pass Zero or one redirect
Warning Two or more redirects
Google Search Central: keep redirect chains to 3 or fewer (2025) [30]
Fresh copyright year
2 points
Why it matters
A footer that still says an old year tells every visitor nobody is home. Honesty box: no study measures this exact signal. It is our inference from Stanford’s web credibility research, which found people judge trustworthiness partly on whether a site looks current and cared for. That is why it is worth 2 points, not 10.
How we measure it
We scan the page text for a copyright line and read the newest year in it. This year or last year passes. Older warns. No copyright line at all is simply not judged, and passes.
Pass Copyright year is current, or no copyright line to judge
Warning Copyright year is two or more years old
Stanford Web Credibility Project: guidelines (Fogg et al.) (2003) [31]
The second instrument
Google's scores, explained.
When Google's PageSpeed service answers, the report shows four scores from Lighthouse, Google's own testing tool. It loads your page on a simulated mid-range phone over a throttled connection, because that is the honest worst case your customers live in. These are lab tests: repeatable, but not identical run to run.
Performance
How fast the page actually loads and responds on a mid-range phone over mobile network conditions. Weighted: TBT 30%, LCP 25%, CLS 25%, FCP 10%, Speed Index 10%.
SEO
Google’s own automated checks of whether the page can be crawled and understood. Every audit counts equally.
Accessibility
Whether people using screen readers, keyboards, or high zoom can use the page. Audits weighted by user-impact severity, no partial credit.
Best practices
Modern standards: safe libraries, no browser errors, correct image sizing.
The speed numbers inside the Performance score
Thresholds are Google's published ones[32][33][34][35]. We show lab measurements only, by choice: Google's real-user field data only exists for sites with substantial Chrome traffic, which most local business sites do not have. The lab test works for everyone and is measured fresh on every run.
What we deliberately do not check.
A methodology is as much about what it refuses to score. These are the things other graders wave numbers at that we leave out, on purpose.
- Your Google ranking
- Where you rank depends on your competitors, your reviews, and your links, none of which live in your page code. Any tool that gives you a ranking score from your HTML alone is making it up.
- Backlinks and domain authority
- That data lives in third-party crawl databases, not on your website. We would be reselling someone else’s estimate and calling it a measurement.
- Your Google Business Profile
- For a local business it matters as much as the website. It is also a separate thing with separate fixes, so we keep it out of this grade rather than blur the two.
- Design quality
- Whether a site looks trustworthy and current is a human judgment. We make that call with eyes, not regex, and we do it when we build your site.
- Your actual conversion rate
- We cannot see your traffic or your phone log, so we will not pretend to know how many visitors become customers. Our Lost Leads calculator lets you run that math with your own numbers instead.
Honest limits
- We grade one page, the one you give us. It is almost always the homepage, which is also the page Google and your visitors judge first.
- We read the HTML your server sends, before any JavaScript runs. Google can render JavaScript, so where that changes a result we say so in the check itself and score gently.
- Google’s Lighthouse numbers vary a little run to run. That is normal for lab testing, and it is why we show their scores as theirs instead of folding them into our grade.
- Automated checks have a ceiling. WebAIM, who run the largest accessibility survey on the web, note that automated tools catch less than half of real accessibility problems. Ours are no exception, which is one reason a human builds your site.
- A pass is a proxy, not a guarantee. A site can pass every mechanical check and still lose customers to a bad photo or a confusing offer. The checks catch the measurable half.
Sources
Every threshold above traces to one of these. If a claim cannot be sourced, it does not appear in the tool.
- Google Search Central: Control your title links (2025)
- Zyppy: Google rewrites 61.6% of title tags (80,959 titles) (2022)
- Google Search Central: Control your snippets (2025)
- Portent: Google rewrites 68-71% of meta descriptions (2020)
- Ahrefs: 62.78% rewritten across 20,000 keywords (2020)
- John Mueller, Google: multiple H1s are fine (#AskGoogleWebmasters) (2020)
- Web Almanac: only 71% of pages have an H1 (2025)
- Web Almanac: LocalBusiness markup on 3.97% of pages (2024)
- Google Search Central: How structured data works (2025)
- Google Search Central: Consolidate duplicate URLs (2025)
- Google Search Central: robots.txt introduction (2025)
- Google Search Central: Learn about sitemaps (2025)
- Google Search Central: Creating helpful content (2025)
- Google Search Central: mobile-first indexing completed (2023)
- RFC 3966: the tel URI standard (2004)
- MDN: creating phone number links (2025)
- web.dev: Time to First Byte thresholds (2024)
- Web Almanac: only 44-55% of origins hit the good TTFB line (2025)
- Web Almanac: median page ships ~22KB of HTML (2025)
- Chrome Developers: Eliminate render-blocking resources (2024)
- Google Developers: WebP compression study (25-34% smaller) (2020)
- web.dev: Browser-level image lazy loading (2024)
- MDN: how form data is actually sent (and why mailto: is unreliable) (2024)
- W3Techs: Google Analytics runs on 55.9% of all websites (2026)
- Google Security Blog: HTTPS by default in Chrome (Oct 2026) (2025)
- Chromium Blog: marking HTTP "not secure" (Chrome 68) (2018)
- The Open Graph protocol (2024)
- Web Almanac: og:image on only ~37% of pages (2021)
- The WebAIM Million: 16.2% of homepage images lack alt text (2026)
- Google Search Central: keep redirect chains to 3 or fewer (2025)
- Stanford Web Credibility Project: guidelines (Fogg et al.) (2003)
- web.dev: Web Vitals thresholds (LCP, CLS, INP) (2024)
- Chrome Developers: Lighthouse performance scoring (2024)
- Lighthouse scoring documentation (SEO and accessibility categories) (2025)
- PageSpeed Insights release notes (Lighthouse 13) (2025)
Now run it on your own site.
The checkup takes about ten seconds and your grade shows before anything is asked of you. If the grade stings, remember we build your homepage first, free, before any money changes hands.