motion-captcha

A CAPTCHA whose letters exist only as motion. Screenshots, OCR and image models see uniform noise; people read it in a second.

Try it

Can’t see the letters? Site owners should offer another route, e.g. email verification.

Use it on your site

Keys are free and instant. Keep the secret on your server.

1. Put the widget inside your form:

<script src="ORIGIN/motion-captcha.js" async defer></script>
<div class="motion-captcha" data-sitekey="SITEKEY"></div>

When a visitor solves it, a hidden field named motion-captcha-response is filled in and posts with your form.

2. Verify from your backend before trusting the submission (same shape as reCAPTCHA’s siteverify):

POST ORIGIN/siteverify
Content-Type: application/x-www-form-urlencoded

secret=SECRET&response=<value of motion-captcha-response>

→ {"success": true, "challenge_ts": "…"}
→ {"success": false, "error-codes": ["timeout-or-duplicate"]}

Each response token verifies once and expires after 5 minutes. Optional attributes on the div: data-callback="fnName" (receives the token, for SPAs), data-label / data-reload / data-play / data-checking / data-verified / data-wrong / data-error (translate the UI), data-speed, data-density, data-size.