Speed problems on small business websites
7 checks in this group, each a count from our own scanner over 6,450 free four-page scans in the last 90 days. The most common is Render-blocking scripts, on 47.1% of them.
| Finding | Share of scans | Scans | Sites | Severity |
|---|---|---|---|---|
| Render-blocking scripts | 47.1% | 3,040 | 2,537 | Warning |
| Heavy HTML document | 43% | 2,771 | 2,298 | Warning |
| Images all load at once | 38.5% | 2,481 | 2,049 | Warning |
| Many separate stylesheet requests | 36.7% | 2,364 | 1,958 | Warning |
| Images shift the layout as they load | 32.5% | 2,096 | 1,735 | Warning |
| Slow server response | 25.5% | 1,646 | 1,474 | Serious |
| Compression not confirmed | 9.5% | 613 | 490 | Low |
Render-blocking scripts
47.1% of the free scans raised this: 3,040 scans across 2,537 distinct sites, 95% interval 45.4% to 48.9%. Severity: Warning.
What it means
External scripts loaded without defer or async stop the browser from drawing the page until each one has downloaded and run. Every one of them is a pause before the first thing a visitor sees.
How to fix it
Add defer to any script the first paint does not need, and load marketing and chat tags last. A script the page cannot draw without belongs inline or first, and there is rarely more than one.
How to check it yourself
View source and look at the script tags in the head. Any without a defer or async attribute will block the page from drawing until it loads.
What fixed looks like
Scripts in the head carry defer or async, so the browser draws the page without waiting on them.
Heavy HTML document
43% of the free scans raised this: 2,771 scans across 2,298 distinct sites, 95% interval 41.1% to 44.8%. Severity: Warning.
What it means
A large HTML document takes longer to download and parse before a visitor sees anything.
How to fix it
Cut total page weight: compress images to WebP or AVIF, drop unused fonts and third-party scripts. Every 100KB costs real seconds on a phone.
How to check it yourself
Run curl -so /dev/null -w '%{size_download}' https://example.com to see the raw HTML size in bytes, separate from images, fonts and scripts.
What fixed looks like
The HTML document is smaller, with images compressed and unused fonts and scripts removed.
Images all load at once
38.5% of the free scans raised this: 2,481 scans across 2,049 distinct sites, 95% interval 36.6% to 40.4%. Severity: Warning.
What it means
Loading every image immediately, including ones off-screen, competes for bandwidth with the content a visitor can actually see.
How to fix it
Add loading="lazy" to images below the first screen, so the browser fetches them only as a visitor scrolls near them.
How to check it yourself
Open DevTools, go to Network, reload the page, and watch whether images below the fold download immediately or wait until you scroll to them.
What fixed looks like
Images below the first screen download only as you scroll near them in the Network panel.
Many separate stylesheet requests
36.7% of the free scans raised this: 2,364 scans across 1,958 distinct sites, 95% interval 34.7% to 38.6%. Severity: Warning.
What it means
Each additional stylesheet is a round trip before the page can be styled and shown.
How to fix it
Combine separate stylesheets into fewer files, or inline the small amount of CSS the first paint needs directly in the head.
How to check it yourself
Open DevTools, go to Network, filter by CSS, and reload the page. Count how many separate stylesheet requests appear before the page renders.
What fixed looks like
The Network panel shows a small number of stylesheet requests before the page renders.
Images shift the layout as they load
32.5% of the free scans raised this: 2,096 scans across 1,735 distinct sites, 95% interval 30.5% to 34.5%. Severity: Warning.
What it means
Images without reserved dimensions push content around as they arrive, which can make a visitor click the wrong thing.
How to fix it
Add width and height attributes to every img tag, so the browser reserves the right space before the image arrives.
How to check it yourself
View source and check img tags for width and height attributes. Missing attributes mean the browser has no reserved space and content will shift.
What fixed looks like
View source shows width and height attributes on every img tag, and the layout stays still as images load.
Slow server response
25.5% of the free scans raised this: 1,646 scans across 1,474 distinct sites, 95% interval 23.5% to 27.7%. Severity: Serious.
What it means
Time to first byte is the floor every other speed metric sits on: a slow origin response delays everything after it.
How to fix it
Get time-to-first-byte under about 800ms: cache HTML at the edge, and check for a slow database call or a redirect chain in front of the page.
How to check it yourself
Run curl -so /dev/null -w '%{time_starttransfer}' https://example.com to see how many seconds pass before the first byte arrives.
What fixed looks like
The curl time to first byte falls under about 800ms.
Compression not confirmed
9.5% of the free scans raised this: 613 scans across 490 distinct sites, 95% interval 7.4% to 12.1%. Severity: Low.
What it means
Without confirmed response compression, pages transfer larger than they need to.
How to fix it
Turn on Brotli or gzip for text responses at your server or CDN. It typically cuts HTML, CSS and JS by 70% for one configuration change.
How to check it yourself
Run curl -sI -H 'Accept-Encoding: gzip, br' https://example.com and look for a Content-Encoding line in the response headers.
What fixed looks like
The curl response headers include a Content-Encoding line showing gzip or Brotli.
How we measured this
A count of what our own scanner found, not a survey and not an estimate: each share above is over every free four-page scan in the last 90 days that loaded at least one page, which is 6,450 scans. Of those, 6,316 were run by Go Voltic itself, our research sweep over a pool of small-business sites and our own monitoring, and 132 came from visitors using the free scan; a site counts once in the distinct-sites figure whoever scanned it. 2 predate the label that tells the two apart and are counted in the total without a side. Deep scans are a separate population and never in this denominator. Figures on this page were computed on 2026-10-15.
The methodology explains the denominator, the distinct-sites count and the 95% interval. The benchmarks page puts these shares beside every other finding, with the whole table as CSV and JSON.
Other groups of findings
Measured on the same scans: Structure, AI and answer engines, Trust and privacy, Accessibility.
Check your own site
The free scan reads four pages and reports every finding it raises, including every one on this page. It takes about ten seconds and asks for nothing but the address.