Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
playcaptcha

playcaptcha

> 前端框架
Free

A claw-machine human check for React — grab the right toy to prove you're human

521 stars0 likes2 views
GitHub

About

A claw-machine human check for React — grab the right toy to prove you're human

playcaptcha

A captcha that's a claw machine.

It asks for a toy. You drive the claw with the joystick (or arrow keys), hit the red button, the claw dives down and grabs whatever's under it. Carry the catch over the hatch and drop it in. Right toy and you're verified, wrong toy bounces off the lid and goes back on the pile.

No physics engine behind it, just damped springs and scripted phases in one rAF loop. React state only changes when the phase changes, the rest is transforms written through refs, so it stays smooth even on weak devices.

Obvious but worth saying: this checks that someone is playing, not who they are. Keep it in front of your real checks, don't replace them with it.

Try it live: https://feralui.vercel.app/#/captcha

This is part of FeralUI.

setup

bash
npm install playcaptcha

Then copy the assets/ folder into whatever your app serves statically. The component looks for the toy renders under /toys/ and the logo at /playcaptcha.svg by default, assetBase moves that.

typescript
import { ClawCaptcha } from 'playcaptcha'
import 'playcaptcha/clawcaptcha.css'

 unlock()} />

Leave target off and every mount asks for a different random toy. Or pin one:

typescript
 unlock()} />

The 12 toy ids: duck, bear, panda, bunny, dino, penguin, fox, frog, whale, cat, puppy, unicorn.

Other props: title (the heading), assetBase, className. That's all of them.

theming

CSS vars on any ancestor:

css
:root {
  --clawcap-bg: #ffffff;     /* card */
  --clawcap-ink: #1c1c1e;    /* text */
  --clawcap-muted: #8a8a8e;
  --clawcap-accent: #1c1c1e; /* dialog button + focus ring */
  --clawcap-action: #ff5159; /* the big red button */
}

Keyboard runs the whole thing (arrows + space/enter), the joystick is a real slider role, and prefers-reduced-motion swaps the decorative stuff (entrance tumble, confetti, ring pulse) for instant state changes.

MIT. Toy renders live in assets/toys.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

开发者工具

No comments yet. Be the first to share.

> Details

PublishedSep 9, 2026
UpdatedSep 17, 2026
Category前端框架
PricingFree

> Related tools

R
React
用于构建用户界面的 JavaScript 库
V
Vue.js
渐进式 JavaScript 框架
N
Next.js
基于 React 的全栈 Web 框架