“Honeypot or CAPTCHA: which should I use?”

Honeypot or CAPTCHA: which should I use?

Short answer

Use a honeypot first and a CAPTCHA when the honeypot stops being enough. A honeypot is a form field hidden from people but present in the HTML; scripts that blindly fill every field reveal themselves, and your server quietly drops those submissions. It costs nothing and no real visitor sees it. A CAPTCHA costs a few seconds of visitor time and needs server-side verification, but it also stops scripts built to skip honeypots. On quiet forms the honeypot often wins; under real attack it does not.

HoneypotVisitor sees itCatches naive autofill botsStops scripts built for your formServer workCost to real visitorsCAPTCHAVisitor sees itCatches naive autofill botsStops scripts built for your formServer workCost to real visitors

Side by side

Honeypot versus CAPTCHA as form protections.

Honeypot versus CAPTCHA as form protections.
FeatureHoneypotCAPTCHA
Visitor sees itNo, it is hiddenOften visible; invisible variants exist
Catches naive autofill botsYes YesYes Yes
Stops scripts built for your formNo NoPartly Partly
Server workReject if the field is filledVerify a token with your provider
Cost to real visitorsNoneA few seconds
Main failure modeTargeted scripts skip it; browser autofill can trip itSome visitors cannot complete it

How a honeypot works

The field looks ordinary to a script and invisible to a person. Hide it with CSS, keep it out of the tab order, and give it a name worth filling, such as company_website. On the server, any submission with a value in that field is a bot: drop it quietly, without an error that teaches the script anything.

Hide the field from assistive technology too, so nobody is asked to skip a field they cannot perceive, and do not rely on display: none alone, since some bots parse styles.

<input type="text" name="company_website" tabindex="-1"
       autocomplete="off" aria-hidden="true"
       style="position: absolute; left: -9999px;">

What a CAPTCHA adds

A CAPTCHA makes the visitor prove something a generic script cannot fake, and the proof is a token your server verifies with the provider. That closes the honeypot's gap: a bot that renders the page, skips known honeypot names and submits headlessly still has to pass the challenge. The trade is real: the challenge takes time, it must be accessible to everyone, and it adds a server call to every submission. See are CAPTCHAs accessible for the obligations that brings.

Where each one fails

Honeypots fail against anything purpose-built for your site: a headless browser that only fills visible fields, or a bot taught your field name. CAPTCHAs fail the visitor who cannot solve the challenge, and any challenge can be farmed out to solving services by a determined attacker, which is why the server-side check and rate limits matter more than the puzzle itself. Neither is a wall; both are cost multipliers.

Layer them, cheapest first

The practical order: a honeypot on every form, because it is free; rate limits per IP on the server; then a CAPTCHA on the forms abuse actually targets, usually signup, login and checkout. A honeypot and a CAPTCHA can share one form, since the two checks are independent. See the signup and contact form guide for matching the challenge to the form.

Questions

Is a honeypot enough on its own?

On a quiet form, often yes. Targeted bots skip known honeypots, so watch your spam volume.

Do bots know about honeypot fields?

Generic scripts fill every field and fall in. A script written for your form can be taught to skip yours.

Can a honeypot break accessibility?

It can if the field is reachable by keyboard or screen reader and someone fills it. Hide it from assistive technology and keep it out of the tab order.

Can I use a honeypot and a CAPTCHA together?

Yes, and it is a common combination: the honeypot catches the lazy scripts, the CAPTCHA the determined ones.

Which CAPTCHA pairs well with a honeypot?

Any of them; the two checks are independent. A short game such as CaptchaKit's keeps the visible cost low.

What about invisible CAPTCHAs?

They remove the visible cost but still run a check and a server verification. See reCAPTCHA alternatives for the options.

Sources

  1. OWASP Automated Threats to Web Applications (checked 2026-10-18)
  2. CaptchaKit documentation (checked 2026-10-18)

Related

Protect your forms with a game

Every arcade CAPTCHA we make. Sign up, grab your embed code, protect your forms today.

Get started →Pay what you want. Start free.