T32 · Draft 0.3 · Reference tables

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.

CharacterValueBits
0000000
1100001
2200010
3300011
4400100
5500101
6600110
7700111
8801000
9901001
A1001010
B1101011
C1201100
D1301101
E1401110
F1501111
CharacterValueBits
G1610000
H1710001
J1810010
K1910011
M2010100
N2110101
P2210110
Q2310111
R2411000
S2511001
T2611010
V2711011
W2811100
X2911101
Y3011110
Z3111111

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.

LengthUnit (exact)Unit (approx.)BitsBinary form
1235 s≈ 1,089 years5
2230 s≈ 34 years10
3225 s≈ 388 days15
4220 s≈ 12.1 days20
5215 s≈ 9.1 hours25
6210 s≈ 17.1 minutes30
725 s32 seconds35
81 s1 second40T32-8
92−5 s≈ 31.3 ms45
102−10 s≈ 977 µs50T32-10
112−15 s≈ 30.5 µs55
122−20 s≈ 954 ns60T32-12
132−25 s≈ 29.8 ns65
142−30 s≈ 931 ps70T32-14
152−35 s≈ 29.1 ps75
162−40 s≈ 0.909 ps80T32-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 resolutionMaximum lengthUnit at that length
1 second81 second
100 ms9≈ 31.3 ms
10 ms9≈ 31.3 ms
1 ms10≈ 977 µs
1 µs12≈ 954 ns
1 ns14≈ 931 ps
1 ps16≈ 0.909 ps

3Eras (first character)

Each era is 235 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.

The eight-character range, split by its first character. The bias puts the epoch at the exact centre: instants before 2000 start with 0 to F, and instants after it with G to Z.
EraFromUntil
015,423 BCE14,334 BCE
114,334 BCE13,245 BCE
213,245 BCE12,156 BCE
312,156 BCE11,067 BCE
411,067 BCE9,978 BCE
59,978 BCE8,890 BCE
68,890 BCE7,801 BCE
77,801 BCE6,712 BCE
86,712 BCE5,623 BCE
95,623 BCE4,534 BCE
A4,534 BCE3,446 BCE
B3,446 BCE2,357 BCE
C2,357 BCE1,268 BCE
D1,268 BCE179 BCE
E179 BCE911
F9111999
EraFromUntil
G19993088
H30884177
J41775266
K52666355
M63557444
N74448532
P85329621
Q962110,710
R10,71011,799
S11,79912,888
T12,88813,976
V13,97615,065
W15,06516,154
X16,15417,243
Y17,24318,332
Z18,33219,421

4Two-character prefixes, 1900–2100

Each is 230 seconds, about 34 years. Boundaries are given to the day.

PrefixFrom (UTC)Until (UTC)
FX1897-12-031931-12-13
FY1931-12-131965-12-22
FZ1965-12-221999-12-31
G01999-12-312034-01-09
G12034-01-092068-01-19
G22068-01-192102-01-28

5Three-character prefixes, 2020–2035

Each is 225 seconds, about 388 days. Useful as partition keys and for range queries.

PrefixFrom (UTC)Until (UTC)
G0J2019-02-20 12:08Z2020-03-14 20:49Z
G0K2020-03-14 20:49Z2021-04-07 05:30Z
G0M2021-04-07 05:30Z2022-04-30 14:10Z
G0N2022-04-30 14:10Z2023-05-23 22:51Z
G0P2023-05-23 22:51Z2024-06-15 07:31Z
G0Q2024-06-15 07:31Z2025-07-08 16:12Z
G0R2025-07-08 16:12Z2026-08-01 00:52Z
G0S2026-08-01 00:52Z2027-08-24 09:33Z
G0T2027-08-24 09:33Z2028-09-15 18:13Z
G0V2028-09-15 18:13Z2029-10-09 02:54Z
G0W2029-10-09 02:54Z2030-11-01 11:34Z
G0X2030-11-01 11:34Z2031-11-24 20:15Z
G0Y2031-11-24 20:15Z2032-12-17 04:55Z
G0Z2032-12-17 04:55Z2034-01-09 13:36Z
G102034-01-09 13:36Z2035-02-01 22:16Z
G112035-02-01 22:16Z2036-02-25 06:57Z

6Common durations

A duration is a signed whole number of 2−40 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.

DurationSecondsT32 duration
1 second1+1
1 minute60+1W
1 hour3,600+3GG
1 day (86,400 SI s)86,400+2MC0
1 week604,800+JEM0
30 days2,592,000+2F380
365 days31,536,000+Y2CW0
Julian year (365.25 d)31,557,600+Y31Z0
1/32 second0.03125+0.1
1/1024 second0.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.

MomentStamp starts (UTC)T32
Start of range-15422-12-06T11:41:52Z00000000
Royal Observatory foundation stone (Gregorian)1675-08-20T00:00:00ZFPEY6N00
Start of the 1961 UTC definition1961-01-01T00:00:00ZFYVAAJG1
Apollo 11 lunar landing1969-07-20T20:17:39.425406217ZFZ3BMMKB
Unix epoch1969-12-31T23:59:59.999918ZFZ3S5F48
UTC becomes TAI − 10 s1972-01-01T00:00:00ZFZ5NA8WA
GPS epoch1980-01-06T00:00:00ZFZD6FYGK
T32 epoch (2000-01-01 TAI)1999-12-31T23:59:28ZG0000000
Last leap second (so far)2016-12-31T23:59:60ZG0FZP0S4
Signed 32-bit Unix time overflows2038-01-19T03:14:08ZG13S5F55
End of range+19421-01-25T12:17:30ZZZZZZZZZ

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.

010203040196019701980199020002010202010 s37 s
TAI − UTC in seconds, from Appendix A. Until 1972 UTC ran at an adjusted rate, so the offset grew continuously; since then it has changed only by whole leap seconds, the last at the end of 2016.
#Inserted second (UTC)T32TAI − UTC after
11972-06-30 23:59:60FZ64A54A11 s
21972-12-31 23:59:60FZ6KFA4B12 s
31973-12-31 23:59:60FZ7HHQ0C13 s
41974-12-31 23:59:60FZ8FM3WD14 s
51975-12-31 23:59:60FZ9DPGRE15 s
61976-12-31 23:59:60FZABVJ0F16 s
71977-12-31 23:59:60FZB9XYWG17 s
81978-12-31 23:59:60FZC80BRH18 s
91979-12-31 23:59:60FZD62RMJ19 s
101981-06-30 23:59:60FZEK51RK20 s
111982-06-30 23:59:60FZFH7EMM21 s
121983-06-30 23:59:60FZGF9VGN22 s
131985-06-30 23:59:60FZJBH9MP23 s
141987-12-31 23:59:60FZMPV8CQ24 s
151989-12-31 23:59:60FZPK2PGR25 s
161990-12-31 23:59:60FZQH53CS26 s
171992-06-30 23:59:60FZRY7CGT27 s
181993-06-30 23:59:60FZSW9SCV28 s
191994-06-30 23:59:60FZTTC68W29 s
201995-12-31 23:59:60FZW7KR4X30 s
211997-06-30 23:59:60FZXMP18Y31 s
221998-12-31 23:59:60FZZ1XK4Z32 s
232005-12-31 23:59:60G05MKP1033 s
242008-12-31 23:59:60G08EXH1134 s
252012-06-30 23:59:60G0BR4KX235 s
262015-06-30 23:59:60G0EJBTH336 s
272016-12-31 23:59:60G0FZP0S437 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:

TAI−UTC=a+(MJD−m)×r

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.

Froma (s)m (MJD)r (s/day)
1961-01-011.4228180373000.0012960
1961-08-011.3728180373000.0012960
1962-01-011.8458580376650.0011232
1963-11-011.9458580376650.0011232
1964-01-013.2401300387610.0012960
1964-04-013.3401300387610.0012960
1964-09-013.4401300387610.0012960
1965-01-013.5401300387610.0012960
1965-03-013.6401300387610.0012960
1965-07-013.7401300387610.0012960
1965-09-013.8401300387610.0012960
1966-01-014.3131700391260.0025920
1968-02-014.2131700391260.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.422818Inserted
1961-08-01−0.05Removed: labels in the last 0.05 s of the day before never occurred
1963-11-01+0.1Inserted
1964-04-01+0.1Inserted
1964-09-01+0.1Inserted
1965-01-01+0.1Inserted
1965-03-01+0.1Inserted
1965-07-01+0.1Inserted
1965-09-01+0.1Inserted
1968-02-01−0.1Removed: labels in the last 0.1 s of the day before never occurred
1972-01-01+0.107758Inserted

10Test vectors

Encoding vectors, recomputed here by the TypeScript implementation. The specification also has decoder, parser, duration and error vectors.

CaseUTCLengthStamp
T32 epoch1999-12-31T23:59:28Z8G0000000
Unix epoch (before 1972)1970-01-01T00:00:00Z8FZ3S5F48
Apollo 11 landing1969-07-20T20:17:40Z8FZ3BMMKB
UTC offset becomes whole seconds1972-01-01T00:00:00Z8FZ5NA8WA
Before last leap second2016-12-31T23:59:59Z8G0FZP0S3
Last leap second2016-12-31T23:59:60Z8G0FZP0S4
After last leap second2017-01-01T00:00:00Z8G0FZP0S5
Example date2026-10-31T03:13:00Z8G0S7G6B1
Example + 0.5 s (ms clock)2026-10-31T03:13:00.500Z10G0S7G6B1G0
Example + 0.123 s (µs clock)2026-10-31T03:13:00.123000Z12G0S7G6B13XYE
Before 1972, exact (ns clock)1966-06-15T12:00:00.123456789Z14FZ0EDKA4VPC2A1
Before 1961, taken as UT1675-08-20T00:00:00Z8FPEY6N00