ShareYourGroupShareYourGroupTwo-Factor Codes

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 timeModeCode (8 digits, 30 s step)
59SHA194287082
59SHA25646119246
59SHA51290693936
1111111109SHA107081804
1111111109SHA25668084774
1111111109SHA51225091201
1111111111SHA114050471
1234567890SHA189005924
1234567890SHA25691819424
1234567890SHA51293441116
2000000000SHA169279037
20000000000SHA165353130

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

  1. Set the time step to 30 seconds and digits to 8.
  2. Compute the code for a given Unix time (time divided by 30, rounded down, is the counter).
  3. 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.