Skip to the main content

Original research · Edition 2 (2026-10b)

The Ontario Practice Website Index

What 187 public websites of Ontario law firms, health clinics and accounting firms do on a phone: how heavy and how fast they are, whether a client can tap to call, whether machines can read them, whether they publish prices, and whether their first form asks for more than it should. Open data, a dated method, and no ranking.

  • Median simulated mobile LCP, 18 October 2026: 7.4 s

    n = 183 homepages Lighthouse could measure; simulated mid-range phone, one run each

  • Homepage prices found, 18 October 2026: 8/187

    A fee or price on the homepage itself; a conservative text rule that misses prices on inner pages

A convenience sample from the chamber-of-commerce and board-of-trade directories of London, Ottawa, Barrie, Hamilton, Mississauga, Markham, Richmond Hill and Milton; not representative of Ontario practices as a whole.

Prepared by the UXPro team, with our founder as the accountable lead.

Sample
187 sites: 65 law, 45 clinic, 77 accounting
Collected
Edition 1: 8 October 2026; Edition 2: 18 October 2026
Unit
Each practice's homepage, plus one contact page
Licence
CC BY 4.0 — reuse with attribution

Download the data (CSV)Download the data (JSON, with method)

Last reviewed

Key findings

One sentence each, with its denominator, so any of them can be quoted on its own. Each is computed from the rows in the download.

  1. 01

    170 of the 183 Ontario law, clinic and accounting homepages in the Ontario Practice Website Index (edition 2, October 2026) that Lighthouse could measure took longer than Google's 2.5-second "good" line to show their largest element on a simulated mid-range phone; the median was 7.4 s.

  2. 02

    The median homepage among 187 Ontario law, clinic and accounting homepages in the Ontario Practice Website Index (edition 2, October 2026) weighed 2.3 MB on mobile (n = 183).

  3. 03

    51 of 187 Ontario law, clinic and accounting homepages in the Ontario Practice Website Index (edition 2, October 2026) had no tap-to-call link, so a visitor on a phone had to copy the number by hand (73% did have one).

  4. 04

    Only 8 of 187 Ontario law, clinic and accounting homepages in the Ontario Practice Website Index (edition 2, October 2026) showed a fee or price on the homepage itself (4%), by a conservative text rule.

  5. 05

    80% of 187 Ontario law, clinic and accounting homepages in the Ontario Practice Website Index (edition 2, October 2026) carried some schema.org structured data, but only 35% described the practice with a LocalBusiness-type schema.

  6. 06

    53 of 187 Ontario law, clinic and accounting homepages in the Ontario Practice Website Index (edition 2, October 2026) published an llms.txt file (28%).

  7. 07

    Of the 139 practice websites with a first-contact form in the Ontario Practice Website Index (edition 2, October 2026), 13 (9%) asked for health or case details before anyone had spoken to the client.

  8. 08

    Only 16% of 187 Ontario law, clinic and accounting homepages in the Ontario Practice Website Index (edition 2, October 2026) passed every WCAG 2.1 text-contrast check we could run.

What we found

We measured the homepages of 187 public Ontario practice websites (65 law firms, 45 health clinics and 77 accounting firms), a convenience sample from 8 chamber-of-commerce and board-of-trade directories that does not represent all Ontario practices, between 8 October 2026 and 18 October 2026. On a simulated mid-range phone, the median homepage weighed 2.3 MB and its largest element took 7.4 s to appear (median simulated mobile LCP, n = 183); 7% of the 183 sites Lighthouse could measure met Google's 2.5-second "good" threshold.

The basics are in place: 100% served over HTTPS and 99% declared a mobile viewport. Fewer made the phone number tappable: 73% had a tap-to-call link on the homepage.

Machine-readable signals are uneven. 80% carried any structured data and 35% described themselves with a LocalBusiness-type schema; 28% published an llms.txt file. Homepage prices found: 8/187 (a fee or price on the homepage itself).

Of the 139 sites where we found a first-contact form, 13 (9%) asked for health or case details before anyone had spoken to the client. That is a flag, not a finding of non-compliance: the details are sensitive under PHIPA and a lawyer's duty of confidentiality, and we recommend collecting them later, by a person. On accessibility, 96% declared the page language, the median site gave alt text to 100% of its images, and only 16% passed every text-contrast check we could run.

How to cite this

UXPro Design Studio (2026). The Ontario Practice Website Index, edition 2 (2026-10b; n = 187). https://uxpro.ca/research/ontario-practice-website-index

The numbers, by sector

Medians and shares of sites. The small figure under each value is its denominator: sites where that measure could be taken. A dash means no site in the group could be measured.

Ontario Practice Website Index 2026-10b: medians and shares by sector
MeasureAll (187)Law firms (65)Health clinics (45)Accounting firms (77)
Median mobile page weightHomepage, bytes transferred, Lighthouse mobile2.3 MBn=1832.0 MBn=643.3 MBn=452.2 MBn=74
Median Largest Contentful PaintLighthouse mobile, simulated slow 4G7.4 sn=1836.8 sn=648.2 sn=457.4 sn=74
LCP within 2.5 s7%n=1835%n=6411%n=457%n=74
Served over HTTPS100%n=187100%n=65100%n=45100%n=77
http:// redirects to https://97%n=18597%n=6595%n=4499%n=76
Mobile viewport tag99%n=187100%n=65100%n=4599%n=77
Tap-to-call link on the homepage73%n=18778%n=6576%n=4566%n=77
Any structured data (schema.org)80%n=18782%n=6587%n=4575%n=77
LocalBusiness-type schema35%n=18738%n=6542%n=4527%n=77
llms.txt present28%n=18723%n=6544%n=4523%n=77
Fees or prices visible on the homepage4%n=1872%n=654%n=456%n=77
First-contact form asks for health or case detailsOf sites where a form was found9%n=13921%n=523%n=292%n=58
Page language declared (html lang)96%n=18794%n=6598%n=4596%n=77
Median share of images with alt textSites with at least one image100%n=186100%n=65100%n=44100%n=77
Median text elements failing contrast8n=1875n=659n=459n=77
No contrast failures found16%n=18718%n=6513%n=4514%n=77

The numbers, by city and practice type

Each city counts only the rows the dataset records under that city’s name (the directory listing’s address); neighbouring communities are not folded in. Below 5 sites we print the count and no median or share.

Ontario Practice Website Index 2026-10b: sites by city and practice type, with medians and shares for cities with at least 5 sites
CitySitesLaw firmsHealth clinicsAccounting firmsMedian mobile LCPLCP within 2.5 sTap-to-callAny schema
Markham32113184.9 sn=3110%n=3163%n=3275%n=32
Barrie2791179.0 sn=2711%n=2774%n=2789%n=27
Mississauga2410596.6 sn=239%n=2371%n=2463%n=24
Hamilton1911268.8 sn=195%n=1995%n=1979%n=19
Richmond Hill184865.8 sn=170%n=1756%n=1883%n=18
London177649.1 sn=170%n=1771%n=1788%n=17
Ottawa133377.7 sn=1315%n=1362%n=1392%n=13
Milton70348.3 sn=729%n=771%n=757%n=7
Toronto63217.4 sn=50%n=5100%n=6100%n=6
Thornhill51136.8 sn=50%n=560%n=580%n=5
Burlington4004too fewtoo fewtoo fewtoo few
Ancaster2011too fewtoo fewtoo fewtoo few
Scarborough2002too fewtoo fewtoo fewtoo few
Unionville2101too fewtoo fewtoo fewtoo few
Aurora1100too fewtoo fewtoo fewtoo few
Brampton1100too fewtoo fewtoo fewtoo few
Caledonia1100too fewtoo fewtoo fewtoo few
Georgetown1001too fewtoo fewtoo fewtoo few
Hannon1001too fewtoo fewtoo fewtoo few
Innisfil1001too fewtoo fewtoo fewtoo few
North York1001too fewtoo fewtoo fewtoo few
Vaughan1100too fewtoo fewtoo fewtoo few
Woodbridge1100too fewtoo fewtoo fewtoo few

Methodology

Sampling frame
Edition 2 extends edition 1's convenience sample with the same rule: practices listed with a website in public chamber-of-commerce / board-of-trade member directories, filtered by the same sector keywords, de-duplicated by domain, national/multinational networks removed. New directories: Mississauga Board of Trade, Markham Board of Trade, Richmond Hill Board of Trade, Milton Chamber of Commerce. Edition-1 candidates held back by its cap were added; new directories are capped at 30 per sector each, in SHA-1(domain) order. Not random; not representative of all Ontario practices.
Directories used
8 public member directories: londonchamber.com (London), ottawabot.ca (Ottawa), barriechamber.com (Barrie), hamiltonchamber.ca (Hamilton), mbot.com (Mississauga), markhamboard.com (Markham), rhbot.ca (Richmond Hill), miltonchamber.ca (Milton).
Directories we could not use
Greater Kitchener Waterloo Chamber of Commerce (greaterkwchamber.com): the online directory is a script widget (widgets.greaterkwchamber.com/feeds/directory/directoryscript.ashx) that the host's robots.txt disallows for all user agents; not fetched. Cambridge Chamber of Commerce (cambridgechamber.com): the online directory is the same Membee widget (directoryscript.ashx), disallowed by robots.txt on both widgets.cambridgechamber.com and memberservices.membee.com; not fetched. Guelph Chamber of Commerce (guelphchamber.com): publishes its member directory only as a printed/flip-book PDF on issuu, with no crawlable listing of member websites. Brampton (bbot.ca): bbot.ca is the Burnaby (British Columbia) Board of Trade, not Brampton; dropped after a first collection pass showed BC addresses. No Brampton directory was added. Toronto Region Board of Trade (bot.com): no public member directory (member spotlights and a members-only portal only).
Dates
Edition 1: measured 8 October 2026; Edition 2: measured 18 October 2026. Each row carries its own measuredAt timestamp (UTC); earlier rows were not re-measured.
Tools
Lighthouse 13.5 (performance category only, mobile form factor, default simulated throttling: slow 4G, 4x CPU slowdown) attached to a fresh headless Chrome per site, one Chrome at a time; a second tab emulating a 390x844 phone reads the rendered page. Scripts: scripts/practice-index/ in our site repository.
Thresholds
LCP counts as good at 2.5 s or less (Google's Core Web Vitals line). Contrast follows WCAG 2.1 SC 1.4.3: 4.5:1, or 3:1 for text of 24 px or more, or 18.66 px bold. A price counts only as a $1 to $9,999 amount with a fee word within 60 characters and no limit or award word. A form needs two or more fillable fields. Cities need 5 or more sites before we print a median or share.
Limitations
A convenience sample from business-association directories, one run per site, text heuristics for prices, forms and sector. The full list is under “What this does not show” below.
How to cite us
UXPro Design Studio (2026). The Ontario Practice Website Index, edition 2 (2026-10b; n = 187). https://uxpro.ca/research/ontario-practice-website-index
Licence
The dataset (CSV and JSON) and this page's findings are licensed CC BY 4.0. Reuse, remix and redistribute freely, with attribution to UXPro Design Studio and a link to this page.

Download the public fields (CSV, 187 rows)Download rows, method and exclusions (JSON)

How we measured

  1. 2026-10-08 — Sampling frame. A convenience sample, not a random one: practices listed with a website in the public member directories of four Ontario business associations — London Chamber of Commerce, Ottawa Board of Trade, Barrie Chamber of Commerce (all GrowthZone directories) and the Hamilton Chamber of Commerce (WordPress directory). Listing pages were filtered by sector keywords on the listing name and description, de-duplicated by domain, and national or multinational networks were removed. Each sector was capped at 30 sites, taken in SHA-1(domain) order, which spreads the cap across cities without hand-picking.
  2. 2026-10-08 — Politeness. Every directory page and every firm host was checked against robots.txt (our token "UXProPracticeIndex", else "*") before any request; disallowed hosts were dropped, and a robots.txt that failed with a 5xx or network error was treated as "disallow all". Requests were limited to about one per second per host and identified as "UXProPracticeIndex/1.0 (+https://uxpro.ca/research/ontario-practice-website-index)". Per site we fetched only the homepage, /llms.txt and at most one contact or booking page. No form was ever submitted.
  3. 2026-10-08 — Verification. A site stayed in the sample only if its own homepage text reads as a practice in the sector (e.g. lawyer/law firm/barrister; patient/dental/clinic/physiotherapy; accountant/CPA/bookkeeping/tax). Ontario location comes from the directory listing's address (Ontario only) and is cross-checked against an Ontario address cue on the site; rows without that cue say so in notes. Bot challenges, unreachable sites and non-practices were excluded; the exclusion list is kept with the scripts.
  4. 2026-10-08 — Performance. Each homepage was run through Lighthouse 13.5 (npx), performance category only, mobile form factor, default simulated throttling, attached to a fresh headless Chrome 154 profile per site. Page weight is total-byte-weight; LCP is largest-contentful-paint. Median Lighthouse run time was 14 s per site. Lighthouse's LCP is a simulation from one run, so single-site values are noisy; the medians are the point.
  5. 2026-10-08 — Markup and accessibility. In the same Chrome, a separate tab emulated a 390x844 phone (DPR 2, touch, mobile UA), loaded the homepage, scrolled it top to bottom, and read the rendered DOM for tap-to-call links, the viewport meta, JSON-LD and microdata types, <html lang>, <img> alt coverage, the price heuristic, forms, and text contrast. The contrast check reuses the alpha-compositing and WCAG luminance logic of the studio's own contrast gate, with WCAG 2.1's standard large-text thresholds.
  6. 2026-10-08 — Statistics. Medians and shares are computed over the sites where a metric could be measured; each summary metric reports its denominator (n) and the number of nulls.
  7. 2026-10-18 — Edition 2 frame. Same kind of source and the same rules: the public member directories of the Mississauga Board of Trade, Markham Board of Trade, Richmond Hill Board of Trade and Milton Chamber of Commerce, filtered with the same sector keywords, de-duplicated against every edition-1 candidate, national and multinational networks removed (now also PKF and Kreston member firms). Each new directory was capped at 30 sites per sector in SHA-1(domain) order. The 17 edition-1 candidates held back only by edition 1's cap were added. Four directories near our base could not be used and are listed with the reason: Greater Kitchener Waterloo Chamber of Commerce, Cambridge Chamber of Commerce, Guelph Chamber of Commerce, Toronto Region Board of Trade.
  8. 2026-10-18 — Edition 2 measurement. The same scripts (scripts/practice-index/measure.mjs, unchanged audit code), Lighthouse 13.5.0 with the same flags (performance only, mobile form factor, default simulated throttling), headless Chrome 155, one Chrome at a time through a machine-wide lock; two sites were in flight only for the plain-HTTP steps. Edition-1 rows were not re-measured. Every row carries its own measuredAt (UTC) and an addedIn edition, so either edition can be analysed on its own.

Directories the sample was drawn from: londonchamber.com, ottawabot.ca, barriechamber.com, hamiltonchamber.ca, mbot.com, member.markhamboard.com, rhbot.ca, miltonchamber.ca.

Reproduce it: the JSON download carries every row and the full method.

What this does not show

  • Convenience sample drawn from the member directories of 8 Ontario chambers of commerce and boards of trade (London, Ottawa, Barrie, Hamilton, Mississauga, Markham, Richmond Hill, Milton); members of business associations may differ from practices that are not members. Results do not generalise to all Ontario practices.
  • Kitchener, Waterloo, Cambridge, Guelph and Toronto have no rows of their own (or too few to report): the Greater Kitchener Waterloo and Cambridge chambers serve their directories through a widget their robots.txt disallows, Guelph publishes its directory only as a flip-book PDF, and the Toronto Region Board of Trade has no public member directory. We did not substitute another source.
  • The Law Society of Ontario, RCDSO/ODA and CPA Ontario finders were not used: they are search-driven applications rather than crawlable listings with website links, so they could not supply a frame politely within the time budget.
  • Two collection windows from a single machine and network: edition-1 rows on 2026-10-08 (Chrome 154), edition-2 rows from 2026-10-18 (UTC) with Chrome 155. One Lighthouse run per site; simulated LCP varies run to run and with machine load, so compare medians, not single sites, and treat small differences between editions as noise.
  • City is the city of the directory listing's address. A GTA board's members may list an office in a neighbouring municipality (Thornhill, Unionville, Woodbridge), which the dataset records under its own name and does not fold into a larger city.
  • Sites behind bot protection that served a challenge to headless Chrome were excluded, which biases the sample slightly away from heavily protected sites.
  • Price, sensitive-form and sector checks are text heuristics. The price rule is deliberately conservative (it will miss prices written without '$' or on inner pages). The sensitive-form flag reads field labels only and cannot see forms embedded in third-party iframes (e.g. online-booking widgets).
  • /llms.txt presence mostly reflects SEO-plugin defaults: of the files spot-checked, most were generated automatically by WordPress SEO plugins (Yoast SEO, All in One SEO) rather than written by the practice.
  • Contrast is checked on text over solid colours only; text over images or gradients is skipped, so failures are a floor, not a ceiling.
  • Clinic includes dental, medical, physiotherapy, chiropractic, foot-care, hearing, mental-health and similar private practices found in the 'health' categories; the mix is not balanced across professions.
  • Kitchener-Waterloo, our own base, has no rows in this edition: its chamber's directory could not be fetched within robots.txt.
  • There is no overall score and no ranking, on purpose. A composite would hide the trade-offs a practice actually makes, and naming the slowest sites would help nobody choose a lawyer, dentist or accountant. The rows identify sites by domain only, so any practice can find and check its own.

Changelog

  1. Edition 2 (2026-10b): 187 sites, measured 18 October 2026

    Added 113 sites: four new directories (Mississauga, Markham, Richmond Hill, Milton) and the edition-1 candidates its cap had held back. Edition-1 rows are unchanged and keep their own measurement dates.

  2. Edition 1 (2026-10): 74 sites, measured 8 October 2026

    Four chamber directories (London, Ottawa, Barrie, Hamilton); 74 sites published.

    Edition 1 CSV, as publishedEdition 1 JSON

Send us your URL and get the answer for your own site.

We read your site by hand and reply with written findings.