SecureYourVibe Research

We Scanned 274 Vibe-Coded Apps.
Only 1 Got an A.

Everyone's shipping apps with AI now. Nobody's checking if they're secure. We checked.

The Vibe-Coding Boom Has a Security Problem

In the last six months, a new wave of apps has flooded the internet. Built with Lovable, Bolt, Cursor, and ChatGPT. Shipped in days instead of months. Deployed to Vercel and Netlify with a single click.

They call it "vibe coding" — and it's producing apps at a pace the internet has never seen.

We wanted to know: are these apps secure?

So we scanned 274 of them. Production apps, live on the internet, built by indie makers and AI-assisted developers. We checked for exposed secrets, missing security headers, leaked source code, open databases, and dozens of other common vulnerabilities.

The results were sobering.


The Average Vibe-Coded App Gets a C

Out of 274 apps we successfully scanned, the average security score was 78 out of 130 — a solid C. Not failing. Not great. Just... unprotected in ways that matter.

1
out of 274 apps
got an A
94%
have no Content
Security Policy
6.2%
have real secrets
in their JavaScript
78
average score
out of 130
GradeCountPercentageWhat It Means
A 1 0.4% Properly secured
B 53 19.3% Good, a few gaps
C 155 56.6% Missing important protections
D 47 17.2% Seriously exposed
F 18 6.6% Wide open

One app out of 274 got an A. One. And zero got an A+.


Your Hosting Platform Gives You a Floor, Not a Ceiling

Here's the thing nobody tells you about deploying to Vercel, Netlify, or Cloudflare: they handle the basics brilliantly — and nothing else.

What Your Platform Does

Secure cookies 99.6%
TLS 1.3 97.8%
HTTPS available 100%
No info leakage 88.3%

What You Must Do Yourself

CSP header 6.2%
HSTS preload 11.7%
Email auth (SPF/DMARC) 27.7%
SRI on scripts 1.1%
security.txt 0.4%
DNSSEC 0%

94% of vibe-coded apps have no Content Security Policy. That means if an attacker finds any way to inject a script — a compromised CDN, a malicious ad, an XSS bug — the browser will happily execute it. No questions asked.

The gap between "what the platform gives you" and "what security actually requires" is massive. And almost nobody is crossing it.


17 Apps Had Real Secrets in Their JavaScript

This is the one that should make you sweat.

Out of 274 apps, 17 had actual API keys or secrets baked into their client-side JavaScript bundles. Not public keys (like Stripe publishable keys, which are designed to be public). Real secrets. The kind that lets someone make API calls as you, access your backend services, or rack up charges on your account.

These aren't obscure secrets hidden in minified code. Our scanner found them automatically by scanning the JavaScript files that every visitor downloads. If our scanner can find them, so can anyone else.

How this happens: When you build with AI coding tools, it's easy to paste a secret into your code and forget it's there. The AI doesn't warn you. The framework doesn't stop you. And once it's in a JavaScript bundle, it's public forever — even after you remove it from your source code, anyone who cached the old bundle still has it.

Move secrets to environment variables. Access them server-side only. Never import them in files that get bundled for the browser. This takes about 5 minutes.


16 Apps Left Their Source Maps on the Server

Source maps are files that let you debug your code during development. They contain your original, readable source code — variable names, comments, file structure, everything.

16 apps (5.8%) shipped source maps to production. That means anyone can download their full source code, study how the app works, read internal comments, and find the exact weak points to attack.

The fix is one line in your build config:

// Next.js — next.config.js
productionBrowserSourceMaps: false

// Vite — vite.config.js
build: { sourcemap: false }

That's it. One boolean. But 1 in 17 apps hasn't set it.


48 Apps Told Hackers Where to Look

Here's a security irony: robots.txt — the file that tells search engines what not to index — is also a roadmap for attackers.

48 apps (17.5%) had robots.txt files that listed paths we could actually access. "Hey Google, please don't look at our /admin panel, our /api/internal endpoints, or our /staging environment." When we checked those paths? They were wide open.

robots.txt is not a security mechanism. It's a polite request. Hackers don't follow polite requests.

If you have sensitive paths, protect them with authentication — don't just ask Google not to look.


The Security Headers Nobody Sets

Security headers are instructions your server sends to the browser: "Don't run unauthorized scripts." "Don't embed this page in someone else's site." "Only connect over HTTPS."

They're the simplest, most effective security improvement you can make. And almost nobody does.

HeaderMissingWhat You Lose
Permissions-Policy 97.4% Camera, mic, and geolocation unrestricted by default
Content Security Policy 93.8% No XSS protection. Any injected script runs freely.
X-Frame-Options 90.5% Your page can be embedded in a fake site (clickjacking)
Referrer-Policy 55.5% Full URLs leak to external sites when users click links
X-Content-Type-Options 52.6% Browsers may execute files as code when they shouldn't
HSTS 23.0% Users can be downgraded from HTTPS to HTTP

97.4% of vibe-coded apps don't set a Permissions-Policy. That means any third-party script loaded on the page could theoretically access the user's camera or microphone — unless the user has blocked it in their browser settings.

Adding all of these headers takes about 10 minutes. For Vercel, it's a vercel.json file. For Netlify, it's a _headers file. Copy, paste, deploy.


What the One A-Grade App Did Right

Out of 274 apps, exactly one earned an A: a Nuxt.js app on Cloudflare that scored 113 out of 130.

What did it do differently?

CheckStatus
Every cookie marked secure and HttpOnlyPassed
TLS 1.3 with no legacy protocol supportPassed
No information leakage headersPassed
SPF and DMARC configured for emailPassed
Clean Safe Browsing recordPassed
No exposed source maps, secrets, or filesPassed
COEP / Cross-origin isolationMissing
SRI on external scriptsMissing
DNSSECMissing

The gap between this app and the average isn't talent or budget. It's awareness. Someone on the team knew what to check. That's it.


The Vibe-Coding Stack

We also mapped what these 274 apps are built on:

Cloudflare
128 apps (46.7%)
Vercel
80 apps (29.2%)
Next.js
44 apps (16.1%)
Netlify
21 apps (7.7%)

Cloudflare dominates. Nearly half of all vibe-coded apps are behind Cloudflare's CDN. Vercel is second, with Next.js as the most common framework.

This is good news for baseline security — Cloudflare and Vercel handle TLS, DDoS protection, and cookie security well. But it also means the missing security headers problem could be fixed at the platform level. If Vercel shipped a default Content-Security-Policy header, the 94% number would drop overnight.


What This Means for You

If you've vibe-coded an app and deployed it, there's a good chance you're sitting in that C-grade majority. The platform gave you the basics. The AI wrote the code. But nobody checked the security headers, nobody scanned for secrets in the bundle, and nobody set up a Content Security Policy.

The good news: every issue we found takes less than 30 minutes to fix. Most take less than 5.

The bad news: if you don't fix them, anyone can find them. We built an automated scanner and ran it against 274 apps in 8 minutes. It's not hard. And we're not the only ones scanning.

Scan Your Site

Enter your URL. Get your grade in 30 seconds.
Every issue explained in plain English with copy-paste fixes.

Scan Your Site Free →

How We Did This

We compiled a list of 328 production apps from directories that showcase AI-built and vibe-coded projects: madewithlovable.com, madewithbolt.com, builtusingcursor.com, vibejam entries, and several curated lists. Of these, 274 were reachable and successfully scanned.

Every check is read-only. We never attempted to log in, write data, or exploit any vulnerability. We checked publicly accessible HTTP headers, JavaScript bundles, common file paths, and DNS records — all things visible to any visitor.

Our scanner runs 65+ individual checks including: security header analysis, JavaScript secret scanning (45 regex patterns with false-positive filtering), exposed file detection, source map discovery, CMS-specific probes, TLS configuration, DNS security records, CORS policy testing, and Safe Browsing status.

No site names are associated with specific vulnerabilities in this report. All statistics are presented in aggregate.

Previously: We Scanned 81 Websites. Only 2 Passed. — our first study, including major sites like CNN, NYTimes, Wix, and Twitter.

Scanned February 2026. 328 production apps attempted, 274 successfully scanned.
Sources: madewithlovable.com, madewithbolt.com, builtusingcursor.com, vibecoding.vip,
jam.pieter.com, awesome-vibecoded-apps, and curated indie app directories.
All scans performed using publicly accessible HTTP requests only.