JSON Formatter
Pretty-print, validate and minify JSON with precise error positions.
Developer & Security
Live 2FA codes from a Base32 secret, with the countdown.
This is a debugging and recovery tool. It is useful for checking that a secret you have stored is the right one, for testing a TOTP implementation you are building, and for reading a code when your phone is not to hand.
It is not a replacement for an authenticator app. A secret pasted into a browser page is a secret sitting in a browser page — no worse than this tool makes it, but no better either.
If you are storing long-term secrets, use a dedicated authenticator or a password manager with TOTP support. Both keep the secret in protected storage rather than in a text field.
The QR code on a 2FA setup screen encodes an otpauth:// URI containing the secret, the issuer, the account and any non-default parameters.
Most services show a "can’t scan it?" link that reveals the same secret as text. That is the string to paste here.
Store the secret somewhere durable when you set 2FA up. Losing it means recovery codes or an account-recovery process, and the moment to think about that is before it happens rather than after.
Nine times out of ten, clock drift. TOTP derives the code from the current time, so a device more than about 30 seconds out of sync produces codes the server will not accept. Sync your clock and try again.
Yes. RFC 6238 specifies HMAC-SHA1, and HMAC does not depend on the collision resistance that is broken in SHA-1. This is a different use of the algorithm from certificate signing.
No. The code is computed in your browser with Web Crypto. Nothing is transmitted — which is essential, since the secret is the entire security of your second factor.
For testing and recovery, yes. As a daily driver, no — a secret pasted into a web page is not protected storage. Use an authenticator app or a password manager with TOTP support.
It does not. Base32 uses A–Z and 2–7 precisely to avoid characters confusable with letters, so a 0, 1 or 8 means the secret was transcribed incorrectly.