Base32H

n. a human-friendly duotrigesimal number system

Try it out!

Human-friendly? Duotrigesi-what?

32 digits, picked for the right balance of legibility, audibility, and information density. 0 or O? 1 or I? 5 or S? Doesn't matter; they're equivalent in Base32H. All the digits can be found on your typical keyboard, and are totally safe for URLs, filenames, and anything else that might not like special characters.

Rationale

Base32H is handy for all sorts of use cases, and stacks up pretty strong against other number systems:

  • More compact than hexadecimal (a 40-bit number needs only 8 Base32H digits v. 10 hexadecimal digits)
  • No case-sensitive letters or punctuation like in Base64 (you can use Base32H in filenames without worry)
  • No un-decodable letters like in other base-32 systems (any letter or numeral on a US keyboard will decode to a Base32H digit)
  • Easier to encode byte-aligned data than with non-power-of-two-radix number systems (no wasted bits)

These traits make it an excellent choice for any situation where people need to reliably read numeric identifiers -- asset tags, product keys, public key fingerprints, user IDs, etc. -- and especially if that situation entails reading an identifier aloud to someone else.

Implementations

Three official / reference implementations and counting (all free software under the ISC License), plus multiple community-contributed implementations.

Digits

Value Canonical Aliases
0 0 O o
1 1 I i
2 2
3 3
4 4
5 5 S s
6 6
7 7
8 8
9 9
10 A a
11 B b
12 C c
13 D d
14 E e
15 F f
16 G g
17 H h
18 J j
19 K k
20 L l
21 M m
22 N n
23 P p
24 Q q
25 R r
26 T t
27 V v U u
28 W w
29 X x
30 Y y
31 Z z