Check the grants on a table
One query lists every role and privilege on a table.
select grantee, privilege_type
from information_schema.role_table_grants
where table_name = 'your_table';
Read the result
| You see | It means |
|---|---|
No rows for anon or authenticated | The Data API cannot reach the table for browser requests. Expect 42501. |
anon with INSERT, UPDATE or DELETE | Signed-out visitors can attempt writes. Only RLS stands in the way. |
| All three roles with SELECT, INSERT, UPDATE, DELETE | The old automatic defaults. Fine only if RLS is on with sound policies. |
Only service_role | A private table. |
This query matches on table name only. If two schemas hold a table with the same name, add and table_schema = 'public'.
Compare with what you want
| Choice | anon | authenticated | service_role | Policies written |
|---|---|---|---|---|
| Public read | SELECT | SELECT | SELECT, INSERT, UPDATE, DELETE | One: read every row |
| Owner only | none | SELECT, INSERT, UPDATE, DELETE | SELECT, INSERT, UPDATE, DELETE | Four: own rows only |
| Private | none | none | SELECT, INSERT, UPDATE, DELETE | None (RLS on, so nothing gets through) |
Write the fix for your tables
One table is free. The whole schema with a rollback file is $9 one-time, free during launch.
Waiting for a paste.
Who can reach each table
Your tables show up here, one row each, with a choice of who can reach them.
The SQL appears here as soon as a table is found.
Parsed in your browser. Your SQL is never uploaded, and no site or database is scanned.
Questions
Where does Supabase show this without SQL?
The docs mention the Integrations > Data API section of the dashboard for changing table privileges, and the Security Advisor for a list of tables to review.
Sources
- Supabase knowledge base: Database API 42501 errors (marked updated 2026-11-03), read 2026-11-10
- Supabase docs: Securing your API, read 2026-11-10
- Supabase docs: Advisors, read 2026-11-10
Related
- The Supabase change of 30 October 2026New tables in public need explicit grants. Dates, scope and the SQL in one place.
- Lovable app says "permission denied for table"The new table has no grants. Paste it below and copy a fix prompt made for Lovable.
- Go back to automatic exposureSupabase documents the SQL. Read what it re-opens before you run it.
- Local tables missing grants after db resetA reset replays your migrations. Without grants in them, tables come back closed.