Skip to content
📷 A poly-fill for the FLIF image format.
C++ C JavaScript Makefile Shell Batchfile Other
Branch: emscript
Clone or download


A browser poly fill for FLIF image format. Since this image format is not supported natively by browsers yet, this project makes it possible to decode FLIF images with Javascript and to then render them on HTML5 Canvas.

Try the interactive demo if you are new to FLIF. The demo allows you to truncate the bitstream and to compare FLIF with other image formats.

For an example of how to use the PolyFLIF API to render FLIF images, see this page.


Mostly stable but needs more testing.

Currently, has been tested manually on latest versions of Chromium and Firefox. No regression tests / CI setup yet.

JS payload size

As of version 0.3, the gzipped and minified payload size is 77KB.


  • Async processing (so as to not block the browser event loop during decode)
  • Animation speed and loop control. #2
  • Code size reduction and performance optimisation.


GNU Lesser General Public License (LGPLv3+) in accordance with the upstream license.


How to Build

  • Install emscripten
  • Install Java (for the closure compiler)
  • cd src/
  • emmake make -f Makefile-emscript


When you send us a pull request, you acknowledge that

  • You either hold the copyright to your contribution or you have the permission from the copyright holder to submit the contribution to this project.
  • You grant the right to Uproot Labs to use your contribution in the project without any strings attached.

About FLIF

FLIF is a lossless image format based on MANIAC compression. MANIAC (Meta-Adaptive Near-zero Integer Arithmetic Coding) is a variant of CABAC (context-adaptive binary arithmetic coding), where the contexts are nodes of decision trees which are dynamically learned at encode time.

You can’t perform that action at this time.