Instant Debug Aid
Verify that your TOTP implementation produces the correct code without installing a separate authenticator app or configuring a physical device during development.
500+ fast, free tools. Most run in your browser only; Image & PDF tools upload files to the backend when you run them.
Authenticator-style rotating codes from Base32 secrets.
TOTP Generator on UtilityKit computes RFC 6238 Time-based One-Time Passwords directly in your browser from any Base32-encoded secret. Paste the secret key shown during 2FA setup — as a text string like JBSWY3DPEHPK3PXP or from an otpauth:// URI — and instantly see the live 6-digit code along with a 30-second countdown showing exactly how long until it rotates. Previous and next window codes are shown alongside the current one so you can confirm a code that is about to expire or test an integration that accepts one window of grace. Everything runs client-side via the Web Crypto API; no secret is ever transmitted to a server. Useful for developers building TOTP-based 2FA, QA engineers validating login flows, and sysadmins testing backup codes.
Verify that your TOTP implementation produces the correct code without installing a separate authenticator app or configuring a physical device during development.
Your Base32 secret never leaves your browser. All HMAC-SHA1 computation runs locally via the Web Crypto API — no network request is made.
A real-time 30-second countdown ring shows exactly when the code rotates, preventing failed logins from submitting an expiring code at the last second.
Previous and next codes are displayed alongside the current one, making it easy to test grace-period logic in authentication backends.
Implements RFC 4226 (HOTP) and RFC 6238 (TOTP) exactly — same algorithm used by Google Authenticator, Authy, Microsoft Authenticator, and hardware OTP tokens.
Works in any modern browser on desktop or mobile — no app install, no account, no clipboard permission popups beyond what the browser provides.
Input: Secret: JBSWY3DPEHPK3PXP (the RFC 6238 test vector secret)
Output: Current code changes every 30 s — e.g. 282760 at T=0. Matches Google Authenticator output for the same secret and system time.
Input: Secret: MY2GCZTBORQXEYLS, backend reports 'code expired'
Output: Previous code shown as 491823, current as 739104, next as 058217. Submit the current code; if backend still rejects, check clock skew exceeds one window (30 s).
Input: otpauth://totp/Example:user@example.com?secret=ORSXG5A&issuer=Example
Output: Paste ORSXG5A into the Secret field — live 6-digit code appears immediately with a 30-second countdown.