Generator/TOTP generator
Paste a Base32 secret or an otpauth:// link and read the code. Every parameter RFC 6238 allows is adjustable — SHA-1, SHA-256 or SHA-512, six or eight digits, any time step — which is the difference between this and an authenticator app that assumes the defaults and gives you no way to say otherwise.
A TOTP secret on its own is not enough to produce a code. Three more values decide what comes out, and services rarely mention them because the defaults are nearly universal — until they are not.
| Secret | Base32 — A–Z and 2–7. Case, spaces and dashes are ignored, and trailing = padding is optional. Anything outside that alphabet is a transcription error rather than a key. |
|---|---|
| Digits | 6 almost everywhere, 8 on some enterprise and banking deployments. A leading zero is part of the code; dropping it is a rejection. |
| Period | 30 seconds by default. 60 appears occasionally. The period sets how the time is divided into steps, so a mismatch produces codes that are wrong most of the time and right by coincidence. |
| Algorithm | SHA-1 by default, SHA-256 and SHA-512 permitted. Most apps ignore the algorithm field in an otpauth:// link entirely, which is why SHA-512 services like Kraken break them. |
If a generator produces the wrong code from a key you are certain of, work through the list in this order: device clock, then algorithm, then period, then digits. The clock explains most of it; Kraken’s SHA-512 secrets explain most of the rest.
The QR code a service shows at enrollment encodes a URI, and that URI carries the parameters along with the secret:
otpauth://totp/Kraken:[email protected]?secret=JBSWY3DP…&issuer=Kraken&algorithm=SHA512&digits=6&period=30
Paste that whole string rather than picking the secret out of it and the label, issuer, algorithm, digits and period are all set from the link — no guessing, and no silent default overriding what the service actually issued. Uploading or scanning the QR image does the same thing, since the image contains nothing but this text.
RFC 6238 publishes test vectors precisely so that implementations can be verified rather than believed. The secret is the ASCII string 12345678901234567890, which is GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ in Base32. Set digits to 8, algorithm to SHA-1, period to 30, and a correct generator produces 94287082 at Unix time 59 and 89005924 at 1234567890.
The full table, including the SHA-256 and SHA-512 rows and the longer secrets they require, is on the TOTP explainer.
It is not a vault. Clearing site data, using another browser or switching machines loses whatever you saved, and anything saved here is stored in readable form. Keep an authenticator app enrolled and keep the recovery codes the service issued — the comparison pages are blunt about which tool wins where.
What a browser generator is good at is the moment the app is not available: a laptop with the phone in another room, a dead battery, a device being repaired, or a key you have just been given and want to check before committing to it.