Quick Answer
To tell if a website is vibe coded, look first for the builder's own marks. On free plans, Lovable, Bolt, Replit and Base44 put a badge on published sites, and all four publish to a default address: lovable.app, bolt.host, replit.app and base44.app. The page source often keeps leftovers too, such as Bolt's default preview image or Replit's template description. Design clichés are only hints, and AI-code detectors only estimate. None of it tells you whether the site is safe, which takes a different set of checks.
Sign 1: The Builder's Badge and Address
The main AI app builders publish to a default subdomain first, and most add a small badge until you pay to remove it. This is what each one's documentation says, checked on 24 October 2026:
| Builder | Default address | Badge on the free plan | Removing the badge |
|---|---|---|---|
| Lovable | yourname.lovable.app | "Edit with Lovable" | Pro plan and above |
| Bolt | a random name on bolt.host (Netlify for projects published before 14 August 2025) | "Made in Bolt" | Any paid plan |
| Replit | yourname.replit.app | "Made with Replit", with your referral link | Core plan |
| Base44 | yourname.base44.app | "Edit with Base44", on public apps only | Starter plan and above |
| v0 by Vercel | a vercel.app address | None mentioned in v0's docs | Not applicable |
Sources: Lovable publishing and plans, Bolt's publishing and hosting plans, Replit's publishing and Starter plan, Base44 and v0.
Read the table both ways. A badge or a builder subdomain is strong evidence, but its absence proves little: paid plans hide the badge and a custom domain hides the address. A vercel.app address on its own says nothing about v0, because that domain belongs to Vercel.
Sign 2: Leftovers in the Page Source
We read the raw HTML of six public sites on these default addresses on 24 October 2026. Builders leave fingerprints in the parts visitors never see:
- Bolt: a published site loaded
https://bolt.new/badge.jsand still used Bolt's default preview image,bolt.new/static/og_default.png. - Lovable: Lovable's own academy site carried the badge markup, a link tagged
utm_source=lovable-badge. A user's Lovable app loaded scripts from paths such as/~flock.js, with a token naming a Lovable project ID that starts withlovp_. Lovable's docs add that, unless you set one, the preview image is the latest screenshot of your app. - Replit: an example app from Replit's docs still had the template description, ending "Update this description to reflect the app."
- Base44: two apps served their preview images from a path containing
base44-prod, and one kept the alt text "Base44 link preview".
None of the six had a generator meta tag, so do not count on one. You can run the same check on any site from a terminal:
# Look for builder leftovers in a site's HTML
curl -sL https://example.com | grep -ioE "lovable[^\"' ]*|bolt\.new[^\"' ]*|replit[^\"' ]*|base44[^\"' ]*"
# Check the description and preview image people see when the link is shared
curl -sL https://example.com | grep -iE 'name="description"|property="og:image"'
Sign 3: Design Clichés, the Weakest Evidence
Design creators on social media keep a list of visual tells, such as this one: purple-to-blue gradients, emoji in headings, the Inter font everywhere, glassmorphism cards and untouched shadcn components.
Each of these can appear on a site a person built by hand, so treat them as hints, not proof. If they bother you on your own site, they are a design fix, not a security one.
If You Have the Code: Signs in the Repo
With access to the repository you can look past the surface:
- Git history. Some coding agents add trailers such as
Co-Authored-By: Claudeto the commits they write. - Packages that do not exist. AI tools sometimes import a package name nobody ever published. Our guide to hallucinated imports shows how to catch them.
- Writing habits. Justin McKelvey's field guide lists tells such as comments that narrate each line, calls to APIs that do not exist, naming that drifts between files, copy-pasted logic and "ceremonial" error handling.
Why AI Code Detectors Cannot Settle It
AI-code detectors give a probability, not a verdict, and McKelvey's guide opens bluntly: "The Detector You Want Doesn't Exist. The Skill Does." Even a perfect detector would answer the wrong question. A score that says 80% of a file came from a model tells you nothing about whether its login checks the right user, whether a secret key ships to the browser, or whether the database lets one customer read another's records.
That is the question most people asking "is this vibe coded?" really have: can I trust this site with my data, or can I ship mine?
What Matters More Than Who Built It
Whether a person or a model wrote the code, the same checks decide whether a site is safe to use:
- Who can read the data. Missing access rules let one user read another's records. See Supabase Row Level Security and the Lovable BOLA breach.
- Secrets in the browser. Keys prefixed for the frontend end up in the bundle anyone can download. See client-side secret exposure.
- Headers and certificates. See missing security headers and SSL certificate issues.
- The basics a visitor sees. A privacy policy and terms page, no console errors, no broken links.
The leftovers from Sign 2 belong on this list too. A template description or a builder's default preview image is what search results and link previews can show when someone shares your site.
How to Fix It on Your Own Site
If you built your site with one of these tools, a few minutes removes the most obvious marks:
- Open the site in a private window and look for the builder's badge. Remove it in the builder's settings if your plan allows.
- Connect your own domain, so the builder's subdomain is not the address people share.
- Replace the template description and preview image with your own.
- Then check what visitors cannot see: access rules, keys in the bundle, headers and legal pages.
<!-- BAD: the template text is still in the page head -->
<meta name="description" content="... built on Replit. Update this description to reflect the app.">
<meta property="og:image" content="https://bolt.new/static/og_default.png">
<!-- GOOD: your own words and your own preview image -->
<meta name="description" content="Invoice tracking for freelancers. Free for your first 20 clients.">
<meta property="og:image" content="https://yourdomain.com/og-image.png">
Tools like VibeDoctor's Vibe Check (vibedoctor.io) automatically scan your live site and your repository: security headers, SSL, console errors, SEO tags, privacy policy and terms, and secrets in the code, with specific file paths and line numbers. Free to sign up.
FAQ
Can you tell if a website was made with Lovable?
Often, yes. Lovable publishes to a lovable.app address by default, and sites on the free plan show an "Edit with Lovable" badge, which only Pro plans and above can remove. The badge markup, with a link tagged utm_source=lovable-badge, is visible in the page source. Removing the badge and using your own domain hides both.
How do I remove the "Made with Replit" or "Made in Bolt" badge?
Upgrade the plan. Replit's docs say removing the "Made with Replit" badge requires Core, and Bolt's say any paid plan removes the "Made in Bolt" badge. Lovable's badge needs Pro or above, and Base44's needs Starter or above.
Can AI code detectors tell if code is AI-generated?
They can estimate, not prove. Detectors give a probability, and that number says nothing about whether the code is secure. For a site you depend on, checking access rules, exposed keys and headers tells you more than any detector score.
Is it bad if my website looks vibe coded?
Not in itself. A builder badge or a template preview image is easy to remove if you do not want it. The problems that hurt users, such as data any visitor can read, do not show on the surface at all.
Are vibe coded websites insecure?
Not automatically. Being built with an AI tool does not make a site insecure by itself. The usual problems are missing access rules, keys shipped to the browser and missing security headers, and you can check for all of them whoever wrote the code.