Skip to content
SniffPup
How it worksSample reportPricingGuidesAboutSign in
Free explainer

Free Supabase RLS policy explainer (paste SQL)

Row level security decides who can read and change each row through your Supabase API. One using (true) left over from a tutorial can open a whole table. Paste your policies and get each risky one explained in plain English, with what to change.

Runs in your browser. Nothing you paste is sent to SniffPup or stored. Paste schema and policies only, never keys or data.

What this checks

  • Row level security off: public tables in your SQL that never get enable row level security, so anyone with your project URL and anon key can read and change them.
  • Always-true policies: using (true), with check (true), 1 = 1 and checks that only ask whether someone is signed in, for reads, inserts, updates and deletes, and who they open the table to.
  • Policies that trust user_metadata: users can edit their own metadata, so they can give themselves access.
  • Views and functions that skip your policies: public views without security_invoker, views over auth.users, and security definer functions without a fixed search_path or still callable by signed-out visitors.
  • Storage: select policies that let people list every file in a bucket.
  • Housekeeping: several permissive policies for the same action, and auth.uid() calls that run once per row.

What it can't tell you

  • It only reads what you paste. It doesn't connect to your database, so it can't see grants, data, settings or anything you left out.
  • It can't tell whether a table is meant to be public. A readable product catalog is fine; a readable orders table isn't.
  • It doesn't understand every policy. Complex conditions, custom functions and roles other than anon and authenticated aren't judged.
  • No issues found is never proof of security. Test your policies signed out and as a second user.

Get your policies

  1. In the Supabase dashboard, open the SQL editor and run select * from pg_policies; then copy the result as JSON or CSV.
  2. Or paste your migration files from supabase/migrations, or a schema dump of the public schema.
  3. Or paste the JSON from Supabase's database advisors (for example from the Supabase CLI's supabase db advisors).

Then check the live site

Policies are half the picture. The free scan checks what a stranger actually gets from your deployed app: keys in your JavaScript, tables readable with your anon key, public files and headers.

Scan, then rescan right away to check your fix (paid plans get one more), then about one scan an hour per site. Free: up to 20 scans a day signed in, 10 a day per email without an account. Scan limits

This runs SniffPup's normal free scan, so you get the whole report, not just this one check. Supabase results are listed as “Anyone can read your Supabase table …” and leaked-key findings. The free report lists every issue it finds with its severity, plus the full fix free for every critical issue (with no critical, one other fix). Only scan sites you own or are authorized to test. What the scanner does and never does.

More: Supabase exposed data checker and the vibe-coded app security checklist.

Questions

Is my SQL sent to SniffPup?

No. The explainer runs in your browser. What you paste isn't uploaded, logged or stored, and the page makes no request when you press Explain. Paste schema and policies only, never keys or table data.

What can I paste?

Schema or migration SQL (create table, alter table … enable row level security, create policy, create view, create function), the result of select * from pg_policies as JSON or CSV with its header row, or the JSON from Supabase's database advisors.

Does it connect to my database?

No. It only reads the text you paste, so it can't see grants, data, or anything you didn't include. To see what a stranger can reach on your live site, run the free scan below.

Does a clean result mean my policies are right?

No. It flags common mistakes, like policies that are always true, tables without row level security and policies that trust user-editable metadata. Test your policies signed out and as a second user too.

Do I get AI fix prompts here?

This page explains each problem and what to change, with example SQL. Copy-ready prompts for Lovable, Cursor, Bolt and Claude Code come with the Full Fix Report and paid plans, for the findings on your live site.

All free checkers

SniffPup

Ember supervises from the couch. SniffPup is a product of Ember and Saru LLC.
10850 Providence Rd #1370, Charlotte, NC 28277, USA

Support: support@sniffpup.com
Abuse & scan opt-out: abuse@sniffpup.com

Have an idea? Drop it in our suggestion box or email us. We read all feedback and may improve SniffPup in future updates; we can't promise any specific feature. Suggestions are covered by the Feedback section of our Terms.

ProductFree scanSample reportPricingHow our scanner worksHow scoring worksFAQCompareGuidesFree checkersBlogChangelogStatus
CompanyAboutSniffed by SniffPup badgeSniffPupScanner bot & opt-outsecurity.txtSniffPup on XContact
LegalTermsPrivacyAcceptable UseRefunds

🐾 We scan ourselves daily

Featured on: Fazier · Dang.ai

Follow for more Ember adventures 🐾 emberandsaru.com · @EmberandSaru on X

SniffPup checks what is publicly visible on your site. A clean report is not a guarantee of security. © 2026 Ember and Saru LLC.