Verify humans.
Read what you can't
screenshot.
A word is moving in the dots below. Humans see it in about a second. Frontier AI models — given screenshots, frames, even full video — read the decoy and miss the message.
Type what you see.
You've solved 0 · Stored in this browser (demo counter)
Why this works
No distorted letters, no fire hydrants. The moving word pops out of the noise in under a second, at any age and reading level.
Pause the challenge or download a frame: a frozen image is statistically flat noise. There is no glyph to OCR, so vision-model attacks return nothing.
A near-static decoy word hides in every challenge. Agents doing frame analysis find it, answer confidently — and answer wrong. Motion vectors randomize per challenge.
Frontier models, on the record
We feed every challenge to leading models and publish the transcripts — the guesses, the hallucinated decoys, the reasoning chains that end in the wrong word.
Sample layout — replace with documented runs before launch.
Drop in the snippet
Two elements on the customer page. One siteverify call from your backend to redeem the token. That's the whole surface.
<script src="https://octogate-backend-production.up.railway.app/widget/v1.js" async defer></script>
<div class="octogate"
data-sitekey="ogk_..."
data-api="https://octogate-backend-production.up.railway.app"
data-theme="dark"></div>
<script>
window.OctoGateAI.onSuccess = function (token) {
document.getElementById('captcha_token').value = token;
document.getElementById('signup_form').submit();
};
</script>POST https://octogate-backend-production.up.railway.app/api/siteverify
Content-Type: application/json
{
"secret": "ogs_...",
"token": "<token from widget>"
}
// → { "success": true, "kind": "success", "issued_at": ... }Bleeding from AI-generated abuse? Let's talk.
Design partner slots open. If your signup, comments, or forms are getting flooded by AI-driven traffic, we want to hear about it.