TOTP vs HOTP: Differences Explained

Compare TOTP and HOTP one-time password algorithms. Understand their differences in security, usability, and implementation to choose the right approach for your 2FA system.

TOTP Basics

Detailed Explanation

TOTP vs HOTP: Choosing the Right OTP Algorithm

Both TOTP and HOTP generate one-time passwords from a shared secret, but they use different counters. Understanding their differences helps you choose the right algorithm for your application.

HOTP: Counter-Based (RFC 4226)

HOTP (HMAC-Based One-Time Password) uses an incrementing counter as the moving factor:

HOTP = Truncate(HMAC-SHA1(secret, counter))
  • The counter starts at 0 and increments by 1 each time a code is generated
  • The server must track the counter for each user
  • Codes do not expire — they remain valid until used
  • The server needs a look-ahead window to handle cases where the client generates codes without the server verifying them

TOTP: Time-Based (RFC 6238)

TOTP replaces the counter with a time-derived value:

TOTP = Truncate(HMAC-SHA1(secret, floor(time / period)))
  • The counter is floor(current_unix_time / 30)
  • Codes expire automatically after the time period (typically 30 seconds)
  • No counter synchronization needed between client and server
  • The server allows a small window (e.g., +/- 1 period) to account for clock drift

Key Differences

Feature HOTP TOTP
Moving factor Counter Time
Code expiry Never (until used) 30 seconds
Sync requirement Counter state Clock sync
Replay resistance Weak (codes remain valid) Strong (codes expire)
Offline risk Codes can be pre-generated Codes tied to current time
Standard RFC 4226 RFC 6238

Security Comparison

TOTP is generally considered more secure for web applications because:

  • Expired codes cannot be replayed
  • No server-side counter to get out of sync
  • A stolen code has a very short validity window

HOTP may be preferred for hardware tokens or offline scenarios where the device has no reliable clock, such as disconnected smart cards or key fobs.

Recommendation

For modern web and mobile applications, TOTP is the standard choice. It is supported by all major authenticator apps and requires less server-side state. Use HOTP only when your deployment environment lacks a reliable time source.

Use Case

Architects and security engineers deciding on an OTP algorithm for their authentication system need to understand the tradeoffs between TOTP and HOTP. This comparison is particularly relevant when evaluating hardware token compatibility, assessing replay attack risks, or migrating from an older HOTP-based system to TOTP. The choice impacts server infrastructure (counter storage vs. clock sync) and user experience (code expiry behavior).

Try It — TOTP Generator

Open full tool