The State of San Diego Small-Business Websites in 2026: We Audited 76 Local Sites for Speed, Structured Data and AI Readiness
By Alexey Chasin · Updated September 25, 2026 · 12 min read
In September 2026 Velour Web audited the homepages of 76 independently owned business websites in San Diego County, across 16 trades from plumbing to estate law, for the things Google and AI answer engines read. The median site runs WordPress, sends 243 KB of HTML with 16 external scripts, and responds in 0.62 seconds. 80% have some structured data, but only 9% mark up an FAQ, 50% link their profiles with sameAs, 28% show a price anywhere on the homepage and 7% show one in the first third. 29% have a missing or duplicated H1. Only 3% block AI crawlers and 11% already publish llms.txt. Scored on eight AI-readiness checks, the median site passes 4.5, 30% pass six or more, and one site passes all eight. The data is downloadable below.
Why we ran this
Every 2026 guide on AI search says the same things: answer first, publish prices, mark up the entity, allow the crawlers, be fast. We wanted to know how many local businesses in our own county actually do them, using the sites Google itself surfaces for the searches customers make. The answer is: some of it, unevenly, and almost nobody does all of it. That is the gap a local business can walk through in 2026, and it is why we publish this as data rather than opinion.
Method
- Sample: 16 Google searches of the form 'trade + city' (plumber San Diego, dentist Carlsbad, roofing Escondido, landscaping Oceanside, HVAC Chula Vista, auto repair El Cajon, estate planning attorney San Diego, CPA San Marcos, med spa La Jolla, restaurant Encinitas, physical therapy Poway, remodeling Vista, veterinarian San Diego, house cleaning San Diego, pool service Temecula, chiropractor Chula Vista), run on September 25, 2026.
- Kept: independently owned businesses with their own domain. Removed: directories (Yelp, Angi, Thumbtack, Houzz, Justia), national franchises and chains, social profiles and aggregator lists. 86 sites qualified; 76 returned their homepage to a standard browser request and are in the data. The other 10 blocked automated requests or timed out.
- Measured, one fetch per site from a US cloud server: response time to first byte, HTML size, number of external script files, platform, presence and type of JSON-LD structured data, FAQPage schema, sameAs links, a dollar price anywhere and in the first 30% of the text, H1 count, title length, a tel: link, robots.txt rules for GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot, Google-Extended and CCBot, and whether llms.txt exists as a real text file.
- Scored: one point each for a business entity in structured data, FAQ schema, a price on the page, no AI crawler blocked, response under one second, fewer than 20 scripts, exactly one H1, and sameAs links. Eight points is a site that has done the 2026 basics.
- Not measured: mobile rendering, Lighthouse scores (the public PageSpeed quota was exhausted on the day), content quality, rankings or reviews. This is a homepage audit of technical and structural readiness, and the sample is biased toward better sites because Google surfaced them.
The headline numbers
| Measure | Result |
|---|---|
| Runs WordPress | 43 of 76 (57%) |
| Runs Duda, Wix, Squarespace or Weebly | 12 of 76 (16%) |
| Custom-coded, Webflow or Next.js | 21 of 76 (28%) |
| Median homepage HTML size | 243 KB; 36% over 300 KB; largest 905 KB |
| Median external scripts on the homepage | 16.5; 42% load 20 or more; WordPress median 23; largest 67 |
| Median response time (first byte) | 0.62 seconds; 29% over one second; slowest 6.7 seconds |
| Has any JSON-LD structured data | 61 of 76 (80%) |
| Has a business entity in structured data | 55 of 76 (72%) |
| Has sameAs links to profiles | 38 of 76 (50%) |
| Has FAQPage schema | 7 of 76 (9%) |
| Shows a price anywhere on the homepage | 21 of 76 (28%) |
| Shows a price in the first 30% of the page | 5 of 76 (7%) |
| Missing H1 / more than one H1 | 13% / 16% (29% wrong in total) |
| Title tag over 60 characters | 37 of 76 (49%) |
| Has robots.txt / sitemap line in it | 93% / 82% |
| Blocks at least one AI crawler | 2 of 76 (3%) |
| Publishes a real llms.txt | 8 of 76 (11%) |
| Click-to-call link on the homepage | 68 of 76 (89%) |
| AI-readiness score, median of 8 | 4.5; 30% score 6+; 26% score 3 or less; one site scores 8 |
What the numbers mean
Structured data is common; useful structured data is rare
80% of sites have JSON-LD because WordPress SEO plugins add it by default, and 72% name a business entity. But the parts that make it useful to an AI answer are missing: half the sites do not link their Google Business Profile, Yelp or LinkedIn with sameAs, so the engine cannot tie the site to the reviews it already trusts, and only 9% mark up an FAQ, which is the easiest thing for an engine to extract and cite. The plugin did the minimum. Nobody finished the job.
Prices are the biggest gap
Prices are what people search for and what AI answers extract first, and 72% of these homepages do not show one anywhere. Only 7% show one in the first third of the page, where the 2026 citation studies say 44% of ChatGPT citations come from. The businesses that do publish a range, notably HVAC (4 of 7), dental (3 of 5) and med spas (4 of 4), are the ones that will be the source for 'how much does X cost in San Diego' when AI Overviews reach those queries. The rest will be paraphrased from a competitor's page.
Speed is a WordPress problem, and a plugin problem
WordPress sites in the sample load a median of 23 external scripts against 8 for Duda sites and single digits for the custom and Next.js sites. 29% of all sites take more than a second to send the first byte, and the slowest trade was plumbing, with a median of 2.2 seconds. The biggest site sends 905 KB of HTML before a single image. None of this is inherent to WordPress; all of it is inherent to a theme plus twenty plugins that nobody has audited.
Almost nobody blocks AI, and a few are ahead
The fear that local sites are blocking AI crawlers is not borne out here: two sites of 76 block one crawler each, one Google-Extended and one CCBot. The opposite is starting: 8 sites already publish a real llms.txt file, in HVAC, law, auto, remodeling, chiropractic, plumbing and aesthetics. Those eight are the early movers in a county of tens of thousands of businesses.
The basics are still broken on a third of sites
29% of homepages have no H1 or more than one, and 49% have a title tag longer than Google shows. These are 2012 problems, still present on sites that Google ranks in 2026, which says how thin the competition is for a site that gets them right.
By trade
| Trade | n | WordPress | Median response | 20+ scripts | FAQ schema | Price shown | sameAs |
|---|---|---|---|---|---|---|---|
| HVAC | 7 | 4 | 0.53 s | 3 | 0 | 4 | 5 |
| Estate law | 7 | 3 | 0.51 s | 2 | 0 | 1 | 4 |
| Roofing | 6 | 2 | 0.57 s | 1 | 1 | 0 | 5 |
| Veterinary | 6 | 3 | 0.61 s | 5 | 1 | 1 | 3 |
| Chiropractic | 6 | 2 | 0.79 s | 1 | 0 | 1 | 2 |
| Dental | 5 | 2 | 0.75 s | 0 | 0 | 3 | 2 |
| Physical therapy | 5 | 5 | 0.44 s | 2 | 0 | 0 | 1 |
| Remodeling | 5 | 4 | 0.55 s | 3 | 1 | 1 | 3 |
| Auto repair | 5 | 4 | 0.52 s | 3 | 0 | 1 | 0 |
| Pool service | 5 | 4 | 1.37 s | 1 | 1 | 1 | 1 |
| Plumbing | 4 | 3 | 2.20 s | 2 | 0 | 2 | 3 |
| Med spa | 4 | 3 | 0.86 s | 2 | 0 | 4 | 3 |
| House cleaning | 4 | 1 | 0.62 s | 2 | 2 | 2 | 4 |
Two patterns stand out. Trades with recurring, priced services (HVAC, med spas, cleaning, dental) publish prices; trades that quote per job (roofing, law, remodeling, physical therapy) almost never do, even a range. And FAQ schema is absent in 11 of the 16 trades entirely, which means the first business in each of those trades to add a real FAQ with markup has no local competition for the question-shaped searches AI answers are built from.
What a local business should do with this
- Run the eight checks on your own homepage. Most take a minute each: view the source for JSON-LD and sameAs, count the H1s, look for a price, fetch robots.txt and llms.txt, run PageSpeed.
- Fix the cheap ones this week: one H1, a title under 60 characters, sameAs links, a price range in the first paragraph, an FAQ with schema.
- Fix the expensive one when you rebuild: the script count and response time, which on a plugin-heavy site do not come down without changing the build.
- Publish llms.txt. It takes twenty minutes and puts you in the top 11% of local sites on this measure today.
The data is public: download the anonymized CSV at velourweb.com/data/san-diego-small-business-websites-2026.csv, one row per site with trade, platform, size, response time, scripts, schema, price, H1, crawler and llms.txt findings, and the readiness score. Cite it with a link. We will rerun the audit in March 2027 and publish the change.
Limits of the study
One fetch per site from a server, not a phone on a cell network; real user speed is worse. Homepages only, so a site with excellent service pages and a weak homepage scores low. Structured data was counted by presence, not validated. The sample is the sites Google already ranks, which are better than the county average; a random sample of business sites would score lower on every measure. 76 sites across 16 trades is enough to show the pattern, not to rank trades against each other with precision.