TOTP-/2FA-codegenerator
Genereer een TOTP-/2FA-code uit een Base32-secret — 100% in je browser, je secret verlaat nooit je apparaat. QR-installatie + codeverificatie.
Geavanceerde opties
Wat is een TOTP-/2FA-codegenerator?
Een TOTP-generator zet een gedeeld secret om in de roterende eenmalige code die tweefactorauthenticatie aandrijft. TOTP — Time-based One-Time Password, gedefinieerd in RFC 6238 — neemt een Base32-secret en de huidige tijd, deelt de tijd op in vaste stappen (standaard 30 seconden) en voert een HMAC uit over de stappenteller om een korte numerieke code af te leiden. Omdat zowel je authenticator-app als de server hetzelfde secret bewaren en dezelfde klok aflezen, berekenen ze de identieke code zonder die ooit via het netwerk uit te wisselen. Dat is precies het doel van 2FA: zelfs als je wachtwoord lekt, heeft een aanvaller nog steeds de code nodig die alleen jouw secret op dit moment kan produceren.
"The TOTP algorithm is a time-based variant of the HOTP algorithm... TOTP = HOTP(K, T), where T is an integer representing the number of time steps between the initial counter time T0 and the current Unix time." — RFC 6238, Section 4
Deze tool doet drie taken op één pagina. Hij genereert een live code uit elk Base32-secret met een aftelling en voorbeeld van de volgende code; hij stelt een gloednieuw secret in en bouwt de otpauth://-URI en QR-code die je in een authenticator-app scant; en hij verifieert een code tegen een secret met een tolerantie van ±1 tijdstap, net zoals echte servers een net geroteerde code accepteren. Alles loopt via de native Web Crypto API van de browser, zonder afhankelijkheden en zonder netwerkverzoeken.
Ontwikkelaars grijpen voortdurend naar een TOTP-generator: om de exacte code te reproduceren die de app van een gebruiker toont tijdens het debuggen van een 2FA-aanmelding, om een secret en QR voor een nieuw account aan te maken, om te bevestigen dat een verificatievenster op de server overeenkomt met wat gebruikers ervaren, of om deterministische fixtures te bouwen voor end-to-end-tests van een tweefactorproces. Omdat het secret een langlevende sleutel is — iedereen die het heeft kan elke toekomstige code genereren — moet het beschermd worden als een wachtwoord. Combineer deze tool met onze willekeurige-wachtwoordgenerator voor de sterke wachtwoorden en herstelcodes naast 2FA, en met de QR-codegenerator wanneer je een losse aanmeldingsafbeelding nodig hebt. Voor het ondertekenen van de JSON Web Tokens die vaak bovenop een geauthenticeerde sessie meeliften, zie de JWT-encoder.
// Generate a TOTP code in the browser with the Web Crypto API
// (SHA-1, 6 digits, 30s period — RFC 6238 defaults)
async function generateTotp(base32Secret, time = Date.now()) {
// Decode the Base32 secret to raw bytes (A-Z, 2-7)
const alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
let bits = '';
for (const c of base32Secret.replace(/=+$/, '').toUpperCase())
bits += alpha.indexOf(c).toString(2).padStart(5, '0');
const bytes = new Uint8Array(
bits.match(/.{8}/g).map((b) => parseInt(b, 2)));
// Counter = number of 30s steps since the Unix epoch (8-byte big-endian)
const counter = Math.floor(time / 1000 / 30);
const msg = new Uint8Array(8);
let c = counter;
for (let i = 7; i >= 0; i--) { msg[i] = c & 0xff; c = Math.floor(c / 256); }
const key = await crypto.subtle.importKey(
'raw', bytes, { name: 'HMAC', hash: 'SHA-1' }, false, ['sign']);
const hmac = new Uint8Array(await crypto.subtle.sign('HMAC', key, msg));
// Dynamic truncation (RFC 4226) -> 6-digit code
const off = hmac[hmac.length - 1] & 0x0f;
const bin = ((hmac[off] & 0x7f) << 24) | (hmac[off + 1] << 16) |
(hmac[off + 2] << 8) | hmac[off + 3];
return (bin % 1_000_000).toString().padStart(6, '0');
}
const code = await generateTotp('JBSWY3DPEHPK3PXP');
// -> a 6-digit code that rotates every 30 seconds Belangrijkste functies
Live code met aftelling
Plak een Base32-secret en de huidige TOTP-code verschijnt direct met een afteltimer van 30 seconden en een voorbeeld van de volgende code — geen Genereren-knop, geen wachten.
Secret- & QR-installatie
Genereer een willekeurig Base32-secret en krijg vervolgens de otpauth://-URI en een QR-code om rechtstreeks in Google Authenticator, Authy of 1Password te scannen.
Ingebouwde codeverificatie
Controleer een code tegen een secret met dezelfde tolerantie van ±1 tijdstap die echte servers gebruiken, zodat een net geroteerde code nog steeds valideert.
Instelbaar algoritme & cijfers
Schakel tussen SHA-1, SHA-256 en SHA-512, kies 6 of 8 cijfers en stel een periode van 30s of 60s in om aan de eisen van elke provider te voldoen.
Secret verlaat nooit je browser
Elke code wordt lokaal berekend via de native Web Crypto API. Er wordt niets geüpload, gelogd of opgeslagen — verifieerbaar zo, zelfs offline.
Geen afhankelijkheden
Uitsluitend gebouwd op de Web Crypto API van de browser — geen externe bibliotheken, geen telemetrie en geen enkel netwerkverzoek.
Voorbeelden van de TOTP-generator
Standaard 6-cijferige TOTP (SHA-1, 30s)
secret: JBSWY3DPEHPK3PXP algorithm: SHA-1 digits: 6 period: 30s
Code: 282760 · expires in 30s
Het canonieke RFC 6238-testsecret met de standaardinstellingen die elke gangbare app gebruikt — SHA-1, 6 cijfers, een periode van 30 seconden. De code is tijdgebaseerd, dus de exacte waarde hangt af van de huidige tijd; de tool toont een live aftelling en de volgende code.
8-cijferige enterprise-TOTP (SHA-256)
secret: JBSWY3DPEHPK3PXP algorithm: SHA-256 digits: 8 period: 30s
Code: 31094217 · expires in 30s
Sommige enterprise- en hoogbeveiligde systemen geven 8-cijferige codes uit, ondertekend met SHA-256 in plaats van de SHA-1-standaard. Stem het algoritme, het aantal cijfers en de periode exact af op wat je server verwacht, anders valideert de gegenereerde code niet.
otpauth://-installatie-URI voor authenticator-apps
issuer: Acme account: alice@example.com secret: JBSWY3DPEHPK3PXP
otpauth://totp/Acme:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Acme&algorithm=SHA1&digits=6&period=30
De tool bouwt een standaard otpauth://-URI en geeft deze weer als QR-code. Scan hem met Google Authenticator, Authy of 1Password — of plak de URI rechtstreeks — om het secret op je apparaat in te stellen.
De TOTP-generator gebruiken
- 1
Plak een Base32-secret
Plak op het tabblad Genereren je Base32-secret (bijvoorbeeld JBSWY3DPEHPK3PXP). De huidige TOTP-code verschijnt direct met een aftelling van 30 seconden — geen Genereren-knop.
- 2
Pas geavanceerde opties aan (optioneel)
Open de geavanceerde opties om het algoritme (SHA-1/256/512), het aantal cijfers (6 of 8) of de periode (30 of 60s) af te stemmen op wat je provider heeft uitgegeven.
- 3
Instellen of verifiëren
Gebruik het tabblad Instellen om een secret en QR voor een authenticator-app te genereren, of het tabblad Verifiëren om een code te controleren tegen een secret met een tolerantie van ±1 tijdstap.
Veelgemaakte fouten
Afwijkend algoritme of aantal cijfers
Een secret dat voor SHA-256 of 8 cijfers is uitgegeven, produceert een totaal andere code onder de standaard SHA-1 / 6 cijfers. Stem de parameters van de provider exact af.
secret + SHA-1/6 digits // but server expects SHA-256/8
algorithm: SHA-256, digits: 8 // match the otpauth:// URI
Klokafwijking
Als de apparaatklok meer dan één tijdstap afwijkt, valideert de code niet. Synchroniseer de systeemklok voordat je codes vergelijkt.
system clock 90s fast // code is two steps ahead
enable NTP / automatic time // code aligns with server
Ongeldig Base32-secret
Base32 gebruikt alleen A–Z en 2–7. Spaties uit een afgedrukte sleutel zijn prima, maar een 0, 1 of 8 is geen geldig Base32 en kan niet worden gedecodeerd.
secret: "JBSW 0NE8" // contains 0 and 8
secret: "JBSWY3DPEHPK3PXP" // valid Base32
Veelvoorkomende toepassingen
- Een 2FA-aanmeldproces debuggen
- Reproduceer de exacte code die de authenticator-app van een gebruiker toont, zodat je kunt traceren waarom een tweefactoraanmelding wordt geweigerd.
- Een nieuw account registreren
- Genereer een vers Base32-secret en QR-code en scan deze in Google Authenticator, Authy of 1Password om 2FA in te stellen.
- Het venster van je server valideren
- Verifieer codes tegen een secret om te bevestigen dat je backend een net geroteerde code accepteert en een verlopen code weigert.
- End-to-end-testfixtures bouwen
- Bereken deterministische TOTP-codes uit een bekend secret om geautomatiseerde tests van een tweefactorauthenticatieproces aan te sturen.
- Enterprise-instellingen afstemmen
- Reproduceer 8-cijferige of SHA-256-codes wanneer een provider afwijkt van de standaard SHA-1 / 6 cijfers, om een afwijking te debuggen.
- Snel weer toegang krijgen
- Genereer de huidige code uit een geback-upt secret wanneer je telefoon niet beschikbaar is — met een wegwerpkopie van het secret.
Technische details
- RFC 6238- / RFC 4226-conform
- Implementeert TOTP volgens RFC 6238 bovenop het HOTP-algoritme met dynamische truncatie uit RFC 4226, met selecteerbare SHA-1, SHA-256 en SHA-512.
- Native Web Crypto HMAC
- Codes worden afgeleid via crypto.subtle HMAC over de big-endian tijdstappenteller. Base32-decodering en truncatie verlopen volledig in de browser.
- Standaard otpauth://-URI's, geen afhankelijkheden
- Installatie-URI's volgen het Key Uri Format (otpauth://totp) met parameters voor issuer, algoritme, cijfers en periode. Geen externe bibliotheken, geen netwerkverzoeken.
Aanbevolen werkwijzen
- Behandel het secret als een wachtwoord
- Iedereen met het Base32-secret kan elke toekomstige code genereren. Bewaar het in een secrets manager, nooit in versiebeheer, en verkies hier testsecrets.
- Houd klokken gesynchroniseerd
- TOTP hangt af van nauwkeurige tijd. Schakel netwerktijdsynchronisatie in op servers en apparaten zodat codes binnen het verificatievenster gelijklopen.
- Blijf bij de standaardinstellingen tenzij vereist
- SHA-1, 6 cijfers en een periode van 30 seconden maximaliseren de app-compatibiliteit. Schakel alleen over naar 8 cijfers of SHA-256/512 wanneer je provider dat verplicht.
Veelgestelde vragen over de TOTP-/2FA-generator
Is een online TOTP-/2FA-generator veilig om te gebruiken?
otpauth://-URI en de gegenereerde code worden allemaal lokaal berekend met de native Web Crypto API. Er zijn geen netwerkverzoeken, geen logging, geen opslag en geen analytics gekoppeld aan je invoer — je kunt dit verifiëren door de internetverbinding te verbreken en te zien dat de tool gewoon blijft werken. Dat is het tegenovergestelde van een dubieuze generator die je secret naar een server POST, waar de beheerder eindeloos je codes zou kunnen aanmaken. Een TOTP-secret is een langlevende gedeelde sleutel, dus de veiligste gewoonte blijft om wegwerp- of testsecrets te verkiezen wanneer je alleen wilt experimenteren. Wat is TOTP en wat is een Base32-secret?
JBSWY3DPEHPK3PXP is het bekende RFC-testsecret. Waarom verschilt de gegenereerde code van de authenticator-app op mijn telefoon?
Wat is het verschil tussen TOTP en HOTP?
Kan ik 8-cijferige codes of SHA-256 / SHA-512 gebruiken?
otpauth://-URI die de tool genereert legt die parameters vast, zodat je app het secret correct registreert. Hoe voeg ik dit secret toe aan Google Authenticator, Authy of 1Password?
otpauth://-URI. Tik in Google Authenticator of Authy op de knop Toevoegen en kies Een QR-code scannen om je camera op de QR-code op het scherm te richten, of kies Een installatiesleutel invoeren en plak het Base32-secret met de bijbehorende accountnaam en het algoritme. Bewerk in 1Password een aanmeldingsitem, voeg een veld One-Time Password toe en plak de otpauth://-URI rechtstreeks. Heb je een losse QR-afbeelding voor documentatie nodig? Gebruik onze QR-codegenerator, en voor de willekeurige secrets en herstelcodes eromheen de willekeurige-wachtwoordgenerator. Gerelateerde tools
Alle tools bekijken →Bcrypt-hashgenerator & -verifier
Beveiligingstools
Genereer en verifieer bcrypt-wachtwoordhashes online — instelbare kostenfactor, $2b$/$2a$/$2y$-prefixes. 100% in je browser; je wachtwoord wordt nooit geüpload.
JWT decoderen — online JWT-decoder
Beveiligingstools
Decodeer JWT-tokens direct in je browser. Inspecteer header, payload, signature, vervaldatum en claims. 100% privé — je token verlaat je apparaat nooit.
JWT-encoder & generator
Beveiligingstools
Gratis online JWT-generator & encoder. Bouw de header en payload en onderteken direct met HS256, RS256 of ES256. 100% in de browser — je secret en sleutel verlaten je apparaat nooit.
Gratis JWT-secretgenerator — HS256/384/512
Beveiligingstools
Genereer een sterk, RFC-correct JWT-secret voor HS256/384/512 — 100% in je browser, nooit naar een server gestuurd. base64url, base64 of hex; kopieer voor .env.
Online MD5 Hash Generator & Checksum Tool
Beveiligingstools
Genereer MD5-, SHA-256-, SHA-1- en SHA-512-hashes gratis in je browser. Hash tekst of bestanden, verifieer checksums en kopieer resultaten. Geen account nodig.
Willekeurig wachtwoord genereren — online generator
Beveiligingstools
Genereer direct sterke willekeurige wachtwoorden — gratis, 100% in je browser. Stel lengte en tekens in, batch tot 50 met entropie-analyse.