Check your app before you share the link.

Paste your app’s address. We look at it the way strangers, Google and ChatGPT do, and flag leaked keys, open files, search blockers and starter-template leftovers. Every problem comes with a prompt you can paste into Lovable, Bolt, Cursor or Claude Code.

  • Free, no signup.
  • We only load what any visitor’s browser can load.
  • No access to your repo or your AI tool.

How it works

  1. Paste your address.

    Your live app, preview link or custom domain. No signup.

  2. We look from the outside.

    We load your page and a few standard addresses (like /robots.txt and /.env), read your JavaScript for keys, and ask Google Lighthouse to test it on a phone.

  3. Paste the fixes into your AI tool.

    Each problem has a ready-written prompt. Copy one, or copy them all, into Lovable, Bolt, Cursor or Claude Code.

What we check

Six groups of checks. These are normal leftovers of building fast, and each one comes with a prompt to fix it.

Leaked keys and files

A key in your public code is a key anyone can use, on your bill.

  • Your .env files can’t be downloaded
  • Your .git folder isn’t public
  • No secret keys in your public code (Stripe, OpenAI, Anthropic, OpenRouter, AWS, GitHub, Supabase secret, SendGrid, Slack, private keys)
  • Google keys are locked to your domain
  • Supabase tables have Row Level Security (we flag it; you check it)
  • Firebase rules aren’t open (we flag it; you check it)
  • Your original source code isn’t downloadable
  • No stray Mac system files

Security basics

These settings tell browsers how to protect your users.

  • Always on HTTPS
  • Browsers remember to use HTTPS
  • A policy limits what scripts can run
  • Other sites can’t embed your app in a hidden frame
  • Browsers don’t guess file types
  • Page addresses don’t leak to other sites
  • Cookies are locked down
  • Other websites can’t read your users’ data
  • No insecure http:// files
  • Your server doesn’t announce its software

Google and AI tools

If Google and ChatGPT can’t read your page, nobody finds you.

  • Search engines are allowed to list you
  • robots.txt lets them in
  • A sitemap lists your pages
  • Your content exists without JavaScript
  • A real page title
  • A description under your Google link
  • Shared links show a preview card
  • Google knows your main address
  • Missing pages return a real 404
  • AI assistants can read your site
  • An llms.txt introduces you to AI tools
  • Structured data describes your app
  • One main heading
  • The page declares its language
  • Google’s own SEO audit passes

Launch polish

These are what people notice in the first five seconds.

  • No starter-template leftovers
  • You’re on your own domain
  • It fits on a phone screen
  • Your tab has an icon
  • Bug reporters know how to reach you
  • People using screen readers can use it

Speed

Slow apps lose people before they see anything.

  • Your server answers quickly
  • The page itself is lightweight
  • Your JavaScript is a reasonable size
  • It loads fast on a phone (Google Lighthouse)

Email from your domain

Without these, anyone can send email that looks like it’s from you.

  • Only your services can send email as you (SPF)
  • Inboxes reject fake email from your domain (DMARC)

Checked only on your own domain, not on shared addresses like lovable.app.

What we can’t see

We only see what’s public. We can’t see your server code, your database rules, what’s behind your login, or how your app handles payments. A clean result means your public front door is in good shape, not that your app is fully secure.

Sample report for a made-up app

This is what a result looks like. Open any line to read what we found and copy its fix prompt.

tidyinvoice.examplea made-up app

Not ready to share yet.

1 thing to fix now and 1 to check yourself. 16 more are worth fixing when you can. 2 are optional.

Tip: if your AI tool gets confused, paste one fix at a time. It also uses fewer credits.

Fix these first

  • No secret keys in your public codeFix now

    Anyone can copy these from your site: Stripe secret key sk_live_51… in index-B7xQ2.js. Rotate them now, then move them to a server function. Deleting them from the code doesn’t un-leak them.

    Paste this into Lovable, Bolt, Cursor or Claude Code

    Secret keys are visible in my app’s public JavaScript. 1) Find every place in my code that uses a secret key in the browser. 2) Move each call that needs a secret into a server-side function (an API route or edge function) so the browser never sees the key. 3) Remind me to rotate each exposed key in its provider’s dashboard, because removing it from the code doesn’t un-leak it.

  • Every Supabase table has Row Level SecurityCheck yourself

    Your app uses Supabase, and its public key is visible in your code. That’s normal, but it means Row Level Security is the only thing stopping strangers from reading or changing your data. We won’t test this without your permission, so check Supabase › Advisors › Security now.

    How to check: Open Supabase, then Advisors, then Security.

    Paste this into Lovable, Bolt, Cursor or Claude Code

    My app uses Supabase. For every table, check that Row Level Security is enabled and that the policies only let users read and change their own rows. List any table without RLS, or with a policy that allows everyone, and write the SQL to fix each one.

Leaked keys and files

1 to fix now, 1 to check yourself, 3 clear

Security basics

4 worth fixing, 6 clear

7 worth fixing, 1 optional, 6 clear

Launch polish

2 worth fixing, 1 optional, 3 clear

Speed

2 worth fixing, 2 clear

Email from your domain

1 worth fixing, 1 clear

Questions

Will you see my code?

Only the parts every visitor’s browser already downloads: your page and up to five of your own JavaScript files. We don’t connect to your repo or your AI tool, and we can’t see anything behind a login.

Is it safe to run on my live app?

Yes. We only make the same kind of requests a browser makes when it opens a page. We never submit forms, log in, or change anything.

Do you keep the keys you find?

No. When we find a key, we show only its first few characters, like sk_live_51…, and we never return the contents of exposed files. Results are kept for up to 10 minutes so a repeat check is fast, then they’re gone.

Lovable already scanned my app. Do I need this?

Lovable checks your project before you publish. We check the live site from the outside after it’s published, and we also cover Google, AI tools, link previews, email and speed. They work well together.

Why don’t you test my Supabase tables?

Testing whether strangers can read your database means trying to read it, and we won’t do that without your permission. Today we tell you when your app uses Supabase or Firebase, so you know exactly what to check. A permission-based test is coming soon.

Does a clean result mean I’m secure?

No tool can promise that from the outside. It means the things anyone can see are in good shape. See what we can’t see.

Is it really free?

Yes. The checker is free with no signup. The waitlist is only for the features marked “coming soon”.

Can I check a site that isn’t mine?

We only look at public pages anyone can open. Please use it on your own apps, or with permission.

Coming soon

  • Database lock test, with your permission Coming soon

    Prove you own the app, and we’ll check whether strangers can read your Supabase tables.

  • Weekly re-check and email alerts Coming soon

    Know when a new prompt quietly breaks something that used to pass.

One email when it’s ready. Nothing else.

About our checker

ViberschecklistBot visits a site only when someone asks us to check it. It makes ordinary GET requests, the same as opening a page, and loads a short list of public addresses. It never logs in, submits forms, or changes anything.

It identifies itself as ViberschecklistBot/0.1 (+https://viberschecklist.com/#bot)