PackageTrack
Sign in Get early access

totp-rs

RFC-compliant TOTP implementation with ease of use as a goal and additional QoL features.

6.0.0 9.3M downloads/mo #3234 most downloaded on crates.io constantoine/totp-rs

What this package is like to depend on

Last release 17 days ago

06 Aug 2026

Release timing varies

gaps range from 3 weeks to 11 months

Some releases are documented

notes for 14 of 27 stable releases

24 versions withdrawn

withdrawn after publishing

6 years old

51 releases · first in 2020

3 releases in the last 12 months

see the full history below

Release timeline

51 releases · Apr 2020 to Aug 2026
2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 51
  1. 6.0.0 06 Aug 2026
    Release notes

    Breaking

    This is a BIG API change. Please check MIGRATION.md for more details.

    What's new

    • MSRV was bumped to 1.88.
    • Edition was bumped to 2024.
    • [no_std] support with #87 and #88.
    • We now use the builder pattern to instanciate a Totp struct.
    • Error types were unified into one Error type.

    Changes

    • Types and methods were renamed to more idiomatic alternatives.
    • Functions that check the validity of a token now return the matched step to give user more tools to prevent token reuse. #63 ans #75.
    • Secret serializes to an unpadded base32 string in human-readable formats (JSON, TOML, ...) and to a raw byte string in binary formats. Deserialization accepts both, plus integer sequences from formats without a native byte type.
    • Totp now implements PartialEq and Eq, using Secret's constant-time comparison for the secret field.

    Special thanks

    Open source →
    Release notes

    Breaking

    This is a BIG API change. Please check MIGRATION.md for more details.

    What's new

    • MSRV was bumped to 1.88.
    • Edition was bumped to 2024.
    • [no_std] support with #87 and #88.
    • We now use the builder pattern to instanciate a Totp struct.
    • Error types were unified into one Error type.

    Changes

    • Types and methods were renamed to more idiomatic alternatives.
    • Functions that check the validity of a token now return the matched step to give user more tools to prevent token reuse. #63 ans #75.
    • Secret serializes to an unpadded base32 string in human-readable formats (JSON, TOML, ...) and to a raw byte string in binary formats. Deserialization accepts both, plus integer sequences from formats without a native byte type.
    • Totp now implements PartialEq and Eq, using Secret's constant-time comparison for the secret field.

    Special thanks

    Open source →
  2. 5.7.2 23 Jun 2026
    Release notes

    Fix

    • Parse algorithm from URLs more consistently. #90

    Special thanks

    • @deade1e for proposing a PR to fix that. It was changed in v6 but might as well fix it now.
    Open source →
    Release notes

    Fix

    • Parse algorithm from URLs more consistently. #90

    Special thanks

    • @deade1e for proposing a PR to fix that. It was changed in v6 but might as well fix it now.
    Open source →
  3. 5.7.1 09 Mar 2026
    Release notes

    Fix

    • Secret gets zeroized more consistently. #81

    Special thanks

    Note

    This last month has seen a lot of activity on the big 6.0. No date yet, but it has gone from a nebulous "it will happen"
    to a "most refactor has been done, a lot of code has been either removed or heavily changed, and the API is becoming clearer".

    Open source →
    Release notes

    Fix

    • Secret gets zeroized more consistently. #81

    Special thanks

    • @dev-void-7 for pointing out and giving feedback on #81.

    Note

    This last month has seen a lot of activity on the big 6.0. No date yet, but it has gone from a nebulous "it will happen" to a "most refactor has been done, a lot of code has been either removed or heavily changed, and the API is becoming clearer".

    Open source →
  4. 5.7.0 12 Apr 2025
    Release notes

    Breaking changes.

    • MSRV has been set to Rust 1.66.

    Changes

    • Updated base32 crate to 0.5.
    • Updated constant_time_eq crate to 0.3.
    • Updated rand crate to 0.9.
    • Added a bit of documentation.

    Note

    This is probably the last version update before the big 6.0, which will be a big rewrite, and the 2024 edition.
    The goal will be to expose the same feature as before, but in a more harmonized and idiomatic way.

    Open source →
    Release notes

    Breaking changes.

    • MSRV has been set to Rust 1.66.

    Changes

    • Updated base32 crate to 0.5.
    • Updated constant_time_eq crate to 0.3.
    • Updated rand crate to 0.9.
    • Added a bit of documentation.

    Note

    This is probably the last version update before the big 6.0, which will be a big rewrite, and the 2024 edition. The goal will be to expose the same feature as before, but in a more harmonized and idiomatic way.

    Open source →
  5. 5.6.0 24 Jul 2024
    Release notes

    Changes

    Open source →
    Release notes

    Changes

    Open source →
  6. 5.5.1 19 Jan 2024

    Nothing published for this version

  7. 5.5.0 19 Jan 2024
    Release notes

    Changes

    • Documentation now indicates required feature.

    Special thanks

    Full Changelog: v5.4.0...v5.5.0

    Open source →
    Release notes

    Changes

    • Documentation now indicates required feature.

    Special thanks

    Open source →
  8. 5.4.0 04 Oct 2023
    Release notes

    5.4.0 (04/10/2023)

    Changes

    • SecretParseError now implements std::error::Error.

    Special thanks

    Open source →
    Release notes

    Changes

    • SecretParseError now implements std::error::Error.

    Special thanks

    Open source →
    Release notes

    Compare

    Open source →
  9. 5.3.0 10 Sep 2023
    Release notes

    What's new

    • Creation of a new qrcodegen-image subcrate to handle image creation, as the wrapper is actually nice and could be used in placed not related to totp-rs. (#61)

    Changes

    • TOTP::get_qr was deprecated in favour of TOTP::get_qr_base64 and TOTP::get_qr_png.

    Special thanks

    • @tmpfs for their work on #60 and implementation in #61.
    Open source →
  10. 5.2.0 10 Aug 2023
    Release notes

    Changes

    • Updated url crate to 2.4.
    Open source →
  11. 5.1.0 15 Jul 2023
    Release notes

    What's new

    • Added some more documentation.

    Fix

    • Removed unnecessary allocation for Secret.Display for the Raw variant.
    Open source →
  12. 5.0.2 15 May 2023
    Release notes

    Fix

    • Fix skew overflowing if value is over 128.

    Special thanks

    Open source →
  13. 5.0.1 31 Mar 2023
    Release notes

    Changes

    • Normalize dependencies specifications since cargo uses range dependency by default.

    Special thanks

    • @bestia-dev for pointing out discrepancies in my dependency requirements.
    Open source →
  14. 5.0.0 28 Mar 2023

    Nothing published for this version

  15. 4.2.0 14 Jan 2023

    Nothing published for this version

  16. 4.1.0 06 Jan 2023

    Nothing published for this version

  17. 4.0.0 29 Dec 2022

    Nothing published for this version

  18. 3.1.0 03 Nov 2022

    Nothing published for this version

  19. 3.0.1 13 Aug 2022
    Release notes

    Fixes

    • TotpUrlError was unexported. This is now fixed. (#29)
    • base32 was reexported instead. It is now private, and will need to be an explicit dependency for the user to encore/decode base32 data.

    Changes

    • Secret comparison is now done in constant time.

    Special thanks

    Open source →
  20. 3.0.0 09 Aug 2022 withdrawn

    Nothing published for this version

  21. 2.0.1 16 Jun 2022

    Nothing published for this version

  22. 2.0.0 30 May 2022

    Nothing published for this version

  23. 1.4.0 06 May 2022

    Nothing published for this version

  24. 1.3.0 06 May 2022

    Nothing published for this version

  25. 1.2.1 05 May 2022
    Release notes

    What's changed

    • Disabled default image features to only enable png
    Open source →
  26. 1.2.0 05 May 2022

    Nothing published for this version

  27. 1.1.0 24 Apr 2022

    Nothing published for this version

  28. 1.0.0 15 Apr 2022

    Nothing published for this version

  29. 0.7.4 10 Feb 2022 withdrawn

    Nothing published for this version

  30. 0.7.3 20 Jan 2022 withdrawn

    Nothing published for this version

  31. 0.7.2 13 Jan 2022 withdrawn

    Nothing published for this version

  32. 0.7.1 13 Jan 2022 withdrawn

    Nothing published for this version

  33. 0.6.5 13 Jan 2022 withdrawn

    Nothing published for this version

  34. 0.6.4 20 Aug 2021 withdrawn

    Nothing published for this version

  35. 0.6.3 02 Nov 2020 withdrawn

    Nothing published for this version

  36. 0.6.2 12 Sep 2020 withdrawn

    Nothing published for this version

  37. 0.6.1 09 Aug 2020 withdrawn

    Nothing published for this version

  38. 0.6.0 08 Aug 2020 withdrawn

    Nothing published for this version

  39. 0.5.0 03 Jul 2020 withdrawn

    Nothing published for this version

  40. 0.4.1 23 Jun 2020 withdrawn

    Nothing published for this version

  41. 0.4.0 22 Jun 2020 withdrawn

    Nothing published for this version

  42. 0.3.2 21 Jun 2020 withdrawn

    Nothing published for this version

  43. 0.3.1 21 Jun 2020 withdrawn

    Nothing published for this version

  44. 0.3.0 21 Jun 2020 withdrawn

    Nothing published for this version

  45. 0.2.6 16 Jun 2020 withdrawn

    Nothing published for this version

  46. 0.2.5 25 Apr 2020 withdrawn

    Nothing published for this version

  47. 0.2.4 18 Apr 2020 withdrawn

    Nothing published for this version

  48. 0.2.3 14 Apr 2020 withdrawn

    Nothing published for this version

  49. 0.2.2 13 Apr 2020 withdrawn

    Nothing published for this version

  50. 0.2.1 13 Apr 2020 withdrawn

    Nothing published for this version

  51. 0.2.0 13 Apr 2020 withdrawn

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive