TOTP & HOTP

TOTP (Time-based One-Time Password, RFC 6238) and HOTP (HMAC-based One-Time Password, RFC 4226) are the two RFCs every 2FA enrolment QR implements. The encoded otpauth:// URI scheme is Google Authenticator's de-facto standard — universal across every major authenticator app.

TOTP spec: RFC 6238 (time-based, 2011).
HOTP spec: RFC 4226 (counter-based, 2005).
URI scheme: Google Authenticator Key URI Format — the format every authenticator agrees on.

What it is

A 2FA enrolment QR is a URL in the otpauth:// scheme that carries the shared secret plus identifying metadata. Format:

otpauth://TYPE/LABEL?secret=SECRET&issuer=ISSUER&algorithm=ALG&digits=N&period=SEC

Canonical test vectors

CaseInputsExpected otpauth:// URI
TOTP, minimal (SHA1, 6 digits, 30 s)issuer=GitHub
account=alice@example.com
secret=JBSWY3DPEHPK3PXP
otpauth://totp/GitHub:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=GitHub
TOTP, SHA256, 8 digitsissuer=Corp
account=bob
secret=JBSWY3DPEHPK3PXP
algorithm=SHA256
digits=8
otpauth://totp/Corp:bob?secret=JBSWY3DPEHPK3PXP&issuer=Corp&algorithm=SHA256&digits=8
HOTP, counter=0issuer=YubiKey
account=carol
secret=JBSWY3DPEHPK3PXP
counter=0
otpauth://hotp/YubiKey:carol?secret=JBSWY3DPEHPK3PXP&issuer=YubiKey&counter=0
TOTP, RFC 6238 reference secretissuer=Example
account=test
secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ
digits=8
Standard RFC test secret (12345678901234567890). Produces TOTP 94287082 at T=59 s.

Live Base32 secret validator

Authenticator apps reject secrets that contain anything outside the Base32 alphabet (A-Z, 2-7). Below is the same validator Abundera runs inline inside the TOTP generator — runs in your browser.

Enter a secret to validate.

Common pitfalls

Authenticator compatibility

AppTOTP SHA1TOTP SHA256/512HOTP8-digitNotes
Google AuthenticatorYesIgnoredYesIgnoredThe de facto baseline. Always targets this first.
1PasswordYesYesYesYesFull RFC support.
AuthyYesYesNoYesDrops HOTP in newer versions.
BitwardenYesYesYesYesFull RFC support.
Microsoft AuthenticatorYesYesYesYesFull RFC support.
YubiKey AuthenticatorYesYesYesYesHOTP is the canonical YubiKey mode.
Duo MobileYesIgnoredNoIgnoredUses its own push flow; TOTP is fallback only.

See also

Spec references verified 2026-04-18. RFC 6238 (2011), RFC 4226 (2005), Google Key URI Format.