Emoji-compress is an open-source library, written in Go, as a side-project. We have ported a few known basic encoding and compression algorithms and added the emoji twist. Some of the methods may result in smaller texts (as in the number of characters), but larger in bytes.

LZ78 - compression

LZ78 is a lossless data compression algorithm, which form the basis of several ubiquitous compression schemes, including GIF and the DEFLATE algorithm used in PNG and ZIP.

It has a simple algorithm which consist of finding repeating phrases (sequences of characters) and storing them in a tree like dictionary.

Bytes map - encoding

It is a simple encoding method, it is use to "humanize" hard to remember/recognize texts such as Hashes, keys, other encodes like base64, ip's and so on.

The algorithm is very simple: it splits the string in a series of bytes, and maps each byte by its value to an unique emoji. A byte can have only 255 possible values, so we only need 255 different emojis to encode ... anything. The package is a Go port of @ayende's emoji encoder.

Dictionary - replacing words

Package dictionary is a small package that allows encoding (or compression) of strings by replacing each unique word with an emoji. Each compress generates a new dictionary and an encoded version of the text (archive), based on the words found in the text.

There are some technical limitations: you cannot have emojis in the original text; only works with a max of 1000 unique words and a new dictionary is generated for each text.



Features & bugs

If you want us to add a new encoding algorithm, or you have found a bug or you just want to improve our project please add an issue our github tracker.

About

Emoji-compress is an open-source library, written in Go, as a side-project. This website is just a demo for the package.

We have ported to Go some known basic encoding and compression algorithms and added the emoji twist. Some of the methods may result in smaller texts (as in the number of characters), but larger in bytes.