Structure problems on small business websites
15 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 H1 missing or duplicated, on 58% of them.
| Finding | Share of scans | Scans | Sites | Severity |
|---|---|---|---|---|
| H1 missing or duplicated | 58% | 3,744 | 3,111 | Warning |
| Meta description missing or the wrong length | 51.6% | 3,331 | 2,743 | Warning |
| Thin heading structure | 46.9% | 3,026 | 2,501 | Warning |
| Shared links preview badly | 41.5% | 2,679 | 2,175 | Warning |
| No canonical URL declared | 36.5% | 2,354 | 1,919 | Warning |
| Title length is off | 28.7% | 1,848 | 1,528 | Warning |
| No favicon | 23.8% | 1,537 | 1,255 | Low |
| No XML sitemap found | 17.8% | 1,151 | 933 | Warning |
| This page is missing from its own sitemap | 11.3% | 729 | 601 | Warning |
| No language attribute declared | 10.8% | 699 | 571 | Serious |
| Page title is missing | 7.3% | 468 | 389 | Critical |
| No robots.txt | 6.1% | 393 | 316 | Low |
| The server sends a noindex header | 4.6% | 294 | 242 | Serious |
| A linked page did not load | 2.8% | 182 | 163 | Critical |
| The canonical URL points somewhere unexpected | 1.6% | 100 | 77 | Warning |
H1 missing or duplicated
58% of the free scans raised this: 3,744 scans across 3,111 distinct sites, 95% interval 56.5% to 59.6%. Severity: Warning.
What it means
The H1 tells both people and machines what a page is about. None leaves the subject ambiguous; several compete with each other and none wins.
How to fix it
Give each page exactly one <h1> that names its subject, and demote the others to <h2>. If a template puts a logo or a slogan in an H1, move it to a plain element.
How to check it yourself
View source and search for h1. Count how many appear: zero or more than one both mean the H1 is missing or duplicated.
What fixed looks like
View source shows exactly one h1 naming the page's subject, with any others demoted to h2.
Meta description missing or the wrong length
51.6% of the free scans raised this: 3,331 scans across 2,743 distinct sites, 95% interval 49.9% to 53.3%. Severity: Warning.
What it means
The meta description is the summary search engines usually show under the title: without a good one, they invent one from the page instead.
How to fix it
Write a meta description of 140-160 characters that says what the page offers and why to click. If you leave it out, the search engine writes one from whatever text it finds first.
How to check it yourself
View source and search for name="description" in the head. Check whether it exists and whether it falls between about 140 and 160 characters.
What fixed looks like
View source shows a meta description of about 140 to 160 characters describing the page's offer.
Thin heading structure
46.9% of the free scans raised this: 3,026 scans across 2,501 distinct sites, 95% interval 45.1% to 48.7%. Severity: Warning.
What it means
Headings are how a reader and a crawler both skim a page for its shape. Too few, and the page reads as one undifferentiated block.
How to fix it
Give the page one <h1> naming its subject, then <h2>s for each section in reading order. Do not skip levels, and do not use a heading purely to make text big.
How to check it yourself
View source and count the h2 tags against the page's visible sections. Few or none relative to the sections means the heading structure is thin.
What fixed looks like
View source shows an h1 naming the subject followed by h2s for each section in reading order.
Shared links preview badly
41.5% of the free scans raised this: 2,679 scans across 2,175 distinct sites, 95% interval 39.7% to 43.4%. Severity: Warning.
What it means
Without Open Graph tags, a link shared on social media or in chat renders with no image, title or description.
How to fix it
Add og:title, og:description, og:image and og:type to the head. Without them a shared link renders as a bare URL, which almost nobody clicks.
How to check it yourself
View source and search the head for og:title, og:description and og:image. Missing tags mean a shared link will show no preview.
What fixed looks like
View source shows og:title, og:description, og:image and og:type tags in the head.
No canonical URL declared
36.5% of the free scans raised this: 2,354 scans across 1,919 distinct sites, 95% interval 34.6% to 38.5%. Severity: Warning.
What it means
A canonical tag tells search engines which address is the real one when a page is reachable under more than one URL.
How to fix it
Add <link rel="canonical" href="https://example.com/this-page"> to the <head> of every page, with the full absolute URL of that page's preferred address.
How to check it yourself
View source and search the head for link rel="canonical". Its absence means no canonical URL is declared.
What fixed looks like
View source shows a canonical tag in the head pointing at the page's own full URL.
Title length is off
28.7% of the free scans raised this: 1,848 scans across 1,528 distinct sites, 95% interval 26.6% to 30.8%. Severity: Warning.
What it means
A title that is too short wastes the space a search result gives it; too long, and the end gets cut off.
How to fix it
Rewrite the title to sit between about 50 and 60 characters. Under 30 wastes the space a search result gives you; over 60 gets cut off mid-phrase.
How to check it yourself
View source and search for the title tag. Count its characters and check whether it falls between about 50 and 60 characters.
What fixed looks like
View source shows a title tag of about 50 to 60 characters that is not cut off.
No favicon
23.8% of the free scans raised this: 1,537 scans across 1,255 distinct sites, 95% interval 21.8% to 26%. Severity: Low.
What it means
A missing favicon shows as a blank tab and a blank bookmark icon, small, but the first thing a returning visitor recognizes.
How to fix it
Add a favicon at /favicon.ico plus <link rel="icon"> in the head. It is the mark shown in tabs, bookmarks and search results.
How to check it yourself
Load the page and look at the browser tab icon, then open example.com/favicon.ico directly. A blank tab or a failed request means none exists.
What fixed looks like
The browser tab shows a favicon, and example.com/favicon.ico loads an icon instead of failing.
No XML sitemap found
17.8% of the free scans raised this: 1,151 scans across 933 distinct sites, 95% interval 15.7% to 20.2%. Severity: Warning.
What it means
Without a sitemap, crawlers rely on internal links alone to discover pages, and deep pages get missed.
How to fix it
Publish a sitemap.xml listing your real pages and reference it from robots.txt with a Sitemap: line. It is how pages with few inbound links get discovered.
How to check it yourself
Open example.com/sitemap.xml directly in the browser. If it fails to load or shows an error instead of a list of URLs, no sitemap exists.
What fixed looks like
Opening example.com/sitemap.xml returns a list of your real pages, referenced from robots.txt.
This page is missing from its own sitemap
11.3% of the free scans raised this: 729 scans across 601 distinct sites, 95% interval 9.2% to 13.8%. Severity: Warning.
What it means
A sitemap that omits real pages makes them harder to discover, especially ones with few internal links pointing at them.
How to fix it
Add the page to your sitemap.xml, or fix the generator that skipped it. Every URL you want indexed should appear exactly once, with a lastmod you actually update.
How to check it yourself
Open example.com/sitemap.xml and search for this page's exact URL. If it does not appear, the page is missing from the sitemap.
What fixed looks like
The page's URL appears exactly once in sitemap.xml, with a lastmod you keep current.
No language attribute declared
10.8% of the free scans raised this: 699 scans across 571 distinct sites, 95% interval 8.7% to 13.4%. Severity: Serious.
What it means
Without a declared language, screen readers and translators have to guess how to pronounce or translate the page.
How to fix it
Add lang="en" (or the right code) to the <html> element. Screen readers use it to pick a pronunciation and translators to pick a source language.
How to check it yourself
View source and search for lang= on the opening html tag. Its absence leaves screen readers and translators without a declared language to work from.
What fixed looks like
View source shows lang="en" or the right code declared on the html element.
Page title is missing
7.3% of the free scans raised this: 468 scans across 389 distinct sites, 95% interval 5.2% to 10%. Severity: Critical.
What it means
A page needs a <title> tag stating what it is: the most-read signal for how it appears in search and share previews.
How to fix it
Give the page a <title> of roughly 50-60 characters that names the thing and the place: "Flat roof repair in Greenville, SC | Acme Roofing". One per page, never repeated across pages.
How to check it yourself
View source and search for a title tag inside the head. Its absence means the page has no title.
What fixed looks like
View source shows a title tag of about 50 to 60 characters naming the thing and the place.
No robots.txt
6.1% of the free scans raised this: 393 scans across 316 distinct sites, 95% interval 4.1% to 8.9%. Severity: Low.
What it means
robots.txt is where a site states which paths are open to crawlers and where its sitemap lives: its absence leaves both unstated.
How to fix it
Publish a robots.txt at the site root. An empty one that allows everything is fine; a missing one leaves every crawler guessing.
How to check it yourself
Open example.com/robots.txt directly in the browser. If it fails to load or shows an error page instead of plain text, no robots.txt exists.
What fixed looks like
Opening example.com/robots.txt returns a file, even an empty one that allows everything.
The server sends a noindex header
4.6% of the free scans raised this: 294 scans across 242 distinct sites, 95% interval 2.7% to 7.6%. Severity: Serious.
What it means
X-Robots-Tag can block indexing even when the page markup looks fine: a header a crawler reads before it sees the HTML.
How to fix it
Remove the X-Robots-Tag: noindex header from your server or CDN config for the paths you want indexed. It overrides the page markup, so a clean <head> will not save you.
How to check it yourself
Run curl -sI https://example.com and look for an X-Robots-Tag line containing noindex in the response headers.
What fixed looks like
The curl response headers carry no X-Robots-Tag: noindex line for the pages you want indexed.
A linked page did not load
2.8% of the free scans raised this: 182 scans across 163 distinct sites, 95% interval 1.2% to 6.4%. Severity: Critical.
What it means
A broken internal link sends both visitors and crawlers to a dead end.
How to fix it
Fix the inner pages that failed to load. A linked page returning a 404 or a 500 costs you the crawl budget spent on it and the visitor who clicked it.
How to check it yourself
Click through the site's internal links, or run curl -o /dev/null -w '%{http_code}' on each one, and note any that return a 404 or 500.
What fixed looks like
Each internal link you follow loads a real page instead of a 404 or 500.
The canonical URL points somewhere unexpected
1.6% of the free scans raised this: 100 scans across 77 distinct sites, 95% interval 0.4% to 6.3%. Severity: Warning.
What it means
A canonical naming a different domain, a different page, or one that could not be read tells search engines to credit the wrong address.
How to fix it
Point each page's canonical at its own final URL on your own domain. A canonical aimed at another domain hands the credit for that page to somebody else.
How to check it yourself
View source and check the href inside link rel="canonical". Compare it against the page's own address and domain.
What fixed looks like
View source shows the canonical href matching the page's own final URL on your own domain.
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: AI and answer engines, Trust and privacy, Accessibility, Speed.
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.