Fix "permission denied for table" on Supabase
Paste your tables, pick who can reach each one, copy the grants.
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.
Parsed in your browser. Your SQL is never uploaded, and no site or database is scanned.
What Supabase scheduled for 30 October 2026
- Before: every new table in
publicwas granted toanon,authenticatedandservice_roleautomatically. - After the change: a new table has no grants until you write them. The Data API answers 42501,
permission denied for table. - Tables that already existed keep their grants. Row level security works as before.
Dates are from the Supabase changelog post published 2026-04-28, read 2026-11-10. We have not seen an official post confirming that the 2026-10-30 step finished for every project, so check your own project with this query.
A grant is a table-level permission for a database role. Source: Supabase changelog, published 2026-04-28, read 2026-11-10. Full timeline · Check if your project is affected
By error and by task
- 42501: permission denied for tableThe role has no grant on the table. Paste the error or your table and get the SQL.
- Supabase table not exposed to the Data APIA new table is invisible to the API until a role is granted access. Here is the grant.
- New Supabase table not showing in the APITwo checks tell you if the grant is missing. Then fix it below.
- The Supabase change of 30 October 2026New tables in public need explicit grants. Dates, scope and the SQL in one place.
- Every cause of 42501 on Supabase42501 means "insufficient privilege". Match your message to a row.
- Grants for anon, authenticated and service_roleThree roles, four privileges. This is the grid the tool fills in.
- Is my Supabase project affected?Run one query. No rows means new tables get no grants.
- Grants vs row level securityTwo checks run on every request. A grant comes first.
- "Grant the required privileges to the current role with: GRANT ..."The hint names one missing grant. Paste it and get the full set.
- permission denied for sequenceThe table is granted and its id counter is not. One more grant fixes it.
- Go back to automatic exposureSupabase documents the SQL. Read what it re-opens before you run it.
- Public read-only tableAnyone reads. Only your server writes. Here is the SQL.
- Owner-only tableEach signed-in user sees and changes only their own rows.
- Private, server-only tableNo access from the browser. Your server reads and writes.
- Check the grants on a tableOne query lists every role and privilege on a table.
- Local tables missing grants after db resetA reset replays your migrations. Without grants in them, tables come back closed.
By builder tool
- Lovable app says "permission denied for table"The new table has no grants. Paste it below and copy a fix prompt made for Lovable.
- Bolt app says "permission denied for table"The new table has no grants. Paste it below and copy a fix prompt made for Bolt.
- Replit app says "permission denied for table"The new table has no grants. Paste it below and copy a fix prompt made for Replit.
Price
One table
Free
- GRANT + RLS SQL
- Fix prompt for your builder tool
- No account
Whole schema
$9 one-time · free during launch
- Every table in one migration file
- Rollback file
- No account, no subscription
Questions
What does "42501: permission denied for table" mean?
The database role that made the request has no grant on that table. A grant is a table-level permission. Supabase is ending automatic grants for new public tables: new projects since 30 May 2026, and every existing project scheduled for 30 October 2026. Where that applies, a new table has no grants until you add them.
What does the tool write?
For each table: the GRANT statements for anon (signed-out visitors), authenticated (signed-in users) and service_role (your server), a line that turns on row level security, and the matching policies. Row level security, or RLS, is the Postgres feature that decides which rows each request may see.
Is my schema uploaded?
No. The page parses what you paste inside your browser. It sends anonymous counts (page visit, tool used, copy, unlock) and anything you type in the feedback box. No SQL, no table names.
Does it connect to my database or scan my site?
No. It never contacts your project. You run the SQL yourself, in the Supabase SQL Editor or through your builder tool.
What is free and what costs $9?
One table is free: its GRANT + RLS SQL and a fix prompt. The whole schema as one migration file, plus the rollback file, is $9 one-time. During launch the whole thing is free.
Could the SQL be wrong for my app?
Yes. The tool cannot see your data or your app, and it only offers three access shapes. Read the SQL before you run it, and test with a signed-out and a signed-in user. It is an information tool, not professional advice.
Does Supabase already offer a fix?
Yes, and it is free. The error hint names one missing grant, and the Security Advisor in the dashboard lists affected tables with SQL. This tool is for doing every table and every role in one pass, with policies and a rollback.