Vibecode Friction Tax

85 Vibecoded Sites, 0 Meta Pixels: What AI Ships

We ran 85 production sites built with Lovable, v0, Replit, Bolt, and Cursor through our free audit. Zero had a Meta Pixel installed. 76% had no tracking at all. 66% had no H1. AI ships fast, but it ships systematic SEO + tracking blind spots. 397 findings, ranked. We call the pattern the vibecode friction tax.

May 27, 20268 min readMethodologyObservational · no A/B test
Jump to section
  1. Summary
  2. Method & dataset
  3. Mobile is the store
  4. The apps are the friction
  5. The cart leaks
  6. Product images break twice
  7. Tap response feels heavy
  8. Half never scroll
  9. Buttons are too small
  10. Playbook
  11. Limitations

SummaryWhat 85 vibecoded sites reveal

0
Meta Pixels installed across 85 sites
76%
had no tracking of any kind
66%
had no H1 tag at all
62%
had no canonical URL
60%
had no schema.org structured data
4.7
findings per site, on average

We sourced 93 production sites built with Lovable (39), v0 / Vercel (28), Replit (12), Cursor (4), and Bolt (2). 85 audited cleanly, 8 returned 403 or auth gates. The findings are not random. They cluster in ways that point at how each tool ships HTML.

Worst surprise: not one site had a Meta Pixel. Not one. Many had pricing pages, contact pages, lead-form fields, clearly intended to convert paid traffic. None of them can measure a Facebook ad click. The same is true for Google Ads conversion pixel, TikTok pixel, LinkedIn Insight. The shipped-code default is no tracking.

01How we built the sample

The premise: AI builders ship sites fast. If the underlying HTML has systematic gaps, those gaps replicate at scale. To find out, we sourced a sample of real public sites built with each platform and ran each through our free landing-page audit (the same tool live at harvv.com/ads-audit).

Sourcing approach, per tool:

  • Lovable   site:lovable.app via Google Serper - these are sites deployed on Lovable's hosting subdomain
  • v0 / Vercel   site:vercel.app - most v0-generated sites deploy to vercel.app subdomains
  • Replit   site:replit.app - Replit's deployment subdomain
  • Bolt   "built with bolt.new" - self-reported attributions linking to live sites
  • Cursor   "built with cursor" site - Cursor is an IDE, not a platform, so attribution is harder. We pulled sites that explicitly self-identified as Cursor-built.

We deduped by hostname so each site appears once. 93 unique domains, 85 audited cleanly (8 returned 403 / Cloudflare / auth wall). The audit reads rendered HTML server-side and identifies tracking pixels, SEO structure, mobile UX, and performance signals. Same engine our paying customers use.

Caveats up front: Cursor's sample is tiny (4 sites). Bolt's is also tiny (2). The numbers for Lovable, v0, and Replit are directional. The aggregate picture across 85 sites is robust.

020 of 85 sites had a Meta Pixel. Not one.

This is the finding we did not expect to be unanimous. Meta Pixel is the single most common tracking pixel on the open web, and is required to optimize any Facebook or Instagram ad campaign for downstream conversions. Without it, every dollar you spend on Meta ads is being optimized against link clicks, not real outcomes.

Across our 85-site sample, the pixel installation rate was:

  • Meta Pixel: 0 sites (0%)
  • Google Ads conversion pixel: 0 sites (0%)
  • TikTok Pixel: 0 sites (0%)
  • LinkedIn Insight: 0 sites (0%)
  • Microsoft (Bing) UET: 0 sites (0%)

Some sites had Google Analytics (16 sites, 19%) or Google Tag Manager (1 site, 1%). But ad-pixel tracking, the kind you need to make Meta or Google Ads actually work, was absent on every single site.

This matters because of what these sites look like. Roughly half had pricing pages. Many had clear lead-capture forms. Several explicitly described themselves as SaaS or e-commerce. The intent to monetize via paid acquisition is right there in the HTML. The instrumentation to do it is missing entirely.

Why does it happen? Our read: AI builders ship semantic HTML structure (sometimes), styling (always), and component logic (always). They do not ship analytics, because analytics is an account-specific external integration. The first prompt is "build me a landing page for X," not "set up tracking for my Meta ads on a landing page for X." The pixel never enters the conversation.

0366% of vibecoded sites have no H1 tag

An H1 is the primary heading on a web page. Google reads it as the strongest on-page signal of what the page is about. Standards-compliant HTML expects exactly one H1 per document. Most CMS templates, Webflow templates, Squarespace templates ship with an H1 by default. Vibecoded sites do not.

56 of 85 sites (66%) shipped with no H1 at all. Across our sample we found 7 sites with multiple H1s (4 of those were Cursor-built, suggesting freer hand-coding). The remaining 22 had a single H1, the standards-compliant default.

Why so few H1s? Modern AI builders default to Tailwind component patterns where the biggest visible text is typically rendered with utility classes (text-4xl, text-6xl) on a span or div, not an actual H1 tag. Visually it looks like a heading. Semantically it is invisible to search engines and screen readers.

This is one of the cheaper SEO mistakes to fix and one of the highest-leverage. Adding a single H1 with your primary keyword on a vibecoded landing page can move it from page 5 to page 2 for a long-tail query, with no other changes.

04The full SEO blind-spot map

The H1 gap is not isolated. AI builders ship without most of the SEO signals search engines use to understand a page:

SignalSites missing%
H1 tag56 / 8566%
Canonical URL53 / 8562%
Schema.org structured data51 / 8560%
Meta description7 / 858%
Open Graph imagevariable (most ship the platform default)-

The pattern is consistent across every tool we sampled. Canonical URLs are missing on more than half the sites we audited, which means any site with duplicate-content risk (UTM-tagged share links, paginated views, query-string variants) is at risk of being de-indexed.

Structured data is absent on 60% of sites. Without it, Google has no clean way to categorize the page (is this a Product? Article? Organization? FAQPage?). The page can rank, but not in rich-result placements, and not in AI Overview citations, which weight schema heavily as of 2026.

05Mobile + UX friction shows up next

Beyond SEO, vibecoded sites also struggle with mobile and UX signals. Two findings dominate:

  • 29% have tap-target risk on mobile. 25 of 85 sites shipped with interactive elements (buttons, links) smaller than the WCAG 44x44px minimum or with insufficient spacing. Tailwind defaults like text-sm and p-2 render below tappable size on a phone.
  • 18% had potential dead clicks. 15 of 85 sites had elements styled to look interactive (cursor: pointer, hover states, button appearance) but with no actual click handler attached. A user taps it expecting something to happen; nothing does. These are not always bugs in the strict sense, but they wreck user trust.

Other patterns we saw, less frequently:

  • 14% had form fields without labels. Accessibility fail. Also hurts conversion.
  • 12% had images without width/height attributes. Causes Cumulative Layout Shift, which Google penalizes.
  • 18% had viewport zoom blocked. A vibecoded reaction to making layouts look "clean" on mobile, but it disables a standard accessibility feature for users with vision issues.

06How the tools compare

Findings per site, averaged by tool (sample size in parens):

ToolSitesAvg findingsAvg high-severityGA installed
Lovable393.71.021%
Replit124.71.08%
Cursor44.81.525%
v0 / Vercel285.80.914%
Bolt27.01.00%

Caveat: Cursor and Bolt sample sizes are too small to draw strong conclusions. Among the three larger samples, Lovable ships the cleanest landing pages on average (3.7 findings per site), v0 the most issues (5.8). Replit lands in the middle. None ship with ad pixels by default.

Replit ships the lightest HTML by a wide margin (avg 5 KB rendered vs Lovable's 37 KB and v0's 256 KB). Cursor sites are the heaviest at 862 KB avg, likely because Cursor produces more custom hand-written code with all its own dependencies bundled rather than relying on a platform-provided shell.

07What this means if you vibecoded your site

If you built your site with any of these tools and you intend to drive paid traffic to it, three things almost certainly need to happen this week:

  1. Install Meta Pixel. Not for Facebook ads necessarily. For the option to ever run Facebook ads in the future. Without the pixel in place 30+ days before your first campaign, Meta has zero data to optimize against. Every Meta Pixel sees pageview, lead, purchase events from your visitors automatically once installed. Takes 5 minutes.
  2. Add an H1 with your primary keyword. Often the AI-generated page has the right TEXT visually (a big bold sentence at the top), but it is rendered as a div or span. Wrap that text in an <h1> tag. One change, large SEO impact.
  3. Add a canonical URL. One line in the head: <link rel="canonical" href="https://yoursite.com/">. This prevents Google from treating UTM-tagged variants of your URL as duplicate-content competitors.

None of these require rewriting the site. They are textual additions to the HTML head and one tag swap. AI builders default to skipping them because nobody prompts for them. Once you know to ask, every modern AI builder will add them on request.

If you want to know which specific issues your site has, drop your URL into our free audit. Same engine that produced the data in this study. About a minute, no signup.

08Limitations

A few caveats on the methodology:

  • Sample selection. Sites are sourced from Google search for tool-specific signatures (subdomains, "built with X" mentions). This skews toward sites that have been indexed at all, which excludes the freshest deployments.
  • Static HTML only. Our audit reads the server-rendered HTML response. Sites that hydrate via JavaScript after load may show different signal coverage than what we measured. The findings above reflect first-paint HTML, which is also what Google indexes.
  • Cursor and Bolt sample size. 4 and 2 sites respectively. Conclusions for those two tools are not statistically meaningful. We include them in the table for transparency but call out the size limit.
  • No customer overlap. None of the 85 sites are Harvv customers. We have no skin in the game on this study. The data is from publicly accessible HTML, captured externally.

Methodology questions, or want the full dataset? jordan@harvv.com.

Run this on your store  →