Skrivetests opdager snyd ved at tjekke tasteloggen bag hvert resultat. Vores genberegner hvert resultat ud fra tasteloggen, tjekker en hash, tester loggens struktur og timing og holder ethvert tidsbestemt resultat over 130 WPM, hvis timing også ser usædvanlig ud, uden for de offentlige ranglister, indtil du består en ny test. Tidskontrollerne fanger skødesløse bots; den nye test får en omhyggelig bot til at gøre det hele igen.
Den første bot, der slog vores tidskontroller, var vores egen.
Vores hjælper til end-to-end-tests trykkede på taster med et fast interval på 40 ms, for det er det, et testscript gør. Serveren genberegnede resultatet, bekræftede hashen og vurderede kørslen som mistænkelig: nul variation mellem tastetryk, nul rollover, ens holdetider. Vi måtte tilføje tilfældig jitter pr. ord og lejlighedsvise "tænkepauser" på 80 til 300 ms, før vores egen testsuite kunne indsende et resultat, der så menneskeligt ud. Indstillingen findes stadig i koden under navnet humanLike.
Kontrollerne virker mod alt, der ikke prøver, og alt, der prøver, kan klare dem, så designet lægger den egentlige vægt på en ny test.
Trin et: genberegn alt
Din browser sender os ikke en WPM. Den sender tasteloggen (hver keydown-, keyup-, input- og composition-hændelse med tidsstempel fra det monotone ur performance.now()), de målinger, den har beregnet, og en SHA-256-hash af det kanoniske resultat.
Serveren kører den samme målekode på loggen og sammenligner. Afviger et tal med mere end 0,01, afvises resultatet som metrics_mismatch. Passer hashen ikke, afvises det som hash_mismatch. En browserudvidelse, der redigerer WPM-feltet, den mest almindelige form for snyd på sider, der stoler på klienten, falder her. De samme funktioner laver tallet på din skærm og i databasen, og derfor kan vores side om målinger love, at dens regneeksempel kan genskabes med to decimaler.
Hvorfor ikke tage tid på testen på serveren? Så ville din score omfatte netværket. Hvert tastetryk ville nå os lidt for sent, med en forsinkelse, der varierer med din forbindelse, og en hurtig skriver på en langsom linje ville miste hastighed, de faktisk havde. Loggen giver os klientens ur for præcisionens skyld og serverens genberegning for ærlighedens skyld.
Trin to: giver loggen mening?
Før nogen tidsanalyse er der enkle kontroller af indsendelsens form:
- Testen skal vare mindst 15 sekunder eller 10 ord. Kortere forløb er for støjfyldte til at blive rangeret og de letteste at puste op.
- Et resultat kan ikke ankomme, før testen kunne være færdig: starttidspunktet plus testens egen længde. Et resultat på 60 sekunder, der ankommer tyve sekunder efter start, er ikke sket.
- Antallet af hændelser skal passe til de skrevne tegn.
- På computer skal hver input-hændelse følge efter en keydown inden for 50 ms. Det fanger indsat tekst, scriptede input-hændelser og de fleste værktøjer til indsprøjtning af tastetryk, som sender tekst uden en fysisk tast. Skrivning gennem en inputmetode (IME-composition) er undtaget, og mobilresultater holdes uden for de offentlige ranglister.
- En log uden start, uden slutning eller med tidsstempler, der ikke er monotone, er fejlformet og afvises direkte.
Intet af dette er snedigt, men det fjerner det meste af mængden.
Trin tre: hvad kan timingen af tastetryk afsløre?
Det er den del, vi bevidst ikke dokumenterer fuldt ud: listen over træk er offentlig, grænseværdierne og vægtene er ikke. En offentliggjort grænseværdi er et mål. Hvis vi skrev "en standardafvigelse under N millisekunder bliver markeret", ville næste version af ethvert script lægge N plus én til. De træk, vi vurderer:
Det gennemsnitlige mellemrum mellem taster, og hvor meget det varierer. Menneskers skrivning er uregelmæssig. I Dhakal og kollegers studie fra 2018 af 168.960 skrivere var det gennemsnitlige interval mellem taster omkring 239 ms med en standardafvigelse på omkring 112 ms. Et script, der skriver med et fast interval, har næsten ingen variation; et arXiv-studie fra 2025 af en tastetryksbaseret CAPTCHA så præcis det hos sin testbot, der skrev med en fast forsinkelse på 50 ms. Det er vores stærkeste signal, og det var det, vores hjælper faldt over.
Andelen af mellemrum under 40 ms. Et mellemrum på 40 ms, holdt hele vejen, er 1.500 tegn i minuttet, eller 300 WPM ved fem tegn pr. ord. Fingre laver godt nok enkelte så korte mellemrum, når de overlapper taster under rollover, så ét kort mellemrum betyder intet. En log, hvor en stor del af mellemrummene er så korte, er ikke skrivning.
Holdetider for tasterne. Rigtige fingre varierer med titals millisekunder; syntetiske hændelser har ofte ens holdetider eller holdetider tæt på nul, fordi værktøjet sender keydown og keyup lige efter hinanden.
Rollover-forhold. Hvor tit den næste tast går ned, før den forrige kommer op. Dhakal målte et gennemsnitligt rollover-forhold på 25 %, hvor de fleste hurtige skrivere lavede rollover på 40 til 70 % af tastetrykkene, og tasterne overlappede med 30 ms i gennemsnit. Langsomme skrivere bruger næsten ingen, så et hurtigt resultat uden rollover stikker ud. Bots overlapper sjældent taster.
Længste pause, hastighedsudsving fra sekund til sekund og andelen af mellemrum over ét sekund. Mennesker tøver på måder, et script skal have besked på at efterligne.
En scoringsmodel kombinerer disse og kan markere et resultat som mistænkeligt. Under 130 WPM afviser en markering ikke noget i sig selv. Dit resultat bliver aldrig skjult for dig; disse kontroller afgør kun, om det rangeres.
Kan snyd i en skrivetest komme forbi tidskontrollerne?
Ja, hvis snyderiet er bygget med omhu. En arXiv-artikel fra januar 2026 af David Condrey testede detektorer baseret på tastetimingen, som skulle skelne tekst skrevet af mennesker fra AI-genereret tekst. De skilte fuldt automatiseret indsprøjtning perfekt fra, men angreb med menneskelig timing (en person, der skriver AI-tekst af, eller et program, der trækker forsinkelser fra data om menneskers skrivning) undgik alle fem klassifikatorer i mindst 99,8 % af tilfældene. Artiklen handler om at afgøre forfatterskab, ikke om skrivetests, men lektien kan overføres: trin tre fanger de skødesløse og ikke meget andet.
Vores egen testhjælper viser det samme i lille skala: tilfældig jitter og nogle få pauser flyttede den fra åbenlyst syntetisk til troværdig.
Så trin tre er et filter. Dommen kommer fra trin fire.
Trin fire: bekræftelsestesten
Hvis et tidsbestemt resultat er over 130 WPM, og dets timing også ser usædvanlig ud, kan du se det, og det bliver gemt, men det holdes uden for de offentlige ranglister, indtil du består en bekræftelsestest. Det er en ny test på 30 sekunder, og du skal nå mindst 75 % af den hastighed, du anmeldte. Et enkeltstående lykketræf eller en lånt log overlever ikke en anden kørsel.
Hvorfor 130 WPM? Det er omkring to en halv gang gennemsnittet på 51,56 WPM i Dhakals data, langt over de fleste skrivere, og den, der virkelig skriver så hurtigt, kan gøre det to gange. Et pludseligt hurtigt resultat med mærkelig timing er den form, en lånt log eller et script giver, og hvis det er ærligt, er én ekstra test en lille pris.
Den nye test er en helt almindelig skrivetest med almindelig tekst, ikke et forvrænget billede eller en side med mærkelige symboler. Tekst, der er svær at læse, gør alle langsommere, og dem, den gør mest langsomme, er netop de ærlige hurtige skrivere, som den nye test skal frikende. En bekræftelse, som ærlige hurtige skrivere ikke består, er værre end ingen. Almindelig tekst gør også kontrollen fair: den nye tests egen log går gennem de samme tidskontroller som ethvert andet resultat.
Begrænsninger og udelukkelser
Indsendelser er begrænset: tredive i minuttet pr. indlogget bruger, tres pr. IP-adresse. En konto, der bliver ved med at udløse kontrollerne, bliver shadow-bannet, altså stille skjult fra ranglisterne, og tre alvorlige snydhændelser inden for 24 timer udløser det automatisk. At tælle hændelser inden for et tidsvindue betyder, at ét mærkeligt resultat aldrig koster dig en konto, mens et script, der fejler igen og igen, hurtigt bliver stoppet.
Ranglister over alle tider kræver desuden 30 minutters skrivning på kontoen, så en ny konto med ét perfekt forløb ikke kan komme øverst.
Det, der kan få dig markeret ved et uheld
De fleste markerede resultater er ikke snyd. De ærlige måder at udløse en kontrol på:
Autokorrektur på en mobil. En udskiftning ankommer som én input-hændelse, der ændrer flere tegn. Vi tæller den som ét tastetryk, markerer den og holder resultatet uden for de offentlige ranglister med en note, ikke en afvisning.
Indsat tekst. Indsættelse er blokeret, og et resultat, hvor det blev forsøgt, udelukkes fra ranglisterne.
Skift af faneblad. Forlader fokus siden i mere end to sekunder under en test, markeres den som afbrudt; den bliver gemt og vist, men ikke rangeret.
Pauser. Et ophold på over fem sekunder i en test med ord eller citat markerer resultatet som sat på pause. Samme behandling.
IME-composition. Japansk, koreansk og kinesisk input ankommer gennem composition-hændelser, så vi springer keydown-reglen over for dem. Ser noget stadig forkert ud, er det en fejl, og så vil vi gerne have loggen.
Offline-resultater. Et resultat, der synkroniseres mere end ti minutter efter, at det blev færdigt, bliver i din historik uden rangering, fordi vi ikke kan validere dets ur.
At være virkelig hurtig. Over 130 WPM møder du den nye test, sandsynligvis på din første gode dag.
Sådan klager du
Hver udelukkelse viser sin begrundelse i din historik. Mener du, at vi tager fejl om et resultat eller en begrænsning, så skriv til klageadressen på vores side om snydsikring fra den adresse, der står på din konto, med linket til resultatet eller dato og klokkeslæt for testen. En person ser genafspilningen af tastetrykkene og svarer inden for nogle få dage. Klager bliver aldrig afgjort af den automatiske model alene.
Har vi lige offentliggjort en vejledning i at klare kontrollerne? Delvis. Listen over træk har altid kunnet aflæses af adfærden, og grænseværdierne forbliver private. Den nye test er den del, der betyder noget, og måden at bestå den på er at skrive.
Ofte stillede spørgsmål
Hvordan opdager skrivetests bots?
De gode læser tasteloggen: om der ligger et tastetryk bag hvert tegn, hvor meget mellemrummene mellem tasterne varierer, og hvordan tasterne holdes og overlapper. Scripts er gerne for regelmæssige; omhyggelige bots kan efterligne mennesker, og derfor tilføjer vi en ny test.
Kan en bot komme igennem en skrivetests kontrol mod snyd?
En omhyggelig bot kan klare tidskontrollerne: forskning i detektorer baseret på tastetiming fandt, at forfalsket menneskelignende timing undgik dem næsten hver gang. Derfor holder vi hurtige resultater tilbage til en ny test, som en bot skal bestå igen med en ny log, der klarer de samme kontroller.
Hvorfor blev mit resultat ikke rangeret?
Som regel en test under 15 sekunder eller 10 ord, en pause på over fem sekunder, et skift af faneblad eller et resultat over 130 WPM, der venter på sin nye test. Din historik viser begrundelsen.