Twenty-eight automated checks run against 3,986 UK trade business websites, sampled from the Companies House register. Published as aggregates: national rates, and the same rates cut by trade, by company age and by region.
The trade press repeats a lot of claims about small-business websites. Almost none of them come with a sampling frame, a denominator, or a definition of what was measured. This repository is the denominator.
| File | Contents |
|---|---|
data/uk-trade-website-scan-2026.json |
The sampling frame, the selection funnel, 28 checks with national rates, and the same checks by trade, company age and region |
| Measure | Value |
|---|---|
| Active UK companies on the register | 5,190,464 |
| Of those, carrying a trade SIC code | 401,902 (7.74%) |
The frame is broken out by 19 trade groupings and by 136 postcode areas, both included in the file. That breakdown is a straight derivation from the Companies House bulk register and is useful on its own, independently of anything we scanned.
| Stage | Count |
|---|---|
| Attempted | 4,751 |
| Responded | 4,296 |
| Unreachable | 455 |
| Excluded, not a business site | 300 |
| Analysed | 3,986 |
Placeholder and under-construction sites were kept, not excluded: 168 of them.
A company entered the scan only if its website could be identified from its registered company name. That selects for businesses whose trading name and domain match, which skews established and professional. The national picture is therefore likely to be worse than these figures, not better.
No figure here supports a sentence of the form "X% of UK plumbers". The frame is active limited companies carrying a trade SIC code. Sole traders who never incorporated are absent entirely, and they are a large part of the trades.
| Check | Fails | What it detects |
|---|---|---|
| Insurance stated | 89.4% | No text match for "public liability", "fully insured" or a money figure near insurance words |
| Accreditation named | 83.6% | No text match for Gas Safe, OFTEC, NICEIC, NAPIT, TrustMark, FENSA, Which? Trusted Traders, Checkatrade, SafeContractor or City & Guilds |
| Reviews shown on site | 81.3% | No Trustpilot, Google-review widget, Checkatrade, Which?, MyBuilder, Rated People or Bark embed or link |
| Guarantee stated | 73.9% | No text match for "guarantee", "warranty" or "no fix no fee" |
| Call button thumb-sized | 73.0% | The call element is smaller than 40x40 CSS px, or is covered. Runs only where a call element exists |
| Proof above the fold | 72.2% | No review, rating, accreditation or guarantee element in the first 844 px at a 390x844 viewport |
| Enquiry form exists | 63.9% | No <form> with two or more inputs, after excluding search and newsletter forms |
Every check in the file carries two fields. label is a plain-English business framing. detects is
the mechanical test the scanner actually performs. Cite detects.
The gap between the two is real and it matters. The clearest case is check A9, labelled "a route that
works out of hours", which fails on 54.7% of sites. What A9 actually detects is the absence of a form,
a wa.me link and any live-chat script signature. It never reads opening hours and it never tests
whether a call is answered. Reported as "54.7% have no way to take an enquiry outside working hours"
it would be an overstatement. Reported as "54.7% have no form, WhatsApp link or chat widget" it is
exactly what was measured.
ran is the denominator and it is not always 3,986. Several checks are conditional on an earlier
check passing: A3 and A4 only run where a phone number was found, A7 only where a form was found,
B5 only where an ads tag was found.
Two checks, E4 (stock photography) and E5 (real job photos), are one-way detectors. A hit proves
the thing is present; a miss proves nothing, because the detector matches filename patterns. Those
are reported as pct_detected floors, not as rates, and are kept in a separate
one_way_detectors block so they cannot be misread as failure rates.
Per-site results. The scan identifies named businesses, many of them sole traders, and publishing per-site failures would be publishing personal data about identifiable people. Only aggregates appear here, and the smallest published cell is a trade grouping of several hundred sites.
- Scanned at a 390x844 mobile viewport, rendered, not source-only.
- Page weight excludes video resource types and is sanity-bounded; one uncapped site summed to 173MB.
- Render timing is measured on our connection and is not published as a universal number.
- Google Ads conversion tracking (B5) can only be observed from the page. Conversions configured inside an Ads account are invisible to any external scanner and the check says so.
- Consent-gated widgets are a known false-negative source: nothing was accepted, so a chat widget that loads only after consent is recorded as absent.
Bros, Defining Style Ltd (2026). UK trade business website scan 2026: 28 checks across 3,986 sites. Zenodo. https://doi.org/10.5281/zenodo.22165794
The DOI above is the concept DOI: it always resolves to the latest version. Cite a specific version by its own DOI from the Zenodo record.
See LICENSE.md. Sampling frame from Companies House under the Open Government Licence v3.0; the derived dataset is CC BY 4.0, attributed to Bros.
- Companies House free company data: https://download.companieshouse.gov.uk/en_output.html
- Companies House SIC code list: https://resources.companieshouse.gov.uk/sic/
- Report and per-check breakdown: https://bros.co.uk/missed-job-report