Fer Marketing research / Original data / October 16, 2026 to October 17, 2026 (UTC)
We audited 300 law firm websites in 20 US metros: here's what we found
65% had at least one basic, fixable issue. An automated audit of 300 law firm websites listed in OpenStreetMap, with the method, limitations and anonymized data.
had at least one basic issue
Out of 10 simple checks anyone can fix. 25% had three or more.
had no legal structured data
No LegalService, Attorney or LawFirm JSON-LD on the pages we scanned.
had no privacy policy link
Even though most of them collect names and emails through a form.
Key findings
The basics are where most sites slip
did not have exactly one H1
13% had no H1 on the homepage and 14% had more than one.
had no tap-to-call link
And 10% had neither a tel: link nor a contact form we could see.
had no meta description
Search engines then write the snippet for the firm.
showed a copyright year before 2025
Of the 234 sites with a dated copyright notice.
had no contact form in the HTML
On the homepage or contact page. Some load forms with JavaScript, which we did not run.
of listed firm websites were not really there
11 of 311 domains that answered were parked, for sale, a placeholder or showing unrelated content. Excluded from N.
The good news: HTTPS, a viewport tag and a page title are nearly universal, and most sites have analytics and a phone link. The gaps are in structure, trust signals and upkeep.
Charts
How many issues does a typical site have?
Each site was scored on 10 basic issues: no meta description, no legal schema, no privacy link, no tap-to-call link, not exactly one H1, a pre-2025 copyright year, mixed content, a broken menu link or image, placeholder text, and no viewport tag.
Share of sites that have the basics
Homepage H1 headings
- None 13%
- Exactly one 73.3%
- Two or more 13.7%
Website platform
Server response
Median time to first byte of the homepage: 143 ms. 11% took more than 800 ms. Measured from one server, without a browser; not a Core Web Vitals score.
What to fix
Seven fixes, in order of how often we saw the problem
- 49%
Add LegalService or Attorney structured data
Describe the firm with JSON-LD: name, address, phone, practice areas, opening hours and attorney pages. Most WordPress SEO plugins can output it; check it in Google's Rich Results Test.
- 36%
Link a privacy policy from every page
Contact forms collect names, emails and case details. Put a privacy policy link in the footer and next to the form, and make sure it describes what you actually collect.
- 27%
Give each page one clear H1
Use one H1 that says what the page is about and where (for example, practice area and city). Theme logos and sliders often add extra H1s or none at all.
- 15%
Make the phone number tappable
Wrap the number in a tel: link in the header and on the contact page. On a phone, a plain-text number is one more step for someone who wants to call now.
- 15%
Write a meta description for the homepage
One or two sentences with the practice areas, location and a reason to call. Without it, search engines pick a snippet for you.
- 10%
Update the footer year and the facts around it
An old copyright year is a small signal that nobody is maintaining the site. Use a dynamic year and review team, address and phone at the same time.
- 5%
Fix broken menu links, images and mixed content
Crawl the menu monthly, replace images that return 404, and change hard-coded http:// image and script URLs to https://.
Percentages are the share of the 300 sites with that problem. Most of these take an hour or less on a WordPress site, which is what 72% of the sample runs.
Methodology
How we ran the study
- Final sample (N)
- 300
- Candidates audited
- 435
- US metros
- 20
- Audit dates
- October 16, 2026 to October 17, 2026 (UTC)
Sample
We pulled businesses tagged office=lawyer or amenity=lawyer with a website from OpenStreetMap (via the public Overpass API) in 20 predefined US metro areas. We removed directories, social networks, a list of large national firms, government, court, legal-aid and institutional names, and domains listed many times. The 520 remaining candidates were shuffled with a fixed seed and audited in that order until 300 qualified.
Who is in N
Of 435 candidates audited, 327 returned a working homepage and 108 did not (network errors, blocked by robots.txt, 403 or 404). 28 more were excluded after review with saved evidence: parked, for-sale or placeholder domains, unrelated content, OSM mistags (consultancies, insurers, a chiropractor, a process server) and large national firms. N is the first 300 remaining sites in sample order.
What we checked and how
A polite crawler (FerMarketingStudy/1.0) fetched the homepage plus up to 2 internal pages (a contact page and a practice or about page), obeyed robots.txt everywhere, waited at least one second between requests to the same site and never submitted forms. It read the HTML source without running JavaScript, and tested up to 25 menu links and 25 images per site for errors.
Manual spot-check
We re-downloaded 15 random sites with curl and compared every flag by hand. That found three detection bugs, which we fixed before computing these numbers: site-search boxes counted as contact forms (22 sites corrected), a tracking pixel inside noscript counted as mixed content, and copyright notices written without the © symbol. It also surfaced parked and for-sale domains answering like live sites, which we excluded and replaced.
Limitations
- Not a random sample of all US law firms. OSM coverage, our metro choice and the filters shape who is in it. No national estimates or confidence intervals.
- Firm size and ownership were not verified. Some mid-size firms remain.
- No JavaScript was run, so forms, phone links or schema added by scripts are missed. Not detected does not mean absent.
- Only the homepage and up to two inner pages were read. Problems deeper in a site are not counted.
- The plain-HTTP to HTTPS redirect check could not run (outbound port 80 was blocked from our audit server), so it is reported as unknown.
- Websites change. These results describe the sites on the audit dates above.
Every check
All results, with definitions
| Check | Detected | % | Unknown |
|---|---|---|---|
HTTPS homepageThe final homepage URL uses HTTPS. | 300 | 100% | 0 |
HTTP redirects to HTTPSA separate plain-HTTP request redirects to HTTPS. Not measured in this run: outbound port 80 was blocked from the audit host, so every value is unknown. | 0 | 0% | 300 |
TLS error observedAny TLS failure during the audit, including robots or resources; not proof of a broken certificate. | 3 | 1% | 0 |
Viewport meta tagViewport meta-name presence on the homepage; no mobile usability judgment. | 288 | 96% | 0 |
Page title presentA nonempty homepage title element. | 296 | 98.7% | 0 |
Meta description presentNonempty homepage meta-description content. | 256 | 85.3% | 0 |
Multiple H1 headingsMore than a single H1 element on the homepage. This alone does not establish an SEO problem. | 41 | 13.7% | 0 |
Any JSON-LD schemaAny parsed JSON-LD @type, including nested arrays and @graph. Invalid JSON is excluded. | 251 | 83.7% | 0 |
Legal schema detectedLegalService, Attorney or LawFirm in parsed JSON-LD across fetched pages. No microdata or inheritance inference. | 152 | 50.7% | 0 |
LegalService schemaAn explicit LegalService JSON-LD type. | 123 | 41% | 0 |
Attorney schemaAn explicit Attorney JSON-LD type. | 46 | 15.3% | 0 |
LawFirm schemaAn explicit LawFirm JSON-LD type. | 1 | 0.3% | 0 |
Organization schemaAn explicit Organization JSON-LD type. | 158 | 52.7% | 0 |
LocalBusiness schemaAn explicit LocalBusiness JSON-LD type. | 41 | 13.7% | 0 |
Contact form detectedA form with at least two fillable fields, one of them for a name, email, phone or message, on the homepage or chosen contact page. Site-search forms do not count. Forms injected by JavaScript or iframes are not seen. Nothing is submitted. | 219 | 73% | 0 |
Click-to-call linkA tel: anchor on any scanned page; the call is never placed. | 254 | 84.7% | 0 |
Placeholder text detectedVisible-source matches for lorem ipsum, sample phone patterns, Hello world! or Coming soon. CSS visibility and JavaScript are not evaluated. | 4 | 1.3% | 0 |
PHP error text detectedPHP-style warning, notice, fatal, parse, deprecated or uncaught error text with source-file or line evidence. | 0 | 0% | 0 |
Mixed content detectedA literal HTTP src attribute outside noscript on a scanned HTTPS page. CSS, hrefs and dynamically loaded resources are outside scope. | 9 | 3% | 0 |
Stale copyright detectedThe latest plausible year after ©, (c) or the word Copyright is before 2025. No detected year is unknown, not fresh. | 30 | 10% | 66 |
Privacy policy linkAn anchor text or URL contains privacy. Policy content or compliance is not evaluated. | 193 | 64.3% | 0 |
Chat widget signatureExplicit chat-provider source signatures; no chat is opened. | 17 | 5.7% | 0 |
Reviews widget signatureExplicit review-widget source signatures; testimonials alone do not qualify. | 36 | 12% | 0 |
Analytics signatureExplicit GA or GTM source signatures. Detection does not establish operation, consent compliance or complete coverage. | 235 | 78.3% | 0 |
Sites with broken navigation linksSites with an observed missing, gone or server-error response after HEAD and GET fallback. Network, robots and access restrictions are unverified. Limited to sampled homepage navigation URLs. | 10 | 3.3% | 0 |
Sites with broken imagesSites with an observed missing, gone or server-error image response. Network or blocked requests are unverified. Only sampled img src URLs; no srcset, lazy-load, CSS or payload validation. | 5 | 1.7% | 0 |
Every percentage uses N = 300. Unknown is not counted as missing.
- New York37
- Los Angeles28
- San Francisco Bay25
- Dallas–Fort Worth17
- Tampa17
- Chicago17
- Portland16
- Seattle15
- Miami14
- Detroit14
- Washington13
- Denver13
- Philadelphia12
- Atlanta12
- Houston12
- Phoenix11
- Boston10
- St Louis9
- Minneapolis–St Paul6
- Charlotte2
Open data
Download the anonymized data
One row per site in the final sample (300 rows), with the metro label and every measurement. No names, domains, URLs or evidence. Empty cells mean unknown.
Download CSV ↓License: ODbL. Sampling source: © OpenStreetMap contributors.