Ce site est-il vibe-codé ? Découvrez quel builder IA l'a créé

Collez une URL. Si nous trouvons un marqueur fiable de Lovable, Bolt.new, Base44, v0, Replit, Bubble, Softgen, Same.new, Anything (Create.xyz), Tempo Labs ou Firebase Studio, nous nommons le builder et montrons ce marqueur. Des indices plus faibles ne nous suffisent pas : sur certains sites, nous ne dirons rien — mieux vaut pas de nom qu'un nom faux. Puis nous vérifions ce que ces sites ratent d'habitude : clés exposées, en-têtes de sécurité manquants, une page que les moteurs de recherche voient vide. Gratuit, sans inscription.

Gratuit, sans inscription. L'analyse de base n'envoie que les requêtes qu'un navigateur ordinaire enverrait.

Voir un rapport complet d'exemple

Ce qu'une seule URL vous apprend

Vérifiez vous-même

Voici des indices à chercher à la main ; le scanner ne nomme un builder que sur un marqueur qui ne peut venir de nulle part ailleurs, ou sur deux marqueurs indépendants, il peut donc se taire là où vous en trouvez un.

  1. Lisez le code source de la page

    Ajoutez view-source: devant l'URL et cherchez dans la page (Cmd/Ctrl + F) ces chaînes — elles viennent des modèles, scripts et badges des builders eux-mêmes. L'adresse est aussi un indice : *.lovable.app, *.bolt.host, *.base44.app, *.replit.app, *.bubbleapps.io et *.created.app appartiennent aux builders eux-mêmes. Pour Firebase Studio et Anything, le titre et la description du modèle ne comptent qu'ensemble : le scanner nomme le builder si les deux sont restés intacts, pas sur la seule description. L'image d'aperçu par défaut de Bolt n'est qu'un indice pour vous : n'importe quelle page peut la reprendre par son adresse, donc le scanner ne nomme pas Bolt sur cette base.

    view-source:https://example.com
    
    Lovable   /__l5e/
    Lovable   gpt-engineer-file-uploads
    Bolt      bolt.new/badge.js
    Bolt      bolt.new/static/og_default.png
    v0        name="generator" content="v0.app"
    Replit    replit-dev-banner.js
    Replit    replit-pill
    Base44    base44_access_token
    Bubble    bubble_session_uid
    Firebase  <title>Firebase Studio App</title>
    Firebase  Generated by Firebase Studio
    Anything  <title>Anything App</title>
    Anything  Created with Anything
    Softgen   cdn.softgen.ai/script.js
    Same      same-runtime
    Tempo     tempo-public-assets/error-handling.js
  2. Regardez les en-têtes de réponse

    Certains builders signent leurs réponses. Bolt ajoute x-powered-by: Bolt.new sur ses adresses bolt.host ; Bubble envoie x-bubble-perf et x-bubble-capacity-* même sur les domaines personnalisés. Un cache-tag qui finit par :studio désigne un backend Firebase App Hosting nommé studio — celui que crée Firebase Studio —, mais ce n'est qu'un indice pour vous : le scanner ne nomme pas de builder sur cette base. Vercel, Netlify ou Cloudflare dans les en-têtes désignent l'hébergeur, pas le builder.

    curl -sI https://example.com | grep -iE '^(x-powered-by|x-bubble|cache-tag)'
  3. Vérifiez le DNS du domaine à la main

    Connecter un domaine personnalisé laisse des enregistrements. Un TXT sur _lovable.<domaine>, ou l'adresse 185.158.133.1, renvoient à Lovable ; un TXT replit-verify=, à Replit ; un CNAME vers base44.onrender.com, à Base44. Le scanner lui-même nomme Lovable sur l'adresse 185.158.133.1, et Replit seulement quand replit-verify va de pair avec l'adresse de Replit 34.111.179.208. Le TXT sur _lovable et le CNAME vers Base44 ne sont que des indices pour vous : un enregistrement peut survivre au site pour lequel il a été créé, confrontez-le donc à la page elle-même.

    dig +short TXT _lovable.example.com
    dig +short A example.com
    dig +short TXT example.com | grep replit-verify
    dig +short CNAME www.example.com
  4. Cherchez dans les scripts de l'app

    DevTools → Sources, rechargez, puis cherchez dans tous les fichiers chargés d'un coup (Cmd/Ctrl + Option/Alt + F). Ces chaînes sont dans le bundle de l'app elle-même, donc elles survivent souvent à un domaine personnalisé, voire à un changement d'hébergeur. Celle de Lovable n'apparaît que dans les apps qui utilisent Supabase ou Lovable Cloud. Le bundle d'un blog peut citer ces chaînes dans un article : le scanner ne nomme donc Lovable ou Base44 sur elles qu'avec un second marqueur, et pour Tempo il cherche le code qui définit TempoDevtools, pas le mot.

    Lovable   lovable-preview-auth
    Base44    base44SharedInstances
    Tempo     TempoDevtools
  5. Rien trouvé ? Cela ne prouve rien

    Un badge se masque, un texte de modèle se modifie, un projet s'exporte vers n'importe quel hébergeur — et le code écrit avec Cursor, Claude Code ou Copilot ne laisse aucune trace de plateforme. Une fois compilés pour la production, le code écrit à la main et celui écrit par l'IA se ressemblent ; aucun outil ne peut honnêtement les distinguer.

Les correctifs repartent dans le builder

Chaque rapport se termine par un prompt pour un builder IA : ce qui ne va pas, où, et comment vérifier que le correctif a marché. Collez-le dans Lovable, Bolt, v0 ou Replit Agent — ou dans Cursor.

Corrige ces problèmes sur myapp.bolt.host. Localise chacun avant de modifier quoi que ce soit.

1. Une clé d'API OpenAI (sk-proj-…7fQ2) se trouve dans assets/index-5b0c.js.
   Révoque-la dans le tableau de bord OpenAI, déplace l'appel dans une fonction serveur et lis la clé depuis une variable d'environnement à cet endroit.

2. Le HTML brut n'a pas de meta description.
   Ajoute une description et des balises Open Graph dans index.html pour qu'elles existent avant l'exécution de JavaScript.

Une fois terminé, revérifie : https://scanyoursite.app/fr?check=myapp.bolt.host

Chaque prompt est un nouveau déploiement

Un builder IA peut réécrire la moitié de l'app d'un coup. Avec Pro, nous repérons chaque nouvelle version, la vérifions en quelques minutes et ne vous écrivons que si quelque chose de nouveau casse — sur Telegram, par e-mail ou dans Slack et Discord.

Voir les offres

Questions

Pouvez-vous dire si le code a été écrit par une IA ?

Non — et personne ne peut honnêtement le faire de l'extérieur. Une fois compilés et minifiés pour la production, le code écrit à la main et celui écrit par l'IA se ressemblent. Nous ne donnons pas de « probabilité d'IA ». Nous ne nommons un builder que sur un marqueur fiable, et nous vous montrons lequel.

Aucun builder trouvé — le site a donc été fait à la main ?

Pas forcément. Un site peut être fait avec l'IA sans porter la moindre empreinte : badge masqué, texte du modèle modifié, projet exporté vers un autre hébergeur, ou code écrit avec Cursor, Claude Code ou Copilot, qui ne laissent rien sur le site. Pas de nom signifie seulement que nous n'avons pas trouvé de marqueur fiable.

Quels builders reconnaissez-vous ?

Lovable, Bolt.new, Base44, v0, Replit, Bubble, Softgen, Same.new, Anything (Create.xyz), Tempo Labs et Firebase Studio. Certains marqueurs survivent à un domaine personnalisé ; d'autres n'apparaissent que sur l'adresse du builder, comme *.bolt.host. Pour Bubble et Replit, un marqueur prouve la plateforme, pas que son IA a écrit l'app.

Puis-je vérifier un site qui n'est pas le mien ?

Oui. L'analyse gratuite est passive : elle demande la page, ses scripts, robots.txt, le sitemap, le DNS et le certificat — ce que récupère un navigateur ou un robot d'indexation — et s'identifie comme ScanYourSiteBot. Les sondes plus poussées, comme la vérification des tables Supabase, ne tournent que sur les domaines dont le propriétaire a prouvé la propriété.

C'est mon site et je ne veux pas qu'il soit vérifié.

Saisissez votre domaine sur scanyoursite.app/bot. C'est immédiat et sans compte ; la même page indique ce que notre bot demande et le User-Agent qu'il envoie.

Combien ça coûte ?

L'analyse est gratuite, sans inscription. La surveillance avec une vérification après chaque déploiement commence à $19 / €19 par mois pour trois sites.

Pour les vibe coders

Collez votre URL. Recevez la liste en une minute environ.

Chaque constat explique ce qu'il signifie pour vous et comment le corriger — ou vous donne un prompt que votre outil de code IA peut appliquer.

Gratuit, sans inscription. L'analyse de base n'envoie que les requêtes qu'un navigateur ordinaire enverrait.