Skip to content

About

Twenty-eight automated checks run against 3,986 UK trade business websites, sampled from the Companies House register. Aggregate rates by trade, company age and region, with the mechanical definition of every check.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What UK trade business websites actually do, measured

DOI

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.

What's here

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

The sampling frame

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.

How 401,902 became 3,986

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.

The bias you must state if you cite this

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.

Headline rates

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

Read detects, not label

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.

What is deliberately not published

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.

Method notes

  • 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.

How to cite

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.

Licence and attribution

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.

Source

About

Twenty-eight automated checks run against 3,986 UK trade business websites, sampled from the Companies House register. Aggregate rates by trade, company age and region, with the mechanical definition of every check.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors