How to fix signup_disabled: Signups are disabled in Supabase

SupabaseINTERMEDIATEMEDIUMUpdated Dec 22, 2025· 366 views

Supabase throws `signup_disabled: Signups are disabled` when the project explicitly refuses to create new accounts, so every signUp, OAuth, or OTP request returns a 400. Re-enable the "Allow new users to sign up" toggle or clear the same flag in self-hosted deployments to allow account creation again.

Quick fix

Fixes signup_disabled: Signups are disabled

const { data, error } = await supabase.auth.getSettings();
if (error) throw error;
console.log('disable_signup', data.disable_signup);
  1. Flip the "Allow new users to sign up" toggle in the dashboard
  2. Confirm the disable_signup flag is false via the client
  3. Ensure you are hitting the right environment
  4. Handle intentionally disabled signups gracefully
supabase — error
const { data, error } = await supabase.auth.getSettings();
if (error) throw error;
console.log('disable_signup', data.disable_signup);
signup_disabled: Signups are disabled

What this error means

The `signup_disabled` code means the `disable_signup` flag inside Supabase Auth is true, usually because the "Allow new users to sign up" switch under Project Settings → Authentication → User Signups has been turned off. With that configuration, the Auth server never reaches the password or social-provider logic—every registration attempt immediately returns the error instead of sending verification emails or creating a user row, which keeps the project closed for maintenance, private beta testing, or invite-only campaigns.

Typical symptoms

  • Every call to `supabase.auth.signUp()` or sign-in flow that would create a new user returns HTTP 400 with `error.code === "signup_disabled"` and the message “Signups are disabled”.
  • OAuth, OTP, and email/password sign-ups fail even though the credentials are valid.
  • Existing accounts can still log in, but new account creation is blocked.
  • Auth logs show a flood of `signup_disabled` records from your client while the UI never reaches confirmation screens.
  • Only certain environments see the problem because the disable toggle is off there while other projects allow sign-ups.

Common causes

  1. The "Allow new users to sign up" toggle in the Supabase dashboard (Project Settings → Authentication → User Signups) has been switched off.
  2. A self-hosted Gotrue instance is running with `GOTRUE_DISABLE_SIGNUP=true` or an equivalent environment variable, so the server refuses registration attempts.
  3. An admin API, CLI script, or Terraform configuration set `disable_signup` to `true` but the client still expects sign-ups.
  4. The client is pointed at the wrong project (wrong `SUPABASE_URL` or keys) where sign-ups were intentionally locked down.
  5. A before-user-created hook or Edge Function intentionally aborts registration with the same error to keep the project invite-only, but the client does not explain it to users.

How to fix "signup_disabled: Signups are disabled"

1Flip the "Allow new users to sign up" toggle in the dashboard

Signups are controlled by a single switch in the dashboard:

1. Open https://app.supabase.com/project/_/settings/auth and sign in.
2. Navigate to Project Settings → Authentication → User Signups from the left menu.
3. Toggle Allow new users to sign up back on and click Save.
4. Wait for the "Successfully updated settings" toast, then retry supabase.auth.signUp() (or your social/OTP flow).

2Confirm the disable_signup flag is false via the client

Use the Supabase client to read the settings and make sure signups are not suppressed on the server:

javascript
const { data, error } = await supabase.auth.getSettings();
if (error) throw error;
console.log('disable_signup', data.disable_signup);

If disable_signup is true, repeat step 1; if it remains true after toggling, the project settings did not persist or you are hitting a different project.

3Ensure you are hitting the right environment

Mistaking the project or environment is a common trap:
- Double-check SUPABASE_URL and keys in your .env files; you might still point at a staging project where signups are locked.
- For Next.js, compare .env.local with .env.production to confirm each environment uses the expected credentials.
- Log the value of process.env.NEXT_PUBLIC_SUPABASE_URL (or the equivalent in your stack) before calling signUp().
- If you deploy to multiple Supabase projects, switch between them in the dashboard to see which one allows new users.

4Handle intentionally disabled signups gracefully

If the project should stay closed (maintenance, beta, invite-only), catch the error on the client and show alternatives instead of surfacing a raw exception:

javascript
const { error } = await supabase.auth.signUp({ email, password });
if (error?.code === 'signup_disabled') {
  showError('New user registration is temporarily disabled. Check back later or contact support.');
  return;
}

You can also hide the sign-up form when the dashboard toggle is off so users do not attempt a flow that will fail.

Advanced notes

## Why signups get disabled
- Supabase stores the flag inside auth.config and uses it to short-circuit the sign-up pipeline, so the error never hits password strength checks or social providers.
- When you self-host Gotrue, set GOTRUE_DISABLE_SIGNUP=false (or remove the env var) and restart the container to allow registrations again.
- Some teams disable signups briefly during deployments or after a security incident, which is why responsive messaging and feature flags help avoid confusing error screens.
- Growing projects may combine the dashboard toggle with database triggers or hooks (before-user-created) to implement invite-only flows; make sure those hooks are not raising signup_disabled as well.
- Monitoring the spike in signup_disabled errors in Supabase logs quickly tells you whether signups were just toggled off or a new issue cropped up.

Frequently asked questions

What does "signup_disabled: Signups are disabled" mean?
The signup_disabled code means the disable_signup flag inside Supabase Auth is true, usually because the "Allow new users to sign up" switch under Project Settings → Authentication → User Signups has been turned off. With that configuration, the Auth server never reaches the password or social-provider logic—every registration attempt immediately returns the error instead of sending verification emails or creating a user row, which keeps the project closed for maintenance, private beta testing, or invite-only campaigns.
How do I fix "signup_disabled: Signups are disabled"?
Supabase throws signup_disabled: Signups are disabled when the project explicitly refuses to create new accounts, so every signUp, OAuth, or OTP request returns a 400. Re-enable the "Allow new users to sign up" toggle or clear the same flag in self-hosted deployments to allow account creation again.
What causes "signup_disabled: Signups are disabled"?
The "Allow new users to sign up" toggle in the Supabase dashboard (Project Settings → Authentication → User Signups) has been switched off. A self-hosted Gotrue instance is running with GOTRUE_DISABLE_SIGNUP=true or an equivalent environment variable, so the server refuses registration attempts. An admin API, CLI script, or Terraform configuration set disable_signup to true but the client still expects sign-ups.
Is the "signup_disabled: Signups are disabled" error serious?
It is a medium-severity error — more of a blocker than a risk. The steps above resolve it.

Official resources & further reading