Put Capcat into real scenarios
Every scenario below talks to a production verification service running on Cloudflare Workers. Check the box, and a SHA-256 proof of work quietly runs in your browser in the background — the button unlocks the moment it's done. Click submit, and the server performs a real siteverify check, echoing the raw API response back to you. You can also skip the visible component entirely — see invisible mode below.
01 /
Comments & guestbooks
Blogs, communities, product reviews — spam bots survive on bulk submissions. Lock the post button behind verification, and spamming instantly becomes too expensive to bother with.
02 /
Account signup
Bulk registration and credential-stuffing scripts can try hundreds or thousands of times per second. Every submission now has to pay real compute and pass an environment check first — script throughput collapses and costs skyrocket, while a real user just checks a box.
03 /
AI Q&A / expensive endpoints
Every inference call has a real cost. Put verification in front of the request, and scripts hammering the endpoint have to pay compute for every single call — abuse gets priced out, without getting in genuine users' way.
04 /
Invisible mode
Don't want users to see any verification widget at all? The programmatic mode calls new Cap().solve() from your own JS — the moment a user clicks your button, it requests a challenge, solves it, and redeems the token in the background. Perfect for lightweight actions like claiming a coupon, liking, or searching, with zero visible friction.
There's no checkbox in this scenario — the moment you click the button, it requests a challenge and solves it in the background. The user just sees their action complete.
05 /
Auto theming
Add data-cap-theme="auto" and the widget samples the surrounding page — font, colors, borders, corner radius — and grows into your site's look. All three styles below are the exact same component with the same single line of markup. For finer control, the full set of --cap-* CSS variables and data-cap-i18n-* label attributes still apply, and always win over sampling.
Editorial
Dark
Rounded
<cap-widget data-cap-theme="auto"
data-cap-api-endpoint="…"></cap-widget>
/* need finer control? --cap-* CSS variables still
apply and win over sampling; swap labels via data-cap-i18n-* */This demo enables proof of work and instrumentation environment checks (headless/automated browsers get blocked); form content is never uploaded — submitting only sends the cap-token to the verification service to complete one real siteverify check.
Add it to your own project