RFC 6238 test vectors
Values you can use to test your own implementation. We recalculated them with Python and they match the RFC.
The table
| Unix time | Mode | Code (8 digits, 30 s step) |
|---|---|---|
| 59 | SHA1 | 94287082 |
| 59 | SHA256 | 46119246 |
| 59 | SHA512 | 90693936 |
| 1111111109 | SHA1 | 07081804 |
| 1111111109 | SHA256 | 68084774 |
| 1111111109 | SHA512 | 25091201 |
| 1111111111 | SHA1 | 14050471 |
| 1234567890 | SHA1 | 89005924 |
| 1234567890 | SHA256 | 91819424 |
| 1234567890 | SHA512 | 93441116 |
| 2000000000 | SHA1 | 69279037 |
| 20000000000 | SHA1 | 65353130 |
One detail that trips people up
The text of RFC 6238 says the test secret is the ASCII string 12345678901234567890 for all modes. The SHA-256 test values were in fact made with that string repeated to 32 bytes (12345678901234567890123456789012) and the SHA-512 values with it repeated to 64 bytes. This is also what the reference code in the RFC does. We checked both readings: the 20-byte secret alone gives none of the 12 SHA-256 and SHA-512 values, the repeated seeds give all of them.
Use them
- Set the time step to 30 seconds and digits to 8.
- Compute the code for a given Unix time (time divided by 30, rounded down, is the counter).
- Compare with the table. The tester on the home page shows the same codes when you enter the secret and a clock difference.
What is the secret in Base32?
The 20-byte seed is GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ.
Are these for real accounts?
No. They are public test values. Never use a published secret for a real account.
This is an independent guide. It is not connected with the IETF, NIST, CISA, any authenticator app or any company named here. Facts were read on 14 November 2026 from the documents named on each page; codes and examples were calculated with Python and with the page's own code, and checked against the RFC test vectors.