Skip to content
Simple, single-file, nibble-based, adaptive rANS library with SSE2-accelerated modeling
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Initial commit Aug 19, 2018 Added readme, updated include guard pattern Sep 16, 2018
nibrans.h C++ compatibility Jan 23, 2019
tdec.c C++ compatibility Jan 23, 2019
tenc.c C++ compatibility Jan 23, 2019
test.c C++ compatibility Jan 23, 2019


This is a header-only library, as such most of its functional documentation is contained within the "header section" of the source code in the form of comments. It is highly recommended that you read said documentation before using this library.


The nibrans library provides a simple adaptive rANS coder using SSE2 acceleration, its features include:

  • No hard dependencies besides the standard library, making it fully portable for most purposes
  • Allows the adaptive model to be re-used across multiple compressions, useful for networking
  • Easy to use as a result of consisting of only three functions (init, encode, and decode)
  • Configurable adaption rate with default tuned towards arbitrary binary data


You are not required to give attribution when using this library. If you want to give attribution anyway, either link to this repository, my website, or credit me as BareRose. If you want to support me financially, consider giving to my Patreon.


Licensed under CC0 aka the most lawyer-friendly way of spelling "public domain".

You can’t perform that action at this time.