The CAPTCHA arcade
A playable history of CAPTCHAs — follow the cat bot and the mouse computer as they trade blows from distorted text to image grids.
Level 1: Can you read this?
Preview →Distorted-text CAPTCHA arcade mini-game.
<iframe src="https://gtm-blog-embeds.vercel.app/embeds/captcha-text" data-embed="captcha-text" style="width:100%;border:0" loading="lazy"></iframe>Level 1, part 2: The bot strikes back
Preview →The cat bot runs an OCR solve on the distorted-text CAPTCHA and retakes the lead.
<iframe src="https://gtm-blog-embeds.vercel.app/embeds/captcha-ocr" data-embed="captcha-ocr" style="width:100%;border:0" loading="lazy"></iframe>Round 2: Make the text harder
Preview →reCAPTCHA serves scanned words OCR couldn't read — a verified human puts the mouse computer back ahead.
<iframe src="https://gtm-blog-embeds.vercel.app/embeds/captcha-recaptcha" data-embed="captcha-recaptcha" style="width:100%;border:0" loading="lazy"></iframe>Round 2, part 2: Then machine learning arrived
Preview →The cat bot trains a model on thousands of scanned words and cracks the reCAPTCHA — no hand-coded rules needed.
<iframe src="https://gtm-blog-embeds.vercel.app/embeds/captcha-ml" data-embed="captcha-ml" style="width:100%;border:0" loading="lazy"></iframe>Round 3: Pick the bicycles
Preview →Image-grid CAPTCHA: select every square with a motorcycle — visual challenges put the mouse computer back ahead.
<iframe src="https://gtm-blog-embeds.vercel.app/embeds/captcha-image" data-embed="captcha-image" style="width:100%;border:0" loading="lazy"></iframe>Round 3, part 2: The bot learns to see
Preview →The cat bot retrains as a CNN and sweeps the image grid tile by tile — the mouse computer goes down to 0 HP.
<iframe src="https://gtm-blog-embeds.vercel.app/embeds/captcha-cnn" data-embed="captcha-cnn" style="width:100%;border:0" loading="lazy"></iframe>Build a CAPTCHA with me
Preview →Interactive walkthrough of how a distorted-text CAPTCHA is assembled.
<iframe src="https://gtm-blog-embeds.vercel.app/embeds/captcha-builder" data-embed="captcha-builder" style="width:100%;border:0" loading="lazy"></iframe>