Overview

Bytewords is a method for encoding binary objects as a sequence of four-letter English words.

Why is Bytewords Important?

Encoding binary strings as human-readable words allows for better human interaction. Blockchain Commons adopted this approach not only for improved human interactivity, but also so that CBOR data structures could be encoded in a self-describing way, increasing their resilience.

BIP39 and SLIP39 offered two existing methods for textual encoding of binary data, but were ultimately found insufficient. Bytewords offers advantages over existing schemes, including: use of words with a uniform length of four letters; ability to minimally encode words with two letters; addition of a checksum;and specific selection of “interesting” words for improved memory.

Bytewords is used by the Uniform Resources specification.

How Does Bytewords Work?

CBOR data is converted to a hex string and a CRC32 checksum is appended to it. Each byte of the hex string is then converted to one of the 256 words on Bytewords word list. For “minimal” encoding, each byte is instead encoded as the first and last character of the appropriate entry on the Bytewords list, which have been designed to be unique.

“BCR-2020-012: Bytewords” lists the complete set of words and provides examples.

Bytewords Videos

Bytewords in Technical Overview

Libraries

Bytewords Libraries

Language Repo Contributor Status
C bc-bytewords Blockchain Commons  
Java bc-libs-java Bitmark  

Developer Resources: