Skip to content

TOTP- / 2FA-Code-Generator

Erzeuge einen TOTP/2FA-Code aus einem Base32-Secret — 100 % in deinem Browser, dein Secret verlässt nie dein Gerät. QR-Einrichtung + Code-Prüfung.

Kein Tracking Läuft im Browser Kostenlos
Lokal in deinem Browser berechnet — dein Secret verlässt nie dein Gerät.
Erweiterte Optionen
Aktueller Code
------
Nächster Code: ------
Folgt dem Verhalten von RFC 6238 / RFC 4226, wobei die Ausgabe mit den veröffentlichten Testvektoren und einer unabhängigen Authenticator-App abgeglichen wird — Go Tools Security-Team · Jun 12, 2026

Was ist ein TOTP-/2FA-Code-Generator?

Ein TOTP-Generator verwandelt ein gemeinsames Secret in den rotierenden Einmalcode, der die Zwei-Faktor-Authentifizierung antreibt. TOTP — zeitbasiertes Einmalpasswort, definiert in RFC 6238 — nimmt ein Base32-Secret und die aktuelle Zeit, unterteilt die Zeit in feste Schritte (standardmäßig 30 Sekunden) und führt einen HMAC über den Schrittzähler aus, um einen kurzen numerischen Code abzuleiten. Da sowohl deine Authenticator-App als auch der Server dasselbe Secret halten und dieselbe Uhr lesen, berechnen sie den identischen Code, ohne ihn je über das Netzwerk auszutauschen. Genau das ist der Sinn der 2FA: Selbst wenn dein Passwort durchsickert, braucht ein Angreifer immer noch den Code, den nur dein Secret gerade jetzt erzeugen kann.

"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

Dieses Tool erledigt drei Aufgaben auf einer Seite. Es erzeugt einen Live-Code aus jedem Base32-Secret mit einem Countdown und einer Vorschau des nächsten Codes; es richtet ein brandneues Secret ein, indem es die otpauth://-URI und den QR-Code baut, den du in eine Authenticator-App einscannst; und es verifiziert einen Code gegen ein Secret mit einer Toleranz von ±1 Zeitschritt, genau wie echte Server einen gerade rotierten Code akzeptieren. All das läuft über die native Web-Crypto-API des Browsers, mit null Abhängigkeiten und null Netzwerkaufrufen.

Entwickler greifen ständig zu einem TOTP-Generator: um den genauen Code zu reproduzieren, den die App eines Nutzers anzeigt, während sie einen 2FA-Login debuggen, um ein Secret und einen QR-Code für ein neues Konto zu erstellen, um zu bestätigen, dass ein Prüffenster auf dem Server dem entspricht, was Nutzer erleben, oder um deterministische Fixtures für End-to-End-Tests eines Zwei-Faktor-Ablaufs zu bauen. Da das Secret ein langlebiger Schlüssel ist — wer es hat, kann jeden zukünftigen Code erzeugen —, muss es wie ein Passwort geschützt werden. Kombiniere dieses Tool mit unserem Zufallspasswort-Generator für die starken Passwörter und Wiederherstellungscodes, die neben der 2FA stehen, und mit dem QR-Code-Generator, wenn du ein eigenständiges Anmeldebild brauchst. Zum Signieren der JSON Web Tokens, die oft über einer authentifizierten Sitzung mitlaufen, siehe den 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

Hauptfunktionen

Live-Code mit Countdown

Füge ein Base32-Secret ein und der aktuelle TOTP-Code erscheint sofort mit einem 30-Sekunden-Countdown-Ring und einer Vorschau des nächsten Codes — ohne Erzeugen-Schaltfläche, ohne Warten.

Secret- & QR-Einrichtung

Erzeuge ein zufälliges Base32-Secret und erhalte dann die otpauth://-URI und einen QR-Code zum direkten Einscannen in Google Authenticator, Authy oder 1Password.

Eingebauter Code-Verifizierer

Prüfe einen Code gegen ein Secret mit derselben Toleranz von ±1 Zeitschritt, die echte Server verwenden, sodass ein gerade rotierter Code noch validiert wird.

Konfigurierbarer Algorithmus & Stellen

Wechsle zwischen SHA-1, SHA-256 und SHA-512, wähle 6 oder 8 Stellen und setze ein Intervall von 30 s oder 60 s, um die Anforderungen jedes Anbieters zu erfüllen.

Das Secret verlässt nie deinen Browser

Jeder Code wird lokal über die native Web-Crypto-API berechnet. Nichts wird hochgeladen, geloggt oder gespeichert — nachweislich, sogar offline.

Null Abhängigkeiten

Allein auf der Web-Crypto-API des Browsers aufgebaut — keine Bibliotheken von Drittanbietern, keine Telemetrie und keine Netzwerkaufrufe jeglicher Art.

Beispiele für den TOTP-Generator

Standard-TOTP mit 6 Stellen (SHA-1, 30 s)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-1
digits: 6
period: 30s
Code: 282760  ·  expires in 30s

Das kanonische RFC-6238-Test-Secret mit den Standardeinstellungen, die jede gängige App verwendet — SHA-1, 6 Stellen, ein 30-Sekunden-Intervall. Der Code ist zeitbasiert, daher hängt der genaue Wert von der aktuellen Uhrzeit ab; das Tool zeigt einen Live-Countdown und den nächsten Code.

8-stelliges Enterprise-TOTP (SHA-256)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-256
digits: 8
period: 30s
Code: 31094217  ·  expires in 30s

Manche Enterprise- und Hochsicherheitssysteme geben 8-stellige Codes aus, die mit SHA-256 statt dem standardmäßigen SHA-1 signiert sind. Stimme Algorithmus, Stellenanzahl und Intervall exakt mit dem ab, was dein Server erwartet, sonst lässt sich der erzeugte Code nicht validieren.

otpauth://-Einrichtungs-URI für 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

Das Tool erstellt eine standardmäßige otpauth://-URI und stellt sie als QR-Code dar. Scanne ihn mit Google Authenticator, Authy oder 1Password — oder füge die URI direkt ein —, um das Secret auf deinem Gerät zu hinterlegen.

So verwendest du den TOTP-Generator

  1. 1

    Base32-Secret einfügen

    Füge im Tab Erzeugen dein Base32-Secret ein (zum Beispiel JBSWY3DPEHPK3PXP). Der aktuelle TOTP-Code erscheint sofort mit einem 30-Sekunden-Countdown — ohne Erzeugen-Schaltfläche.

  2. 2

    Erweiterte Optionen anpassen (optional)

    Öffne die erweiterten Optionen, um den Algorithmus (SHA-1/256/512), die Stellenanzahl (6 oder 8) oder das Intervall (30 oder 60 s) an das anzupassen, was dein Anbieter ausgegeben hat.

  3. 3

    Einrichten oder Verifizieren

    Nutze den Tab Einrichten, um ein Secret und einen QR-Code für eine Authenticator-App zu erzeugen, oder den Tab Verifizieren, um einen Code gegen ein Secret mit einer Toleranz von ±1 Zeitschritt zu prüfen.

Häufige Fehler

Nicht passender Algorithmus oder Stellen

Ein für SHA-256 oder 8 Stellen ausgegebenes Secret erzeugt unter den Standardwerten SHA-1 / 6 Stellen einen völlig anderen Code. Stimme die Parameter des Anbieters exakt ab.

✗ Falsch
secret + SHA-1/6 digits  // but server expects SHA-256/8
✓ Richtig
algorithm: SHA-256, digits: 8  // match the otpauth:// URI

Uhrabweichung

Weicht die Geräteuhr um mehr als einen Zeitschritt ab, lässt sich der Code nicht validieren. Synchronisiere die Systemuhr, bevor du Codes vergleichst.

✗ Falsch
system clock 90s fast  // code is two steps ahead
✓ Richtig
enable NTP / automatic time  // code aligns with server

Ungültiges Base32-Secret

Base32 verwendet nur A–Z und 2–7. Leerzeichen aus einem gedruckten Schlüssel sind in Ordnung, aber eine 0, 1 oder 8 ist kein gültiges Base32 und lässt sich nicht dekodieren.

✗ Falsch
secret: "JBSW 0NE8"  // contains 0 and 8
✓ Richtig
secret: "JBSWY3DPEHPK3PXP"  // valid Base32

Häufige Anwendungsfälle

Einen 2FA-Login-Ablauf debuggen
Reproduziere den genauen Code, den die Authenticator-App eines Nutzers anzeigt, um nachzuvollziehen, warum eine Zwei-Faktor-Anmeldung abgelehnt wird.
Ein neues Konto einrichten
Erzeuge ein frisches Base32-Secret und einen QR-Code und scanne sie dann in Google Authenticator, Authy oder 1Password ein, um die 2FA einzurichten.
Das Fenster deines Servers validieren
Verifiziere Codes gegen ein Secret, um zu bestätigen, dass dein Backend einen gerade rotierten Code akzeptiert und einen abgelaufenen ablehnt.
End-to-End-Test-Fixtures bauen
Berechne deterministische TOTP-Codes aus einem bekannten Secret, um automatisierte Tests eines Zwei-Faktor-Authentifizierungsablaufs anzutreiben.
Enterprise-Einstellungen abgleichen
Reproduziere 8-stellige oder SHA-256-Codes, wenn ein Anbieter von den Standardwerten SHA-1 / 6 Stellen abweicht, um eine Diskrepanz zu debuggen.
Schnell den Zugriff wiederherstellen
Erzeuge den aktuellen Code aus einem gesicherten Secret, wenn dein Telefon nicht verfügbar ist — mit einer Wegwerfkopie des Secrets.

Technische Details

Konform zu RFC 6238 / RFC 4226
Implementiert TOTP gemäß RFC 6238 auf Basis des dynamischen Truncation-Algorithmus von HOTP aus RFC 4226, mit wählbarem SHA-1, SHA-256 und SHA-512.
Natives Web-Crypto-HMAC
Codes werden über crypto.subtle-HMAC über den Big-Endian-Zeitschrittzähler abgeleitet. Base32-Dekodierung und Truncation laufen vollständig im Browser.
Standard-otpauth://-URIs, null Abhängigkeiten
Einrichtungs-URIs folgen dem Key Uri Format (otpauth://totp) mit Parametern für Aussteller, Algorithmus, Stellen und Intervall. Keine externen Bibliotheken, keine Netzwerkaufrufe.

Bewährte Praktiken

Behandle das Secret wie ein Passwort
Wer das Base32-Secret hat, kann jeden zukünftigen Code erzeugen. Bewahre es in einem Secrets-Manager auf, nie in der Versionsverwaltung, und bevorzuge hier Test-Secrets.
Halte die Uhren synchron
TOTP hängt von genauer Zeit ab. Aktiviere die Netzwerk-Zeitsynchronisation auf Servern und Geräten, damit die Codes innerhalb des Prüffensters zusammenpassen.
Bleib bei den Standardwerten, sofern nicht anders nötig
SHA-1, 6 Stellen und ein 30-Sekunden-Intervall maximieren die App-Kompatibilität. Wechsle nur dann auf 8 Stellen oder SHA-256/512, wenn dein Anbieter es vorschreibt.

FAQ zum TOTP-/2FA-Generator

Ist ein Online-TOTP-/2FA-Generator sicher zu nutzen?
Bei diesem ja — und der Grund ist, dass nie etwas deinen Browser verlässt. Das Base32-Secret, das du eingibst, die otpauth://-URI und der erzeugte Code werden alle lokal mit der nativen Web-Crypto-API berechnet. Es gibt keine Netzwerkanfragen, kein Logging, keine Speicherung und keine Analyse, die an deine Eingabe gebunden ist — du kannst das überprüfen, indem du dich vom Internet trennst und zusiehst, wie das Tool weiterarbeitet. Das ist das Gegenteil eines zwielichtigen Generators, der dein Secret per POST an einen Server schickt, wo der Betreiber für immer deine Codes erzeugen könnte. Ein TOTP-Secret ist ein langlebiger gemeinsamer Schlüssel, daher bleibt die sicherste Gewohnheit, beim bloßen Experimentieren Wegwerf- oder Test-Secrets zu bevorzugen.
Was ist TOTP und was ist ein Base32-Secret?
TOTP (zeitbasiertes Einmalpasswort, definiert in RFC 6238) ist der Algorithmus hinter den rotierenden 6-stelligen Codes in Authenticator-Apps. Es kombiniert ein gemeinsames Secret mit der aktuellen Zeit, unterteilt in feste Schritte (üblicherweise 30 Sekunden), über einen HMAC, um einen kurzen Code zu erzeugen, den sowohl dein Gerät als auch der Server unabhängig berechnen können. Das Secret ist der gemeinsame Schlüssel und wird fast immer in Base32 geschrieben — Großbuchstaben A–Z und die Ziffern 2–7 —, weil dieses Alphabet die Groß-/Kleinschreibung ignoriert und sich leicht eintippen oder in einem QR-Code kodieren lässt. Die Zeichenkette JBSWY3DPEHPK3PXP ist das bekannte RFC-Test-Secret.
Warum unterscheidet sich der erzeugte Code von dem in der Authenticator-App meines Telefons?
Vier Dinge müssen übereinstimmen, damit zwei TOTP-Codes gleich sind. Erstens die Uhr: TOTP hängt von der aktuellen Zeit ab, wenn also die Uhr deines Computers oder Telefons um mehr als einen Schritt abweicht, laufen die Codes auseinander — synchronisiere deine Systemuhr und versuche es erneut. Zweitens der Algorithmus: Dieses Tool verwendet standardmäßig SHA-1 (was die meisten Apps nutzen), aber wenn dein Secret für SHA-256 oder SHA-512 ausgegeben wurde, musst du das hier ebenfalls auswählen. Drittens die Stellen und das Intervall: 6 gegenüber 8 Stellen oder ein Fenster von 30 s gegenüber 60 s ergeben völlig unterschiedliche Codes. Viertens das Secret selbst — ein einziges falsch eingetipptes Base32-Zeichen ändert jeden Code. Bring alle vier in Einklang, dann stimmen die Codes überein.
Was ist der Unterschied zwischen TOTP und HOTP?
Beide stammen aus derselben HMAC-basierten Einmalpasswort-Familie, unterscheiden sich aber darin, was den Code antreibt. HOTP (RFC 4226) ist zählerbasiert: Jeder Code ist an einen hochzählenden Zähler gebunden, sodass ein Code gültig bleibt, bis er verwendet wird und der Zähler weiterläuft. TOTP (RFC 6238) ist zeitbasiert: Es ersetzt den Zähler durch die aktuelle Zeit, unterteilt in feste Schritte, sodass die Codes automatisch alle 30 Sekunden rotieren. TOTP ist eigentlich nur HOTP, bei dem der Zähler auf die Anzahl der Zeitschritte seit der Unix-Epoche gesetzt ist. Dieses Tool erzeugt TOTP, was Google Authenticator, Authy und 1Password standardmäßig verwenden.
Kann ich 8-stellige Codes oder SHA-256 / SHA-512 verwenden?
Ja. Öffne die erweiterten Optionen, um den Algorithmus auf SHA-256 oder SHA-512 umzustellen, die Stellen auf 8 zu setzen oder das Intervall auf 60 Sekunden zu ändern. Diese Stellschrauben existieren, weil manche Enterprise- und Bankensysteme längere Codes oder stärkere Hashes verlangen. Allerdings verwendet die überwältigende Mehrheit der Dienste — und jede gängige Verbraucher-Authenticator-App — die Standardwerte SHA-1, 6 Stellen und ein 30-Sekunden-Intervall, lass sie also so, sofern die Einrichtungsanweisungen deines Anbieters nichts anderes besagen. Was du auch wählst, die vom Tool erzeugte otpauth://-URI hält diese Parameter fest, damit deine App das Secret korrekt hinterlegt.
Wie füge ich dieses Secret zu Google Authenticator, Authy oder 1Password hinzu?
Wechsle zum Tab Einrichten, um ein Secret zu erzeugen (oder einzufügen), und scanne dann den QR-Code oder kopiere die otpauth://-URI. Tippe in Google Authenticator oder Authy auf die Hinzufügen-Schaltfläche und wähle QR-Code scannen, um deine Kamera auf den QR-Code auf dem Bildschirm zu richten, oder wähle Einrichtungsschlüssel eingeben und füge das Base32-Secret mit dem passenden Kontonamen und Algorithmus ein. Bearbeite in 1Password einen Login-Eintrag, füge ein Feld Einmalpasswort hinzu und füge die otpauth://-URI direkt ein. Brauchst du ein eigenständiges QR-Bild für die Dokumentation? Nutze unseren QR-Code-Generator, und für die zufälligen Secrets und Wiederherstellungscodes drumherum den Zufallspasswort-Generator.

Verwandte Werkzeuge

Alle Werkzeuge anzeigen →