Tables
Reference values for T32, each computed by the TypeScript implementation when the site is built.
1Alphabet
Crockford base32: the digits and 22 letters, in order, each standing for five bits. I, L, O and U are never written. On input, upper and lower case are both accepted, O is read as 0, and I or L as 1, which helps with stamps copied by hand. U is rejected.
| Character | Value | Bits |
|---|---|---|
| 0 | 0 | 00000 |
| 1 | 1 | 00001 |
| 2 | 2 | 00010 |
| 3 | 3 | 00011 |
| 4 | 4 | 00100 |
| 5 | 5 | 00101 |
| 6 | 6 | 00110 |
| 7 | 7 | 00111 |
| 8 | 8 | 01000 |
| 9 | 9 | 01001 |
| A | 10 | 01010 |
| B | 11 | 01011 |
| C | 12 | 01100 |
| D | 13 | 01101 |
| E | 14 | 01110 |
| F | 15 | 01111 |
| Character | Value | Bits |
|---|---|---|
| G | 16 | 10000 |
| H | 17 | 10001 |
| J | 18 | 10010 |
| K | 19 | 10011 |
| M | 20 | 10100 |
| N | 21 | 10101 |
| P | 22 | 10110 |
| Q | 23 | 10111 |
| R | 24 | 11000 |
| S | 25 | 11001 |
| T | 26 | 11010 |
| V | 27 | 11011 |
| W | 28 | 11100 |
| X | 29 | 11101 |
| Y | 30 | 11110 |
| Z | 31 | 11111 |
2Length and resolution
A stamp's length says how finely the time was recorded. It says nothing about how accurate the clock was. Each character adds five bits and divides the unit by 32. Five lengths also have a fixed-width binary form, named T32-n in the specification.
| Length | Unit (exact) | Unit (approx.) | Bits | Binary form |
|---|---|---|---|---|
| 1 | s | ≈ 1,089 years | 5 | |
| 2 | s | ≈ 34 years | 10 | |
| 3 | s | ≈ 388 days | 15 | |
| 4 | s | ≈ 12.1 days | 20 | |
| 5 | s | ≈ 9.1 hours | 25 | |
| 6 | s | ≈ 17.1 minutes | 30 | |
| 7 | s | 32 seconds | 35 | |
| 8 | 1 s | 1 second | 40 | T32-8 |
| 9 | s | ≈ 31.3 ms | 45 | |
| 10 | s | ≈ 977 µs | 50 | T32-10 |
| 11 | s | ≈ 30.5 µs | 55 | |
| 12 | s | ≈ 954 ns | 60 | T32-12 |
| 13 | s | ≈ 29.8 ns | 65 | |
| 14 | s | ≈ 931 ps | 70 | T32-14 |
| 15 | s | ≈ 29.1 ps | 75 | |
| 16 | s | ≈ 0.909 ps | 80 | T32-16 |
An encoder must not write more characters than its clock can measure. The longest it may use is the length whose unit is closest to the clock's resolution.
| Source resolution | Maximum length | Unit at that length |
|---|---|---|
| 1 second | 8 | 1 second |
| 100 ms | 9 | ≈ 31.3 ms |
| 10 ms | 9 | ≈ 31.3 ms |
| 1 ms | 10 | ≈ 977 µs |
| 1 µs | 12 | ≈ 954 ns |
| 1 ns | 14 | ≈ 931 ps |
| 1 ps | 16 | ≈ 0.909 ps |
3Eras (first character)
Each era is seconds, about 1,089 years, and every stamp written in it starts with its character. Years are UTC, in the proleptic Gregorian calendar, so era G, the present one, begins in 1999: the epoch, midnight TAI, is 23:59:28 UTC on 31 December.
| Era | From | Until |
|---|---|---|
| 0 | 15,423 BCE | 14,334 BCE |
| 1 | 14,334 BCE | 13,245 BCE |
| 2 | 13,245 BCE | 12,156 BCE |
| 3 | 12,156 BCE | 11,067 BCE |
| 4 | 11,067 BCE | 9,978 BCE |
| 5 | 9,978 BCE | 8,890 BCE |
| 6 | 8,890 BCE | 7,801 BCE |
| 7 | 7,801 BCE | 6,712 BCE |
| 8 | 6,712 BCE | 5,623 BCE |
| 9 | 5,623 BCE | 4,534 BCE |
| A | 4,534 BCE | 3,446 BCE |
| B | 3,446 BCE | 2,357 BCE |
| C | 2,357 BCE | 1,268 BCE |
| D | 1,268 BCE | 179 BCE |
| E | 179 BCE | 911 |
| F | 911 | 1999 |
| Era | From | Until |
|---|---|---|
| G | 1999 | 3088 |
| H | 3088 | 4177 |
| J | 4177 | 5266 |
| K | 5266 | 6355 |
| M | 6355 | 7444 |
| N | 7444 | 8532 |
| P | 8532 | 9621 |
| Q | 9621 | 10,710 |
| R | 10,710 | 11,799 |
| S | 11,799 | 12,888 |
| T | 12,888 | 13,976 |
| V | 13,976 | 15,065 |
| W | 15,065 | 16,154 |
| X | 16,154 | 17,243 |
| Y | 17,243 | 18,332 |
| Z | 18,332 | 19,421 |
4Two-character prefixes, 1900–2100
Each is seconds, about 34 years. Boundaries are given to the day.
| Prefix | From (UTC) | Until (UTC) |
|---|---|---|
| FX | 1897-12-03 | 1931-12-13 |
| FY | 1931-12-13 | 1965-12-22 |
| FZ | 1965-12-22 | 1999-12-31 |
| G0 | 1999-12-31 | 2034-01-09 |
| G1 | 2034-01-09 | 2068-01-19 |
| G2 | 2068-01-19 | 2102-01-28 |
5Three-character prefixes, 2020–2035
Each is seconds, about 388 days. Useful as partition keys and for range queries.
| Prefix | From (UTC) | Until (UTC) |
|---|---|---|
| G0J | 2019-02-20 12:08Z | 2020-03-14 20:49Z |
| G0K | 2020-03-14 20:49Z | 2021-04-07 05:30Z |
| G0M | 2021-04-07 05:30Z | 2022-04-30 14:10Z |
| G0N | 2022-04-30 14:10Z | 2023-05-23 22:51Z |
| G0P | 2023-05-23 22:51Z | 2024-06-15 07:31Z |
| G0Q | 2024-06-15 07:31Z | 2025-07-08 16:12Z |
| G0R | 2025-07-08 16:12Z | 2026-08-01 00:52Z |
| G0S | 2026-08-01 00:52Z | 2027-08-24 09:33Z |
| G0T | 2027-08-24 09:33Z | 2028-09-15 18:13Z |
| G0V | 2028-09-15 18:13Z | 2029-10-09 02:54Z |
| G0W | 2029-10-09 02:54Z | 2030-11-01 11:34Z |
| G0X | 2030-11-01 11:34Z | 2031-11-24 20:15Z |
| G0Y | 2031-11-24 20:15Z | 2032-12-17 04:55Z |
| G0Z | 2032-12-17 04:55Z | 2034-01-09 13:36Z |
| G10 | 2034-01-09 13:36Z | 2035-02-01 22:16Z |
| G11 | 2035-02-01 22:16Z | 2036-02-25 06:57Z |
6Common durations
A duration is a signed whole number of s, written exactly. It is read like a stamp with a sign and a point: the characters before the point count whole seconds in base32, and each one after it is a 32nd of the one before. So +1W is 1 × 32 + 28 = 60 seconds. A decimal value that is not a whole number of units, such as a millisecond, is truncated toward zero.
| Duration | Seconds | T32 duration |
|---|---|---|
| 1 second | 1 | +1 |
| 1 minute | 60 | +1W |
| 1 hour | 3,600 | +3GG |
| 1 day (86,400 SI s) | 86,400 | +2MC0 |
| 1 week | 604,800 | +JEM0 |
| 30 days | 2,592,000 | +2F380 |
| 365 days | 31,536,000 | +Y2CW0 |
| Julian year (365.25 d) | 31,557,600 | +Y31Z0 |
| 1/32 second | 0.03125 | +0.1 |
| 1/1024 second | 0.000977 | +0.00ZZZZET |
| 1 millisecond (truncated) | 0.001 | +0.010RJDTB |
7Notable moments
Each moment is encoded at length 8. Before 1972, TAI − UTC was fractional, so a one-second stamp starts part-way through a UTC second.
| Moment | Stamp starts (UTC) | T32 |
|---|---|---|
| Start of range | -15422-12-06T11:41:52Z | 00000000 |
| Royal Observatory foundation stone (Gregorian) | 1675-08-20T00:00:00Z | FPEY6N00 |
| Start of the 1961 UTC definition | 1961-01-01T00:00:00Z | FYVAAJG1 |
| Apollo 11 lunar landing | 1969-07-20T20:17:39.425406217Z | FZ3BMMKB |
| Unix epoch | 1969-12-31T23:59:59.999918Z | FZ3S5F48 |
| UTC becomes TAI − 10 s | 1972-01-01T00:00:00Z | FZ5NA8WA |
| GPS epoch | 1980-01-06T00:00:00Z | FZD6FYGK |
| T32 epoch (2000-01-01 TAI) | 1999-12-31T23:59:28Z | G0000000 |
| Last leap second (so far) | 2016-12-31T23:59:60Z | G0FZP0S4 |
| Signed 32-bit Unix time overflows | 2038-01-19T03:14:08Z | G13S5F55 |
| End of range | +19421-01-25T12:17:30Z | ZZZZZZZZ |
8Leap seconds
All 27 leap seconds inserted so far. Each has its own T32 stamp, because to T32 a leap second is an ordinary second. IERS Bulletin C 72 announced no leap second for the end of 2026, and the CGPM has made UTC continuous from 2027-05-20, so no more are expected.
| # | Inserted second (UTC) | T32 | TAI − UTC after |
|---|---|---|---|
| 1 | 1972-06-30 23:59:60 | FZ64A54A | 11 s |
| 2 | 1972-12-31 23:59:60 | FZ6KFA4B | 12 s |
| 3 | 1973-12-31 23:59:60 | FZ7HHQ0C | 13 s |
| 4 | 1974-12-31 23:59:60 | FZ8FM3WD | 14 s |
| 5 | 1975-12-31 23:59:60 | FZ9DPGRE | 15 s |
| 6 | 1976-12-31 23:59:60 | FZABVJ0F | 16 s |
| 7 | 1977-12-31 23:59:60 | FZB9XYWG | 17 s |
| 8 | 1978-12-31 23:59:60 | FZC80BRH | 18 s |
| 9 | 1979-12-31 23:59:60 | FZD62RMJ | 19 s |
| 10 | 1981-06-30 23:59:60 | FZEK51RK | 20 s |
| 11 | 1982-06-30 23:59:60 | FZFH7EMM | 21 s |
| 12 | 1983-06-30 23:59:60 | FZGF9VGN | 22 s |
| 13 | 1985-06-30 23:59:60 | FZJBH9MP | 23 s |
| 14 | 1987-12-31 23:59:60 | FZMPV8CQ | 24 s |
| 15 | 1989-12-31 23:59:60 | FZPK2PGR | 25 s |
| 16 | 1990-12-31 23:59:60 | FZQH53CS | 26 s |
| 17 | 1992-06-30 23:59:60 | FZRY7CGT | 27 s |
| 18 | 1993-06-30 23:59:60 | FZSW9SCV | 28 s |
| 19 | 1994-06-30 23:59:60 | FZTTC68W | 29 s |
| 20 | 1995-12-31 23:59:60 | FZW7KR4X | 30 s |
| 21 | 1997-06-30 23:59:60 | FZXMP18Y | 31 s |
| 22 | 1998-12-31 23:59:60 | FZZ1XK4Z | 32 s |
| 23 | 2005-12-31 23:59:60 | G05MKP10 | 33 s |
| 24 | 2008-12-31 23:59:60 | G08EXH11 | 34 s |
| 25 | 2012-06-30 23:59:60 | G0BR4KX2 | 35 s |
| 26 | 2015-06-30 23:59:60 | G0EJBTH3 | 36 s |
| 27 | 2016-12-31 23:59:60 | G0FZP0S4 | 37 s |
9TAI − UTC, 1961–1971, and its steps
Before 1972, UTC ran at an adjusted rate, and the difference from TAI, in seconds, followed a formula:
MJD is the Modified Julian Date of the UTC instant, and a, m and r come from the row in force on that date. Before 1961 the difference is defined as 0.
| From | a (s) | m (MJD) | r (s/day) |
|---|---|---|---|
| 1961-01-01 | 1.4228180 | 37300 | 0.0012960 |
| 1961-08-01 | 1.3728180 | 37300 | 0.0012960 |
| 1962-01-01 | 1.8458580 | 37665 | 0.0011232 |
| 1963-11-01 | 1.9458580 | 37665 | 0.0011232 |
| 1964-01-01 | 3.2401300 | 38761 | 0.0012960 |
| 1964-04-01 | 3.3401300 | 38761 | 0.0012960 |
| 1964-09-01 | 3.4401300 | 38761 | 0.0012960 |
| 1965-01-01 | 3.5401300 | 38761 | 0.0012960 |
| 1965-03-01 | 3.6401300 | 38761 | 0.0012960 |
| 1965-07-01 | 3.7401300 | 38761 | 0.0012960 |
| 1965-09-01 | 3.8401300 | 38761 | 0.0012960 |
| 1966-01-01 | 4.3131700 | 39126 | 0.0025920 |
| 1968-02-01 | 4.2131700 | 39126 | 0.0025920 |
Where the formula changes, TAI − UTC can jump. A rise inserts time that UTC has no ordinary label for; a fall removes labels, which converters must reject. These are every step other than the 27 leap seconds:
| Boundary (UTC) | Step (s) | Effect |
|---|---|---|
| 1961-01-01 | +1.422818 | Inserted |
| 1961-08-01 | −0.05 | Removed: labels in the last 0.05 s of the day before never occurred |
| 1963-11-01 | +0.1 | Inserted |
| 1964-04-01 | +0.1 | Inserted |
| 1964-09-01 | +0.1 | Inserted |
| 1965-01-01 | +0.1 | Inserted |
| 1965-03-01 | +0.1 | Inserted |
| 1965-07-01 | +0.1 | Inserted |
| 1965-09-01 | +0.1 | Inserted |
| 1968-02-01 | −0.1 | Removed: labels in the last 0.1 s of the day before never occurred |
| 1972-01-01 | +0.107758 | Inserted |
10Test vectors
Encoding vectors, recomputed here by the TypeScript implementation. The specification also has decoder, parser, duration and error vectors.
| Case | UTC | Length | Stamp |
|---|---|---|---|
| T32 epoch | 1999-12-31T23:59:28Z | 8 | G0000000 |
| Unix epoch (before 1972) | 1970-01-01T00:00:00Z | 8 | FZ3S5F48 |
| Apollo 11 landing | 1969-07-20T20:17:40Z | 8 | FZ3BMMKB |
| UTC offset becomes whole seconds | 1972-01-01T00:00:00Z | 8 | FZ5NA8WA |
| Before last leap second | 2016-12-31T23:59:59Z | 8 | G0FZP0S3 |
| Last leap second | 2016-12-31T23:59:60Z | 8 | G0FZP0S4 |
| After last leap second | 2017-01-01T00:00:00Z | 8 | G0FZP0S5 |
| Example date | 2026-10-31T03:13:00Z | 8 | G0S7G6B1 |
| Example + 0.5 s (ms clock) | 2026-10-31T03:13:00.500Z | 10 | G0S7G6B1G0 |
| Example + 0.123 s (µs clock) | 2026-10-31T03:13:00.123000Z | 12 | G0S7G6B13XYE |
| Before 1972, exact (ns clock) | 1966-06-15T12:00:00.123456789Z | 14 | FZ0EDKA4VPC2A1 |
| Before 1961, taken as UT | 1675-08-20T00:00:00Z | 8 | FPEY6N00 |