Pourya Shahroudi
  1. Home
  2. Notes
  3. Forty sites

What 40 local business websites changed in the site check

Every new check was measured on real sites before it was built. The numbers changed how speed is graded and kept one check from being built at all.

The free site check reads a business's website the way a visitor's browser and Google would, and lists what to fix first. To know whether it gets things right, I keep a fixed panel of 40 small businesses in the Bay Area, five each of auto repair shops, bakeries, dentists, gyms, plumbers, restaurants, gift shops and hair salons, chosen from local listings in Campbell, San Jose and Los Gatos. Every week a scheduled job scans all 40 and compares the results with a baseline I reviewed by hand.

The businesses are not named here. They did not ask to be checked, and the counts are what matter.

Checking the checker

Before trusting the baseline, I checked 40 of its findings by other means: the raw page fetched again, mail records looked up through a different DNS service, and the page opened in a real browser. 39 were right. The miss was a page with no title in its HTML, where a script adds one after the page loads. That finding now says what the HTML shows and names the blind spot.

What turned up most often

Most sites passed most checks. All 40 loaded, all 40 let search engines in, and all 37 served over HTTPS had a valid certificate. The problems that did turn up were small ones, repeated across many sites.

The eight most common problems on the panel

Missing one or more of three security headers
31 of 40
Search description missing or too long
20 of 40
No working DMARC policy for mail
16 of 32
Does not tell browsers to insist on HTTPS
15 of 37
Town not in the title or main heading
13 of 37
No opening hours on the page
12 of 37
Title missing, too long or too short
11 of 40
No picture when the link is shared
11 of 40
The panel's reviewed baseline, 28 October 2026, counting Fix and Worth fixing. Each bar is a share of the sites that check could judge: 37 where it needs HTTPS or a page it could read for the business's details, 32 for domains that receive mail.

The rarer findings were the more serious ones. Three sites still work only over plain http. Six of the 31 domains the mail check could judge publish no SPF record and no DKIM key under the names mail providers usually use, so nothing tells a receiving server that their mail is really theirs.

Leaving speed out, the scores ran from 41 to 97 out of 100, and half the sites scored above 82.

Speed was graded on the wrong numbers

Each check added since the panel existed was tried on it first, and on 40 more small businesses in Athens, Georgia; Bend, Oregon; Santa Fe, New Mexico; Bangor, Maine; and Lancaster, Ohio, so the Bay Area does not decide alone. Speed is where that changed the most.

The check asks Google's PageSpeed Insights how fast a page loads. Its test runs on a simulated phone over a slow connection, and it called most of the panel slow. Google also keeps timings from real visitors using Chrome, for sites that have enough of them. It had them for 12 of the 41 sites (the 40 and this one), and page by page for 10.

On all 10, the simulated phone said the main content took between 4.4 and 20.8 seconds to appear, which the check graded as a Fix. For real phone visitors, three visits in four saw it within 2.4 seconds on nine of those sites, and within 3.1 seconds on the tenth.

When the main content appears, simulated phone against real visitors

  • Google's simulated phone
  • Real phone visitors, three in four

Hair salon

20.8 s
2.4 s

Bakery

19.9 s
1.3 s

Restaurant

17.2 s
1.2 s

Restaurant

16.8 s
1.5 s

Restaurant

13.3 s
0.9 s

Restaurant

13.1 s
1.8 s

Gift shop

12.0 s
1.2 s

Gym

11.2 s
3.1 s

Bakery

6.1 s
2.3 s

Bakery

4.4 s
1.5 s
The 10 panel sites where Google has real-visitor data for the page itself, 28 October 2026. Every bar shares one scale, from 0 to 21 seconds. Google's line for a good page is 2.5 seconds.

Google ranks pages by the real timings. So where Google has them, the check now grades by them, and the simulated result becomes an optional note that says where it came from. Where Google has none, which was 29 of the 41, the simulated grade stands, and the report says that is all it has. The real data also showed something the simulation never did: on one restaurant's page, real visitors saw the layout jump while it loaded, at 0.49 on a scale where Google calls anything over 0.25 poor.

A tag that records nothing

Google stopped recording visits sent to the old kind of Analytics ID, the kind that starts with UA-, in July 2023. The tag still loads without an error, so a site can carry it for years while its account stays empty. 3 of the 40 panel sites load only that tag, and 5 of the 80. That is few, but each of those owners gets no visit counts from it at all, so the check now flags it as worth fixing.

A privacy policy nobody links to

California asks a commercial site that collects a name, email address or phone number from Californians to post a privacy policy, and a link on the home page with the word privacy in it is one of the ways the law names. 7 of the 40 panel sites ask for contact details in a form and link no privacy policy from the home page. Across all 80 sites, 15 were flagged, and I opened each one in a browser to confirm that the form was real and the link really missing. All 15 were right. Four were online shops whose policy page existed, with nothing linking to it.

A check that was never built

A website's host can turn away an AI company's crawler even when the site's robots.txt invites it in, and the check reads only robots.txt. Before building anything for that, I asked all 80 home pages for their content twice, under 13 names: a browser, Google's crawler, a made-up bot, and the crawlers of OpenAI, Anthropic and Perplexity among them.

None turned away ChatGPT's crawlers. Two turned away one other assistant's crawler each, and both blocks repeated from a second network, so those hosts were deciding by name. Ten turned away only the crawlers that collect text to train models, which an owner may well choose on purpose. A check that would almost never find anything, at six more requests on every run, was not worth building. The numbers are kept in case that changes.

What these numbers cannot say

The panel is 40 businesses of eight kinds in one region, plus 40 elsewhere, on one date. The check reads each page as the server sends it, so anything a script adds later is invisible to it, and a firewall can treat it differently from a real visitor. The panel exists to catch the check being wrong. It is too small to describe small businesses in general.

The same check runs on any address, free, at shahroudi.us/check.

Notes

More notes

All notes