Encodes and decodes binary string or integer tokens to and from base32.


It uses the Crockford alphabet defined at - which is probably not the most efficient, but it is tolerant to user mistakes.

It’s case insensitive

I, l and 1 maps to the same value

0 and O maps to the same value

U is excluded to reduce the likelyhood of accidental obscenity


require ‘base32_pure’

encoded = Base32::Crockford.encode(“Some token”) Base32::Crockford.decode(encoded)

hypenated = Base32::Crockford.hypenate(encoded) Base32::Crockford.decode(hypenated)

Fixnum and Bignum should work as well

encoded = Base32::Crockford.encode(12345) Base32::Crockford.decode(encoded, :integer)

Typical use case

require ‘uuidtools’

digest = UUIDTools::UUID.random_create.raw base32_token = Base32::Crockford.encode(digest)


The optional check value is not implemented.

Note on Patches/Pull Requests

Fork the project.

Make your feature addition or bug fix.

Add tests for it. This is important so I don’t break it in a future version unintentionally.

Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

Send me a pull request. Bonus points for topic branches.


Copyright © 2010 Rune Myrland. See LICENSE for details.