Skip to content

Supabase Auth errorSupabase Auth: captcha_failed

captcha_failed is the Supabase Auth error when the CAPTCHA token sent with sign-in, sign-up or password reset can’t be verified with hCaptcha or Cloudflare Turnstile. It appears once CAPTCHA protection is turned on for the project.

Short answer

Pass a fresh captchaToken with every protected auth call (inside options for signUp and signInWithPassword, in the second argument for resetPasswordForEmail), reset the widget after each call, and check that the secret key in the Supabase Dashboard belongs to the same provider and site as the site key in the app.

Rather not fix it yourself? App Fix Ticket starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.

Why Supabase rejects the CAPTCHA, and the fix

  1. 01

    The token is missing from the auth call

    “CAPTCHA challenge could not be verified with the CAPTCHA provider.” Supabase docs, Auth error codes (captcha_failed)

    Turning on CAPTCHA protection makes every sign-in, sign-up and reset call need a token, including ones in other screens or apps that share the project.

    await supabase.auth.signUp({
      email,
      password,
      options: { captchaToken },
    });
    captcha.current.resetCaptcha();
  2. 02

    The same token is used twice

    “We will also need to reset the CAPTCHA challenge after we have made a call to the function above.” Supabase docs, Enable CAPTCHA Protection

    hCaptcha and Turnstile tokens are single-use and expire after a few minutes. A retry after a wrong password, or a double click, sends a used token. Reset the widget after every call and wait for a new one.

  3. 03

    The keys don’t match

    “Select your CAPTCHA provider from the dropdown, enter your CAPTCHA Secret key, and click Save.” Supabase docs, Enable CAPTCHA Protection

    The secret key saved in the Dashboard must come from the same hCaptcha or Turnstile site as the site key in the app, and the provider selected must match the widget.

  4. 04

    The domain isn’t allowed for the site key

    Also check: a widget on a new domain may not issue valid tokens. Add the domain in the hCaptcha or Turnstile settings for that site key.

Checked against the vendor’s docs on : Supabase docs: Auth error codes; Supabase docs: Enable CAPTCHA Protection.

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

“Very responsive, attentive to fixing bugs, and completed the project as needed! Thank you!”
A buyer in the United States, July 2022. Shopify on Fiverr
All 127 Fiverr reviews

Related: Supabase over_request_rate_limit · Supabase signups not allowed · Supabase email rate limit exceeded · Supabase sms_send_failed

Questions

More on this error

Which providers does Supabase support?

hCaptcha and Cloudflare Turnstile. Pick one in the Dashboard and use the matching widget in the app.

Can I test CAPTCHA on localhost?

Yes. With hCaptcha, the Supabase guide suggests a tunnel such as ngrok or a hosts file entry. With Turnstile, add localhost to the widget’s domain allowlist.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.