Security Tools
2FA QR Code Generator
Generate a Base32 secret, build the otpauth:// URI, and render a QR for Google Authenticator, Authy, 1Password, Microsoft Authenticator, Duo, and FreeOTP.
2FA QR code generator
Use test secrets only
The Base32 secret is generated locally with the browser's crypto.getRandomValues and the QR is rendered on this page. Nothing is uploaded. Still, treat 2FA secrets like passwords: do not paste the secret from a real account into any tool you do not personally control end-to-end.
Account details
What the authenticator will show
The service name your users will see in their authenticator app, like "GitHub" or "AWS". Avoid colons.
The user identifier shown under the issuer. An email or username is typical. Avoid colons.
Shared secret
Base32 key the app and server share
Whitespace, dashes, underscores, and trailing "=" padding are stripped before encoding. Lowercase letters are upper-cased.
Generate a new random secret
RFC 6238 default. Matches SHA-1 block size.
One-time password parameters
Match your server library
OTP type
TOTP rotates every period and is the dominant variant. HOTP advances by counter and is used by some hardware tokens and bank apps.
Algorithm
Default for Google Authenticator, Authy, 1Password, Microsoft Authenticator, and almost every consumer 2FA setup. Always start here unless your server library requires otherwise.
Digits
Default. Universal support.
Period
Seconds between code rotations. 30 is the universal default.
Appearance
Tune the printed code
Error correction
M (medium, about 15% recovery) is the sweet spot for screen and print. Pick Q or H for posters that may be scratched or partially covered.
otpauth provisioning URI
otpauth://totp/Acme%20Corp:alex%40example.com?secret=C7F43LQ3GRGHK7WJCXV2EILGB377WCDX&issuer=Acme+Corp
This URI follows the Google "Key Uri Format" for provisioning RFC 6238 (TOTP) and RFC 4226 (HOTP). Any compliant authenticator can import it from the QR or by paste.
How to use
- Enter the Issuer (the service name your users will see, like GitHub or AWS) and the Account label (an email or username). Avoid colons in either field.
- Paste an existing Base32 secret or click Generate random secret. Pick 128- or 160-bit length for typical SaaS use; 256-bit for high-strength setups.
- Choose OTP type. TOTP is right for almost every app; pick HOTP only if your server library is counter-based, then set the starting counter.
- Set the algorithm, digits, and period (or counter) to match your server library. SHA-1, 6 digits, 30 seconds is the universal default.
- Scan the QR with Google Authenticator, Authy, 1Password, or any compatible app. Or copy the otpauth URI and paste it into a setup link.
- Print the grouped manual-entry secret next to the QR so users who cannot scan have a fallback. Download the QR as PNG or SVG for setup pages and onboarding emails.
- Test the result by pasting the same secret into the TOTP Generator on this site to confirm the rotating code matches what the authenticator app shows.
About this tool
2FA QR Code Generator builds the standard otpauth:// provisioning URI and renders it as a scannable QR code so any RFC 6238 compliant authenticator app (Google Authenticator, Authy, 1Password, Microsoft Authenticator, Duo Mobile, FreeOTP, Aegis, Bitwarden) can enroll a new two-factor entry in one scan. Pick TOTP (time-based, the dominant variant) or HOTP (counter-based, used by some hardware tokens and bank apps); set the issuer (the service name shown in the app) and account label (usually a username or email); paste an existing Base32 secret or generate a fresh 80-, 128-, 160-, or 256-bit random secret with the browser's crypto.getRandomValues. Tune algorithm (SHA-1 default, SHA-256, SHA-512), digits (6 default, 7, or 8), and TOTP period (15, 30, 60, 90 seconds) or HOTP starting counter to match your server library. The page emits the full otpauth URI using the Google Key Uri Format, with proper percent-encoding of the Issuer:Account label and matching issuer query parameter for maximum client interop, plus a printable manual-entry version of the secret grouped in fours for users who cannot scan and have to type the key. Adjust the QR appearance (error correction L/M/Q/H, module pixel size, quiet-zone margin, foreground and background colors) and export PNG or SVG for setup pages, posters, or onboarding emails. Inline validation flags invalid Base32 characters, undersized secrets (RFC 4226 recommends 80 bits or more), oversized secrets, empty issuer or account, colons in the label, and HOTP counters out of range, so the QR you ship is the one a real authenticator app will accept. Everything happens locally in your browser: the secret is generated, encoded, and rendered on this page and is never sent to a server. Pair this tool with the TOTP Generator on this site to verify that the codes your authenticator emits match what your server will compute from the same secret, and with the Backup Codes Generator to print one-time fallback codes for users who lose their phone.
Free to use. Works in your browser. No signup, no login.
Related tools
You may also like
TOTP Generator
Live RFC 6238 TOTP codes with previous, current, and next windows.
Open tool
SecurityBackup Codes Generator
Random recovery codes in the styles real 2FA providers issue. Copy or download as a .txt file.
Open tool
GeneratorQR Code Generator
QR codes for URLs, text, email, phone, SMS, WiFi, and vCard with PNG and SVG download.
Open tool
SecurityPassword Generator
Strong random passwords with length and character controls.
Open tool
SecurityPassword Strength Checker
Live strength meter with entropy, crack times, and common-password detection.
Open tool