Naar de inhoud

Kennisbank · Internet Marketing Begrippen

CAPTCHA.

Maurits 15 min leestijd

Een CAPTCHA is een test die controleert of er een mens achter het scherm zit. De afkorting staat voor Completely Automated Public Turing test to tell Computers and Humans Apart, en dat is het langste acroniem in dit hele vak.

Je komt hem tegen bij formulieren, bij inloggen en bij het aanmaken van accounts. De bedoeling is spam en misbruik tegenhouden, en dat lukt maar gedeeltelijk.

Dit artikel gaat over de vraag welke soort je waar gebruikt, wat een captcha je kost aan bezoekers en aan privacy, en welke maatregelen hetzelfde doen zonder dat iemand er iets van merkt.

Waarom captcha's bestaan

Een formulier op internet is een open deur. Alles wat een bezoeker kan invullen, kan een script duizend keer per uur invullen. Zonder rem loopt je postvak vol, komen er reacties met links naar dubieuze webshops, en worden er accounts aangemaakt om vandaan te versturen.

De rekensom van de spammer is simpel. Een geautomatiseerde poging kost bijna niets, dus zelfs een reactie op de duizend is winst. Alles wat die poging duurder maakt, verandert die som.

Daar zit meteen de kern: een captcha hoeft niet onbreekbaar te zijn. Hij hoeft alleen duur genoeg te zijn om jouw site oninteressant te maken vergeleken met de miljoenen andere formulieren die geen enkele drempel hebben.

Wat een captcha niet doet, is je site beveiligen. Hij zit voor één formulier en verder nergens. Alles daarachter valt onder gewoon onderhoud: updates, sterke wachtwoorden en back-ups, waarover meer staat in het artikel over WordPress beveiligen.

Waar de test vandaan komt

Het idee is rond 2000 bedacht aan Carnegie Mellon University, door onder anderen Luis von Ahn. De gedachte: laat de computer een probleem stellen dat hij zelf niet kan oplossen en een mens wel.

In 2007 kwam daar reCAPTCHA bij, dat handig gebruikmaakte van al dat getyp. Je kreeg twee woorden te zien: één die het systeem al kende en één uit een oude krant of een gescand boek dat de tekstherkenning niet kon lezen. Miljoenen bezoekers typten zo archieven over. Google kocht de dienst in 2009.

Vervolgens ging het snel. In 2014 verscheen het vinkje van reCAPTCHA v2, waarbij niet je antwoord maar je gedrag de test is. In 2018 kwam v3, dat helemaal geen vraag meer stelt maar elke bezoeker een cijfer geeft. Inmiddels is reCAPTCHA opgegaan in het Google Cloud-platform, met een gratis hoeveelheid controles per maand en betaalde tarieven daarboven.

De reden voor die ontwikkeling is dat de puzzels zelf niet meer werken. Tekstherkenning leest vervormde letters beter dan mensen, en beeldherkenning ziet een zebrapad prima. Wat overblijft is niet de puzzel maar de vraag hoe je hem oplost: hoe de muis beweegt, hoe snel je typt, welke browser je hebt en waar je vandaan komt.

De soorten die je tegenkomt

Vervormde letters overtypen. De oudste vorm. Werkt niet meer tegen bots en kom je nog tegen op verouderde sites.

Verkeerslichten en fietsen aanwijzen. De bekendste vorm, van reCAPTCHA v2. Werkt matig tegen bots en werkt vooral irritant, zeker als hij na elke klik nieuwe plaatjes inlaadt.

Eén vinkje aanzetten. Ziet er simpel uit en kijkt achter de schermen naar je muisbeweging, je cookies en je browser. Bij twijfel krijg je alsnog de plaatjes.

Onzichtbaar met een score. reCAPTCHA v3 geeft elke bezoeker een cijfer tussen 0 en 1, waarbij hoger betekent dat je waarschijnlijk een mens bent. Jij bepaalt vanaf welke waarde je iets tegenhoudt. Standaard staat die grens op het midden.

Werk voor de browser in plaats van voor de bezoeker. De nieuwere aanpak. Friendly Captcha geeft de browser een rekentaak die een fractie van een seconde duurt en die voor een spammer met duizenden gelijktijdige pogingen wel oploopt. Cloudflare Turnstile laat de browser een reeks controles doorlopen die alleen een echte browser haalt. De bezoeker ziet hooguit een balkje.

Een rekensom of een vraag. Hoeveel is drie plus vier. Simpel te bouwen, simpel te omzeilen, en lastig voor bezoekers met dyscalculie of een andere taal.

Waarin reCAPTCHA en Turnstile van elkaar verschillen

Dit zijn de twee die je in de praktijk kiest, en ze lossen hetzelfde probleem op een andere manier op.

reCAPTCHA werkt met een oordeel van Google over de bezoeker, gevoed door wat Google verder over die browser weet. Dat maakt het oordeel scherp en het maakt jou afhankelijk van een partij die daar gegevens voor verzamelt. Je hebt een Google-account nodig, je krijgt twee sleutels, en boven een bepaalde hoeveelheid controles per maand kost het geld.

Turnstile van Cloudflare doet het zonder puzzel en zonder oordeel over de persoon. Het script laat de browser een reeks controles uitvoeren en kijkt of het gedrag klopt met een echte browser. Het is gratis, ook als de rest van je site niet bij Cloudflare staat, en Cloudflare zegt de gegevens niet te gebruiken om bezoekers over sites heen te volgen. Wat Cloudflare verder voor een site doet staat in het artikel over Cloudflare.

Technisch werken ze hetzelfde vanaf jouw kant. De bezoeker krijgt een code, jouw server stuurt die code met je geheime sleutel naar de aanbieder, en die antwoordt met goed of fout. Die controle aan de serverkant is het deel dat mensen weleens overslaan, waarna de captcha puur decoratie is.

Mijn voorkeur voor een gewone bedrijfssite is Turnstile, om de simpele reden dat er geen bezoekersgegevens naar een advertentiebedrijf gaan en niemand een plaatjespuzzel voor zijn kiezen krijgt.

Wat een captcha je kost

Dit wordt zelden meegewogen en het is het belangrijkste punt.

Elke drempel kost je inzendingen. Een puzzel die iemand twee keer moet doen omdat hij een fiets over het hoofd zag, kost je een aanvraag. Bij een contactformulier waar per week vijf serieuze aanvragen doorheen komen is dat een dure maatregel tegen spam die je ook anders had kunnen weren.

Op mobiel is het erger. Een raster met negen plaatjes op een klein scherm, met een toetsenbord dat de helft bedekt, is een beproeving. Dat is precies het verkeer waar de meeste aanvragen vandaan komen.

Er zit ook een snelheidskant aan. Het script van een captcha komt van een ander domein, weegt tientallen kilobytes en laadt op elke pagina waar je hem aanzet. Bij reCAPTCHA v3 gebeurt dat standaard op je hele site, ook op pagina's zonder formulier. Dat kun je beperken en dat vergeet vrijwel iedereen.

Reken die kosten dus mee zoals je dat bij elke drempel in een formulier doet. Dezelfde afweging als bij een extra invulveld, en die staat in het artikel over conversie-optimalisatie.

Toegankelijkheid, en waar mensen vastlopen

Een captcha is per definitie een test die sommige mensen niet halen. Dat is geen bijwerking, dat is het ontwerp.

Mensen die blind zijn kunnen de plaatjes niet zien en zijn aangewezen op het audio-alternatief. Dat is in de praktijk slecht verstaanbaar en spreekt bij Nederlandse bezoekers vaak Engels. Mensen met dyslexie struikelen over vervormde letters. Wie zijn handen niet goed stil kan houden, mist het juiste vakje. En wie moeite heeft met abstracte vragen loopt vast op "selecteer alle afbeeldingen met een brandkraan", een object dat er in Nederland anders uitziet dan op de foto's.

Het W3C waarschuwt hier al jaren voor in een aparte notitie over de ontoegankelijkheid van captcha's, en de richtlijnen van WCAG vragen bij elke test die niet met tekst kan een alternatief dat wel werkt.

Sinds 28 juni 2025 is dat ook wetgeving. De Europese toegankelijkheidsakte geldt voor nieuwe producten en diensten voor consumenten, waaronder webshops, bankieren, vervoerbewijzen en e-boeken. Een afrekenproces dat op een captcha vastloopt voor iemand met een schermlezer voldoet daar niet aan. Dienstverleners met minder dan tien medewerkers en een omzet onder de twee miljoen euro vallen buiten die verplichting, dus voor de meeste kleine bedrijven is dit geen juridische kwestie. Voor de overheid gold al langer dat sites aan WCAG moeten voldoen.

Wat je hier praktisch mee doet: gebruik geen zichtbare puzzel als je hem kunt vermijden, en test je formulier één keer met alleen je toetsenbord. Meer daarover staat in het artikel over gebruikerservaring.

De privacykant van reCAPTCHA

reCAPTCHA is een dienst van Google, en om te bepalen of jij een mens bent stuurt hij gegevens over je bezoeker naar Google. Daaronder het IP-adres, informatie over browser en apparaat, muisbewegingen en de cookies die er al stonden. Google zegt die gegevens te gebruiken om de dienst en de beveiliging te verbeteren en niet voor gepersonaliseerde advertenties.

Onder de AVG ben jij de verantwoordelijke voor die verwerking, want jij zet het script op je pagina. Dat betekent drie dingen. Zet reCAPTCHA met naam in je privacyverklaring. Vertel wat er wordt doorgegeven. En kijk of je een grondslag hebt.

De voorwaarden van Google zelf verlangen bovendien dat je bezoekers hierover informeert. Daarom staat er onder een formulier met reCAPTCHA v3 ofwel het badge-logo, ofwel een regel tekst met links naar het privacybeleid en de voorwaarden van Google. Die regel weghalen mag niet.

Dan de doorgifte naar de Verenigde Staten. Sinds 10 juli 2023 bestaat het EU-US Data Privacy Framework, waarmee doorgifte naar aangesloten Amerikaanse bedrijven is toegestaan. Google is daarbij aangesloten. Dat besluit is bij de Europese rechter aangevochten, dus of het over vijf jaar nog staat is een open vraag. Twee eerdere regelingen sneuvelden.

Over toestemming lopen de meningen uiteen. Een beveiligingsmaatregel die de bezoeker zelf beschermt kan onder de noodzakelijke functies vallen. reCAPTCHA doet meer dan dat, en leest cookies uit die er voor andere doelen staan. Ik houd de veilige lijn aan: laad hem pas na akkoord, of gebruik een variant die geen gegevens naar een advertentiebedrijf stuurt. Friendly Captcha uit Duitsland en de open bronvariant Altcha, die je op je eigen server kunt draaien, zijn daar de bekendste voorbeelden van.

Wat beter werkt op een gewoon formulier

Voor een contactformulier op een gewone bedrijfssite zijn er maatregelen die de bezoeker niets kosten. Die zet je eerst in.

  • Een honeypot. Een verborgen veld dat mensen niet zien en robots wel invullen. Ingevuld betekent weggooien. Dit vangt het grootste deel van de spam.
  • Een tijdcontrole. Een formulier dat binnen twee seconden na het laden wordt verstuurd komt niet van een mens. Andersom mag een formulier dat uren open stond ook opnieuw.
  • Een verborgen sleutel. Het formulier krijgt bij het laden een code mee die bij verzending moet kloppen. Houdt scripts tegen die rechtstreeks naar je verwerkingsadres posten.
  • Een filter op de inhoud. Berichten met tien links, met alleen Cyrillisch schrift of met bekende spamwoorden hoef je niet te ontvangen.

Die vier samen halen bij de meeste sites vrijwel alle spam eruit, zonder dat één bezoeker iets merkt.

Een honeypot goed bouwen

Er zit één valkuil in. Verberg het veld met CSS, niet met het type verborgen, want dat type slaan robots juist over. Geef het een naam die uitnodigt, zoals website of telefoon2.

Zet er daarnaast tabindex op min één zodat je er met de toetsenbordtab niet in belandt, en aria-hidden zodat een schermlezer hem overslaat. Zet automatisch aanvullen uit, anders vult de wachtwoordbeheerder van je bezoeker het veld in en gooi je een echte aanvraag weg. Dat laatste is de fout die je zelf nooit ziet.

Als je er toch een nodig hebt

Bij inlogpagina's, bij het aanmaken van accounts en bij formulieren die echt onder vuur liggen is een captcha wel op zijn plaats. Hetzelfde geldt voor formulieren waar geld of voorraad achter zit, zoals een reservering.

Kies dan een variant zonder puzzel en laat hem alleen ingrijpen bij een lage score. Voor bezoekers verandert er dan niets en je houdt de meeste automatische pogingen tegen.

Zet bij een score ook op wat er gebeurt in het grijze gebied. Bij een lage score alles weigeren is grof. Zo'n bericht in een aparte map zetten en één keer per week doorkijken is beter, want dan zie je wat je zou hebben weggegooid.

Voor inloggen zelf is er iets dat beter werkt: een limiet op het aantal pogingen per IP-adres en per gebruikersnaam, en tweestapsverificatie. Dat houdt aanvallers tegen zonder dat je bezoeker iets hoeft aan te wijzen.

Hoe dit in WordPress zit

WordPress zelf heeft geen captcha. Wat je gebruikt komt uit je formulierplugin of uit een aparte plugin.

Contact Form 7 ondersteunt sinds versie 5.1 uit 2019 alleen nog reCAPTCHA v3. Dat verklaart waarom er op veel sites ineens een zwevend badge-logo rechtsonder verscheen en de vertrouwde plaatjes verdwenen. Gravity Forms en WPForms hebben een honeypot ingebouwd die je met één vinkje aanzet, en dat is bij de meeste sites het enige dat je nodig hebt. Waar je verder op let bij het bouwen van formulieren staat in het artikel over een goed contactformulier.

Voor reacties onder berichten is een captcha zelden de oplossing. Akismet vergelijkt reacties met een centrale lijst en werkt daar beter, en verder helpt het om reacties na een aantal weken te sluiten. Wat er precies binnenkomt staat in het artikel over comment spam.

Let op de combinatie met paginacache. Zowel WordPress als de captcha zelf werkt met eenmalige codes die maar korte tijd geldig zijn: bij reCAPTCHA verloopt zo'n code al na een paar minuten. Wordt de pagina uit de cache geserveerd of blijft hij lang openstaan, dan mislukt de verzending zonder duidelijke melding. Goede cacheplugins slaan pagina's met formulieren over, en dat controleer je na elke ingreep aan je cache.

Waar het misgaat

Een zichtbare puzzel als eerste maatregel. Begin bij de onzichtbare methodes en escaleer alleen als het nodig blijkt.

Een captcha op een formulier met weinig verkeer. Dan weer je vooral je eigen klanten.

De sleutels verwisseld. De publieke sleutel hoort in de pagina, de geheime op de server. Verwissel je ze, dan zie je meestal een rode foutmelding in het vak zelf.

Het domein niet toegevoegd. Sleutels zijn gekoppeld aan een domein. Ga je van je testomgeving naar je echte adres en vergeet je dat, dan weigert de captcha iedereen.

De server kan er niet bij. De controle gaat van jouw server naar de aanbieder. Blokkeert de firewall van je hosting dat uitgaande verkeer, dan lijkt je formulier te werken en komt er niets aan.

Nooit getest na oplevering. Dit is de dure. Vul één keer per kwartaal je eigen formulier in en kijk of het bericht binnenkomt. Ik kom sites tegen die maanden geen enkele aanvraag ontvingen zonder dat iemand het doorhad.

Wat er de laatste jaren veranderd is

Het onderscheid tussen mens en machine is aan het verdwijnen. Beeldherkenning haalt de plaatjespuzzels moeiteloos, en er bestaan diensten die captcha's tegen betaling laten oplossen door echte mensen in lagelonenlanden. Een gemotiveerde spammer komt er hoe dan ook doorheen. Wat je tegenhoudt is de luie meerderheid.

De reactie daarop is dat de test verschuift van de bezoeker naar het apparaat. Apple bouwde in 2022 in iOS 16 en macOS Ventura een systeem in waarmee Safari kan bewijzen dat het om een echt toestel van een echte gebruiker gaat, zonder dat er iets wordt aangeklikt en zonder dat de site weet wie je bent. Cloudflare ondersteunt dat, en zulke bezoekers krijgen dan helemaal geen test.

Tegelijk werd het aanbod groter en goedkoper. Cloudflare stapte in 2020 zelf over van reCAPTCHA naar hCaptcha en bracht in 2022 Turnstile uit als gratis alternatief. Voor wie een formulier op een gewone site moet beschermen, is er in 2026 geen goede reden meer om bezoekers plaatjes te laten aanwijzen.

Veelgestelde vragen over CAPTCHA

Waar staat CAPTCHA voor?

Voor Completely Automated Public Turing test to tell Computers and Humans Apart. Vrij vertaald: een test die een computer zelf kan afnemen en nakijken, en waarmee je mensen van machines onderscheidt. De verwijzing is naar Alan Turing, die de vraag bedacht of je aan een gesprek kunt merken of er een machine aan de andere kant zit.

Is een captcha verplicht op een contactformulier?

Nee, nergens. Er is geen wet of regel die het voorschrijft. Het is een keuze tegen spam, en bij een formulier met een paar aanvragen per week kost hij je meestal meer dan hij oplevert. Begin met een honeypot en een tijdcontrole.

Mag ik reCAPTCHA gebruiken onder de AVG?

Ja, mits je het netjes regelt. Noem reCAPTCHA in je privacyverklaring, vertel dat er gegevens naar Google gaan, en houd er rekening mee dat die doorgifte naar de Verenigde Staten leunt op het Data Privacy Framework uit juli 2023. Wil je die afhankelijkheid niet, kies dan een Europese of zelf gehoste variant.

Heb ik toestemming nodig voordat ik reCAPTCHA laad?

Daarover verschillen de meningen. Beveiliging kan onder de noodzakelijke functies vallen, en tegelijk leest reCAPTCHA gegevens uit die verder gaan dan die ene controle. De veilige keuze is hem pas te laden nadat iemand akkoord geeft, of een alternatief te gebruiken dat dit probleem niet heeft.

Wat is het verschil tussen reCAPTCHA v2 en v3?

v2 is de zichtbare variant met het vinkje en de plaatjes. v3 stelt geen vraag en geeft elke bezoeker een score tussen 0 en 1, waarna jij bepaalt vanaf welke waarde je iets weigert. v3 is prettiger voor bezoekers en vraagt meer instelwerk, want een verkeerd gekozen grens gooit echte aanvragen weg.

Is Cloudflare Turnstile gratis?

Ja, je kunt Turnstile gratis gebruiken, ook als de rest van je site niet bij Cloudflare draait. Je maakt een account aan, voegt je domein toe en krijgt twee sleutels. De meeste formulierplugins voor WordPress ondersteunen het inmiddels.

Waarom komen er geen berichten meer binnen sinds ik een captcha heb ingesteld?

Dan mislukt de controle en wordt de verzending stil geweigerd. Kijk eerst of de sleutels niet verwisseld zijn en of je domein bij de sleutel staat. Controleer daarna of je server het adres van de aanbieder mag benaderen. Test het altijd zelf met een echt bericht na het instellen.

Wat is een honeypot en werkt dat echt?

Een verborgen veld dat een mens niet ziet en een robot wel invult. Is het ingevuld, dan gooi je de inzending weg. Het werkt beter dan de meeste mensen denken, omdat het gros van de spam van simpele scripts komt die alles invullen wat ze tegenkomen. Verberg het veld met CSS en zet automatisch aanvullen uit, anders vult de browser van je bezoeker het in.

Zijn captcha's toegankelijk voor mensen met een beperking?

Slecht. Plaatjes zijn onbruikbaar met een schermlezer, de audio-alternatieven zijn moeilijk te verstaan en spreken vaak Engels, en vervormde letters zijn zwaar bij dyslexie. Het W3C waarschuwt hier al jaren voor. Verkoop je online aan consumenten, dan speelt sinds 28 juni 2025 ook de Europese toegankelijkheidsakte mee, al zijn dienstverleners met minder dan tien medewerkers daarvan uitgezonderd.

Houdt een captcha hackers tegen?

Nee. Een captcha houdt geautomatiseerde formulierinzendingen tegen en verder niets. Tegen inbraakpogingen helpen updates, sterke wachtwoorden, tweestapsverificatie en een limiet op inlogpogingen. Wie een captcha op zijn inlogpagina zet en zijn plugins een jaar niet bijwerkt, heeft het verkeerde slot op de verkeerde deur gezet.

Waarom moet ik steeds opnieuw stoplichten aanwijzen?

Omdat het systeem je gedrag verdacht vindt en je opnieuw laat proberen. Dat gebeurt vaker bij een VPN, bij een verouderde browser, bij privacy-instellingen die cookies weren en bij bezoekers die zich niet aanmelden bij Google. Aan de kant van de site kun je er weinig aan doen, behalve overstappen op een captcha die geen plaatjes gebruikt.

Welk alternatief voor reCAPTCHA is er in Europa?

Cloudflare Turnstile is de meest gebruikte, en Friendly Captcha uit Duitsland richt zich uitdrukkelijk op Europese privacyregels. Wil je alles in eigen hand, dan is er de open bronvariant Altcha, die je op je eigen server draait. Alle drie laten de bezoeker niets aanwijzen.

Helpt een captcha tegen spam in reacties op mijn WordPress-site?

Een beetje, en er is beter gereedschap. Akismet vergelijkt binnenkomende reacties met een centrale lijst en houdt daarmee het meeste tegen. Verder helpt het om reacties op oudere berichten automatisch te sluiten, want daar komt het gros van de spam binnen.

Dit artikel hoort bij Internet Marketing Begrippen. Daar vind je meer uitleg over hetzelfde onderwerp.

Een vraag over dit onderwerp?

Vertel waar je tegenaan loopt.

Maurits denkt met je mee en geeft je een praktisch antwoord.

reactie dezelfde werkdag
Maurits van Platform Pro

Vertel kort waar je aan denkt

Nu gesloten, ik reageer de volgende werkdag

Maurits leest je bericht en neemt persoonlijk contact met je op.

Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.
Dit veld is verborgen bij het bekijken van het formulier