Migrate from reCAPTCHA
This guide walks through swapping Google reCAPTCHA for ALTCHA — updating the widget on your forms and the verification call on your server.
Why switch
| reCAPTCHA | ALTCHA | |
|---|---|---|
| No cookies or tracking scripts | No | Yes |
| Verifies locally, no remote API call | No | Yes |
| Self-hosting option | No | Yes |
| Open-source, auditable code | No | Yes |
| Data residency control | No | Yes |
The "no remote API call" difference is a practical one, not just a privacy one: reCAPTCHA requires your server to call Google's siteverify endpoint on every submission, adding a network round-trip and an external dependency to your request path. ALTCHA's libraries verify the payload cryptographically, in-process — see Server Verification.
Pick how you'll host it
- Just want it running today, for free — use the open-source widget with your own server. See Quick Start.
- Don't want to run any infrastructure — use ALTCHA Cloud, fully managed and hosted in the EU.
- Need the full adaptive-protection platform on your own infrastructure — use ALTCHA Sentinel.
All three use the same <altcha-widget> element and the same verification libraries — you can start with the open-source core and move to Cloud or Sentinel later without changing your integration.
Update your widget
Before (reCAPTCHA):
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<form action="/submit" method="POST">
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
<button type="submit">Submit</button>
</form>After (ALTCHA):
<script async defer src="https://cdn.jsdelivr.net/gh/altcha-org/altcha/dist/main/altcha.min.js" type="module"></script>
<form action="/submit" method="POST">
<altcha-widget challenge="https://your-challenge-url"></altcha-widget>
<button type="submit">Submit</button>
</form>See Widget Integration for npm installs and framework-specific setup (React, Vue, Svelte, and others).
Update server-side verification
Replace the call to Google's siteverify endpoint with a local, cryptographic check using an official library:
- Using your own server →
verifySolution - Using Cloud or Sentinel →
verifyServerSignature
Migration checklist
- Remove the reCAPTCHA script tag,
data-sitekey, and secret key. - Add the
<altcha-widget>element in its place. - Point
challengeat your chosen setup — your own server, Cloud, or Sentinel. - Swap the
siteverifycall for a local verification call. - Test: submit without solving (should be rejected), then submit normally (should succeed).
Next steps
- Quick Start — full integration walkthrough
- Widget Integration — configuration and framework installs
- Server Integration — verification libraries