WebCore

Original research, measured 5 November 2026

Vibe Coding Statistics 2026: 1,061 Business Websites Measured

By Rigo Guadrón, founder of WebCore, published November 5, 2026. Pre-registered before measurement.

Most vibe coding statistics come from surveys of developers. These come from the websites. On 5 November 2026 I measured 1,061 business websites built with Lovable, Base44 and v0, the same way and the same day as 188 sites on WordPress, Wix and Squarespace and 13 on WebCore, my own company: one PageSpeed Insights run on a simulated phone and one plain fetch of the homepage with JavaScript off. The hypothesis was registered before the first site was measured. It partly held.

Key findings

  • Base44 homepages are nearly empty without JavaScript: a median of 28 words, and 71% of 430 sites hold fewer than 100 words (95% interval 66-75), measured 5 November 2026.
  • Lovable is split down the middle: 42% of 532 homepages (38-47) are a bare shell under 100 words, and the rest carry the full page text, for a median of 260 words.
  • v0 sites arrive complete: a median of 449 words and 3% of 99 homepages under 100 words (1-9), against 2% of the 173 WordPress, Wix and Squarespace sites fetched.
  • Vibe-coded sites are faster on a phone: the largest element loads within 2.5 seconds on 26% of Lovable (n = 528), 31% of Base44 (n = 428) and 65% of v0 (n = 99) sites, against 5% of 185 traditional sites.
  • Structured data is where every vibe-coding platform trails: business JSON-LD sits on 36% of Lovable, 50% of Base44 and 9% of v0 homepages, against 77% of 173 traditional sites.

Pre-registered hypothesis, 5 November 2026, 18:14 UTC

"Single-page apps (Lovable, Base44) look nearly empty to crawlers; v0's Next.js does better."

Nearly empty was fixed in advance as fewer than 100 words readable without JavaScript on the homepage. The hypothesis holds if the median is below 100 for Lovable and for Base44, and v0's share under 100 words sits below both with no overlap in the 95% intervals.

Verdict: PARTLY HELD.

Base44 met the bar for nearly empty (median 28 words) and Lovable did not (median 260), so part (a) failed. v0's share of near-empty homepages sat below both, with no overlap in the intervals, so part (b) held.

Measured 5 November 2026, 18:19 to 20:50 UTC. Lighthouse 13.6.0 through the PageSpeed Insights API, plus one plain GET per homepage. Results published whatever they showed.

How the numbers were made

  • 1,061 vibe-coded business homepages: 532 Lovable, 430 Base44 and 99 v0, found on 5 November 2026 through certificate logs, search engines and keyword queries, and kept only when the homepage named a service and gave a phone, an email or a street address. 3,467 candidates were screened to get them.
  • A control group of 188 Ontario trade and clinic businesses from WebCore's Web Index records: 100 WordPress sites drawn at random from 830 (seed 20261105), and every Wix (41) and Squarespace (47) site the records held. Wix and Squarespace are whole pools, not samples of 100.
  • WebCore, my own company: the 12 sites published on their own domain plus webcore.pro, 13 in all; several of the 12 are my own properties and one is a WebCore promo subdomain, kept because the registered rule selected it. A census of a small group, shown in its own labelled column and never pooled with the control.
  • Two measurements per site, the same day, the same scripts. Google PageSpeed Insights (mobile, performance and agentic browsing, Lighthouse 13.6.0), and one plain GET of the homepage with no JavaScript, which counts the words a crawler gets without running scripts and checks the title, the H1, the meta description, JSON-LD, sitemap.xml, robots.txt, llms.txt and the ARD catalog.
  • Shares carry 95% Wilson intervals, and differences are read from the intervals; no other test was run. Failures are counted, not dropped: 5 PageSpeed failures and 15 raw-fetch failures, all 15 on WordPress (12 bot-challenge pages, 2 robots.txt blocks, 1 HTTP 403).

Read the full method, quoted from the pre-registration, further down this page.

Text without JavaScript, phone speed, agent checks and structured data

Four measures, one bar per group, the group size on every bar. The author's company sits in its own band at the bottom of each chart, measured the same way on the same day. The list under each chart carries the exact values with their 95% intervals.

Median words on the homepage without JavaScript

One plain fetch per site with scripts off, 5 November 2026. Lovable n = 532, Base44 430, v0 99, WordPress 85, Wix 41, Squarespace 47, WebCore 13.

  • Lovable, n = 532: median 260 words; 42% under 100 words (95% interval 38-47).
  • Base44, n = 430: median 28 words; 71% under 100 words (66-75).
  • v0, n = 99: median 449 words; 3% under 100 words (1-9).
  • WordPress, n = 85: median 1,014 words; 1% under 100 words (0-6).
  • Wix, n = 41: median 403 words; 5% under 100 words (1-16).
  • Squarespace, n = 47: median 594 words; 2% under 100 words (0-11).
  • WebCore, the author's company, n = 13: median 595 words; 23% under 100 words (8-50).

Share of sites whose largest element loads within 2.5 seconds on a phone

Lighthouse 13.6.0 lab run through the PageSpeed Insights API, mobile strategy, 5 November 2026. Sites with a performance score: Lovable 528, Base44 428, v0 99, WordPress 99, Wix 41, Squarespace 45, WebCore 12.

  • Lovable, n = 528: largest element within 2.5 s on 26% (95% interval 23-30); median performance score 83; median LCP 3.8 s.
  • Base44, n = 428: within 2.5 s on 31% (27-35); median score 84; median LCP 3.6 s.
  • v0, n = 99: within 2.5 s on 65% (55-73); median score 97; median LCP 1.5 s.
  • WordPress, n = 99: within 2.5 s on 7% (3-14); median score 62; median LCP 8.1 s.
  • Wix, n = 41: within 2.5 s on 7% (3-19); median score 69; median LCP 6.5 s.
  • Squarespace, n = 45: within 2.5 s on 0% (0-8); median score 53; median LCP 14.3 s.
  • WebCore, the author's company, n = 12: within 2.5 s on 17% (5-45); median score 82; median LCP 3.8 s.

Share of sites that pass every agentic-browsing audit Lighthouse scored

Lighthouse's agentic-browsing category, 5 November 2026. Sites with a scored category: Lovable 528, Base44 430, v0 99, WordPress 99, Wix 41, Squarespace 47, WebCore 13. The llms.txt column comes from the raw fetch.

  • Lovable, n = 528: passes every scored audit 59% (95% interval 54-63); llms.txt on 13% of 532; median category score 100%.
  • Base44, n = 430: passes 40% (36-45); llms.txt on 40%; median category score 67%.
  • v0, n = 99: passes 51% (41-60); llms.txt on 0%; median category score 100%.
  • WordPress, n = 99: passes 16% (10-25); llms.txt on 28% of 85; median category score 50%.
  • Wix, n = 41: passes 39% (26-54); llms.txt on 100%; median category score 67%.
  • Squarespace, n = 47: passes 38% (26-53); llms.txt on 0%; median category score 50%.
  • WebCore, the author's company, n = 13: passes 8% (1-33); llms.txt on 92%; median category score 67%.

Share of homepages with business JSON-LD (Organization or LocalBusiness)

Read from the raw HTML with scripts off, 5 November 2026. Lovable n = 532, Base44 430, v0 99, WordPress 85, Wix 41, Squarespace 47, WebCore 13.

  • Lovable, n = 532: business JSON-LD on 36% (95% interval 32-40); sitemap.xml on 36%; robots.txt on 82%.
  • Base44, n = 430: business JSON-LD on 50% (46-55); sitemap.xml on 60%; robots.txt on 60%.
  • v0, n = 99: business JSON-LD on 9% (5-16); sitemap.xml on 7%; robots.txt on 8%.
  • WordPress, n = 85: business JSON-LD on 84% (74-90); sitemap.xml on 95%; robots.txt on 98%.
  • Wix, n = 41: business JSON-LD on 66% (51-78); sitemap.xml on 100%; robots.txt on 100%.
  • Squarespace, n = 47: business JSON-LD on 74% (60-85); sitemap.xml on 100%; robots.txt on 100%.
  • WebCore, the author's company, n = 13: business JSON-LD on 92% (67-99); sitemap.xml on 92%; robots.txt on 92%.

What the four charts say

A Base44 homepage holds a median of 28 words before its scripts run. A WordPress homepage holds 1,014. Google does render JavaScript for indexing, but later and on a budget, and many AI crawlers never render at all. So a site that only speaks after its scripts load is talking to fewer readers than its owner thinks, and the owner rarely knows, because the page looks fine in a browser.

Speed runs the other way. The vibe-coded sites are small and static, so they load fast on a phone: a median Lighthouse performance score of 83 for Lovable, 84 for Base44 and 97 for v0, against 61 for the three traditional builders pooled (62 WordPress, 69 Wix, 53 Squarespace). Only 5% of the 185 traditional sites with a score showed their largest element within 2.5 seconds, and the median Squarespace site took 14.3 seconds.

Structured data is where every vibe-coding platform trails. Business JSON-LD, the Organization or LocalBusiness block that tells a search engine or an agent what the business is, sits on 77% of traditional homepages and on 36% of Lovable, 50% of Base44 and 9% of v0 homepages. Sitemaps and robots.txt follow the same line: 98% and 99% of traditional sites have them, 7% and 8% of v0 sites do. Titles and meta descriptions are near universal everywhere. A single H1 is not: 57% of Lovable, 60% of Base44, 87% of v0 and 60% of traditional homepages have exactly one.

Agent readiness is low everywhere. No group serves an ARD catalog, the file at /.well-known/ard.json that lists what an agent can do on a site, except mine, and mine serves it on 1 site of 13. Whether a site has llms.txt is a platform decision, not a site decision: Wix 100%, Base44 40%, WordPress 28%, Lovable 13%, v0 0%, Squarespace 0%. And the agentic-browsing score needs reading with care, which is the next section.

Why a site can score 100% on agentic browsing and still offer agents nothing

Lighthouse's agentic-browsing category has seven audits: the agent accessibility tree, cumulative layout shift, llms.txt, the ARD schema, and three WebMCP checks (registered tools, schema validity and form coverage). When the thing an audit checks is absent, the audit is marked not applicable and left out of the score. A site with no llms.txt gets no llms.txt audit, and a site with no ARD file gets no ARD audit.

That is a reasonable way to score a new category: nobody is punished for a file that is still rare. But it means the category score measures what a site got wrong, not what it offers. A homepage with a clean accessibility tree and no layout shift scores 100% while giving an agent nothing to read and nothing to call. On 5 November 2026, 254 of 528 Lovable sites (48%) and 50 of 99 v0 sites (51%) scored 100% on agentic browsing while serving no llms.txt, and so did 132 of 430 Base44 sites (31%) and 24 of 187 traditional sites (13%). The llms.txt audit was not applicable on 452 of 528 Lovable sites, 99 of 99 v0 sites and 47 of 47 Squarespace sites. Wix is the opposite case: it serves llms.txt on all 41 sites, so all 41 were scored on it, and all 41 passed.

So this report also uses a stricter measure, fixed in the pre-registration: a site passes all scored agentic checks when every audit Lighthouse actually scored, binary or numeric, passed. By that measure 59% of Lovable, 40% of Base44, 51% of v0 and 27% of traditional sites pass, and my own company's sites pass at 8%, for a reason explained in the next section. None of this is a trick by any platform. It is a property of how the audits are scored, and the fair reading is that the category score tells you a site did nothing wrong, while the stricter measure and the file checks tell you whether it did anything at all.

WebCore, measured on the same bench, before and after a fix

I run WebCore, so its sites are not a comparison group. They are shown so you can check my work. The group is every site published on its own domain on 5 November 2026, 12 of them, several of them my own properties and one a WebCore promo subdomain, plus webcore.pro: 13 sites, a census of a small group, with intervals as wide as that implies. These are the 5 November numbers, as measured.

  • 3 of 13 homepages held fewer than 100 words without JavaScript (23%, 8-50), and 10 of 13 had exactly one H1 (77%).
  • Business JSON-LD, llms.txt, a sitemap and a robots.txt were each present on 12 of 13 sites (92%, 67-99).
  • Median performance score 82 and median LCP 3.8 s (n = 12); the largest element loaded within 2.5 s on 2 of 12 (17%, 5-45).
  • 1 of 13 passed every scored agentic audit (8%, 1-33). 11 of 13 answered /.well-known/ard.json with the HTML shell, status 200 and text/html, which Lighthouse scores as a failed ARD check. My own study found my platform's bug.

WebCore after fixes, re-measured 6 November 2026, 01:52 to 01:54 UTC

After the 5 November run, the platform was changed so that /.well-known/ addresses answer 404 when no file exists, and the 13 sites were republished. The same 13 URLs were then measured again with the same scripts and settings. These are the after numbers. The 5 November numbers above stand as the study's results, and no other group was re-measured.

  • Passes all scored agentic checks: 1 of 13 before, 7 of 13 after (54%, 29-77). Median agentic-browsing score: 67% before, 100% after.
  • Business JSON-LD, llms.txt, sitemap and robots.txt: 12 of 13 before, 13 of 13 after.
  • Median performance score 82 before, 87 after (n = 12). Largest element within 2.5 s: 2 of 12 before, 1 of 12 after.
  • Fewer than 100 words without JavaScript: 3 of 13 before, 2 of 13 after. Exactly one H1: 10 of 13 before, 11 of 13 after.

What still fails after the fix: 6 of 13 sites fail at least one scored agentic audit (the agent accessibility tree on 6, llms.txt on 1), 2 homepages still hold fewer than 100 words, 11 of 12 still show their largest element after 2.5 seconds on a phone, and 12 of 13 serve no ARD catalog. The fix removed a false file. It did not add a real one.

How to cite these vibe coding statistics

Guadrón, R. (2026, November 5). Vibe Coding Statistics 2026: 1,061 Business Websites Measured. WebCore. https://www.webcore.pro/research/vibe-coding-statistics

Free to cite with attribution and a link. Each number on this page carries its group size and its measurement date, 5 November 2026; please keep both when you quote it. The per-site data stays private because it names sites. The method and the pre-registration are quoted on this page.

How to fix a vibe-coded business site on any platform

None of this needs a rebuild. Every step below works on Lovable, Base44, v0, WordPress, Wix, Squarespace or WebCore, and most take an afternoon.

Look at your homepage the way a crawler does. Fetch it with JavaScript off (view the page source, or run curl) and count the words. Under 100 means most AI crawlers see a shell. v0's Next.js renders on the server by default, Lovable pre-renders many published sites now, and any site can export static HTML or sit behind a pre-rendering service.

Give the page one H1, a title and a meta description. 57% of Lovable, 60% of Base44 and 60% of traditional homepages have exactly one H1; v0 has 87%. It is a one-line fix in any editor.

Add business JSON-LD: an Organization or LocalBusiness block with the name, address, phone and hours. 77% of the traditional sites have it; 9% of v0 sites do. Paste it into the head of the homepage, or ask the tool that built the site to add it.

Serve sitemap.xml and robots.txt as real files, not the HTML shell. Single-page apps often answer every path with the app and status 200, which is why this study checked content types and bodies, not just status codes.

Add llms.txt as plain text, and, if you want agents to act on the site, an ARD catalog at /.well-known/ard.json. Make every other /.well-known/ path answer 404. My own platform failed that last check on 5 November.

Keep the speed you already have. The vibe-coded sites were the fastest group on a phone, and the list above adds text and metadata, not scripts. Then measure again: PageSpeed Insights with the agentic-browsing category, plus one fetch with JavaScript off.

Vibe coding statistics: questions people ask

What is vibe coding?

Building software by describing it to an AI tool in plain language and accepting what it generates, with little or no hand-written code. Lovable, Base44 and v0 are three such tools that small businesses use to make websites. This study measures the websites, not the tools.

How many websites were measured for these vibe coding statistics?

1,262 on 5 November 2026: 1,061 vibe-coded business homepages (532 Lovable, 430 Base44, 99 v0), 188 control sites on WordPress, Wix and Squarespace, and 13 WebCore sites. A second route found 27 more v0 sites the same day; they are reported separately and agree with the main 99 (median 541 words, 0% under 100).

Which vibe coding platform makes the most search-ready business website?

On raw text, v0: a median of 449 words without JavaScript and 3% of sites under 100 words (n = 99). On structured data, none of the three: business JSON-LD on 36% of Lovable, 50% of Base44 and 9% of v0 homepages, against 77% of traditional sites. On phone speed, all three beat the traditional builders.

Does Google see a page that only renders with JavaScript?

Google does render JavaScript for indexing, but later and on a crawl budget, and many AI crawlers do not render at all. That is why the study counts the words a crawler gets without running scripts: 28 for the median Base44 homepage, 1,014 for the median WordPress homepage.

Why does the study include WebCore, the author's company?

Because leaving it out would be worse. WebCore is shown as its own labelled column, never pooled with the control group, and its 5 November numbers include a failure the study found: 11 of 13 sites answered /.well-known/ard.json with the HTML shell and failed Lighthouse's ARD check. The fix and the 6 November re-measurement are reported separately, and the 5 November figures stand.

What does passing all scored agentic checks mean?

That every audit in Lighthouse's agentic-browsing category that was actually scored, binary or numeric, passed. Audits marked not applicable, informative or manual are not counted. It is stricter than the category score, which sets aside whatever is absent: 59% of Lovable, 40% of Base44, 51% of v0 and 27% of traditional sites pass it.

Can I quote these vibe coding statistics?

Yes, with attribution and a link. Each number carries its group size and the measurement date, 5 November 2026. The method and the pre-registration are on this page; the per-site data stays private because it names sites.

Were Lovable, Vercel and Base44 asked to comment?

Yes. On the day this page was published, Lovable, Vercel and Wix (which owns Base44) were each sent a link to it with their platform's figures, and invited to reply. Any reply is printed in the right-of-reply section below, in full.

What the platforms said

On the day this page was published, Lovable, Vercel (which makes v0) and Wix (which owns Base44) were each sent a link to it with their platform's figures and group sizes, and invited to comment. Any reply is printed here in full, as soon as it arrives.

Replies received so far: none. This section is updated when one arrives.

The method, as pre-registered

The pre-registration was written and timestamped on 5 November 2026 at 18:14 UTC, before any site in the samples was measured, and is published with the results unchanged except for its amendments section. The passages below are quoted from it.

The question

"When a small business builds its website with a vibe-coding tool (Lovable, Base44, v0), what does the site look like to search crawlers and AI agents that read the raw HTML, and how fast is it on a phone, compared with sites built on traditional builders (WordPress, Wix, Squarespace) and with WebCore?"

The hypothesis and its test

The hypothesis, kept word for word from the plan: "single-page apps (Lovable, Base44) look nearly empty to crawlers; v0's Next.js does better." The test, fixed before collection: nearly empty to crawlers means fewer than 100 words readable without JavaScript on the homepage. The hypothesis holds if (a) the median words-without-JavaScript is below 100 for Lovable and for Base44, and (b) the share of sites under 100 words is lower for v0 than for Lovable and lower than for Base44, with the v0 95% Wilson interval not overlapping either of theirs. It partly holds if (a) is true but (b) is not, or (b) is true but (a) is not; it does not hold otherwise. Results are published whatever they show.

The samples

  • Vibe-coded business sites, the study group: 1,061 homepages found on 5 November 2026 and screened as businesses (a named service plus a phone, email or street address on the homepage): Lovable 532, Base44 430, v0 99. Candidates came from certificate logs, a search engine queried with 110 service keywords, and about 100 further keyword queries; 3,467 candidates were screened. v0's sample is small because v0 publishes to vercel.app, which it shares with every Vercel user, and its generator meta is invisible to search engines. v0 is reported as is, with n = 99, not padded.
  • Traditional builders, the control: a random sample of up to 100 sites each for WordPress, Wix and Squarespace, drawn from the Web Index's prospect records in WebCore's database, Ontario trade and clinic businesses swept by the GTM desk, builder detected from the homepage HTML. Only four fields were read per record: the URL, the vertical, the town and the builder; no names, emails or phones. Records were reduced to one per host, sorted, shuffled with a seeded generator (seed 20261105) and the first 100 per builder taken. The records held only 41 Wix and 47 Squarespace hosts, so those two groups are the whole pools, not samples; WordPress is 100 of 830.
  • WebCore, the author's company: every customer site published on its own verified custom domain at the moment of sampling, plus webcore.pro, 13 sites. A census of a small group, shown as a separate labelled column and never pooled with the traditional builders.

The measures

  • Google PageSpeed Insights API v5, strategy mobile, one call per site with the performance and agentic-browsing categories, concurrency 3, one retry on HTTP 429 or 5xx, every raw answer saved. Kept per site: the performance score, LCP, CLS and TBT from the lab run, the agentic-browsing category score, and every audit's id, score and display mode. A site passes all scored agentic checks when every audit whose display mode is binary or numeric passes; audits marked informative, not applicable, manual or error are not counted.
  • The raw HTML with no JavaScript: one plain GET of the homepage with a research User-Agent that names the study and points to webcore.pro, 25 s timeout, 3 MB cap, redirects followed, robots.txt honoured. Kept per site: words without JavaScript (the text after removing script, style, noscript, template and svg elements and all tags), the title, the H1 count, the meta description, the JSON-LD types, and whether /sitemap.xml, /robots.txt, /llms.txt and the ARD catalog (/.well-known/ard.json or /.well-known/ai-catalog.json) exist with the right content type and body. Single-page apps often answer every path with the HTML shell and status 200; the content-type and body checks are what stop those from counting as present.
  • Business JSON-LD means at least one type that is Organization, LocalBusiness or one of their schema.org subtypes. WebSite, WebPage, BreadcrumbList, Person, Article or FAQPage alone do not count.

Rules, failures and amendments

  • Everything was fixed before measurement. Differences between groups are read from the Wilson intervals; no other statistical test is run. Group sizes are stated next to every number. No individual site is named anywhere in the published material; the per-site data stays internal because it holds site URLs.
  • Failures, all counted: PageSpeed answered for 1,257 of 1,262 sites (4 Lovable sites and 1 WordPress site failed after the retry and the declared re-run). The raw fetch measured 1,247 of 1,262; the 15 failures were all WordPress: 12 bot-challenge pages, 2 robots.txt blocks, 1 HTTP 403. Nothing was retried with another identity.
  • Amendment, 18:33 UTC: a capped second route (the same harvester with 45 unused keywords, plus the vercel.app hosts linked from v0's public community pages) found 27 more v0 sites. They are reported as a separate column and agree with the main 99 (0% under 100 words, median 541 words); the main v0 column stays at n = 99.
  • Amendment, 18:38 UTC: a few Lighthouse answers came back with the agentic category scored but no performance score. Every such site, and every failed call, got exactly one more identical call; 15 of 25 came back with a score. Sites still without one count for the agentic measures only.
  • Amendment, 20:45 UTC: 6 of 430 Base44 rows rest on the weakest platform footprint and 2 of 100 WordPress rows carry a Wix generator meta. All stay in their registered groups; dropping them could move a Base44 share by at most 1.4 points and a WordPress share by at most 2.4 points.
  • Amendment, 6 November 01:55 UTC: the WebCore group alone was re-measured after a disclosed platform fix and is reported separately above. The main results are unchanged and remain the 5 November measurement.

PageSpeed scores are single lab runs on a simulated phone; a single run can move by several points, which is why medians and shares are reported, not individual scores. Words without JavaScript counts the text a crawler gets without running scripts.

About the author

Rigo Guadrón

Founder of WebCore

Rigoberto Guadrón founded WebCore, an AI for revenue for small businesses, and OrbitWeb, a Google Partner agency started in 2017. He lives in Cambridge, Ontario.

More about Rigo →

Measure your site before your customers' agents do.

Name your agent and WebCore builds a site with business JSON-LD, a sitemap, robots.txt and llms.txt written on every publish. On 5 November 2026, 12 of its 13 live sites had each of them.

Start free, no card needed