Harman Patil (Editor)

Zopfli

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Stable release
  
1.0.1

Operating system
  
Cross-platform

Written in
  
C

Original author(s)
  
Lode Vandevenne and Jyrki Alakuijala

Initial release
  
February 2013 (2013-02)

Type
  
File archive, data compression

Zopfli is data compression software that encodes data into DEFLATE, gzip and zlib formats. It achieves higher compression than other DEFLATE/zlib implementations, but takes much longer to perform the compression. It was first released in February 2013 by Google as a free software programming library under the Apache License, Version 2.0. The name Zöpfli is the Swiss German diminutive of “Zopf”, a unsweetened type of Hefezopf.

Contents

Properties and use case

Zopfli can output either a raw DEFLATE data stream or DEFLATE data encapsulated into gzip or zlib formats. It can be configured to do more or less iterations than the default 15 to trade processing time for compression efficiency.

Under default settings, the output of Zopfli is typically 3–8% smaller than zlib's maximum compression, but takes around 80 times longer. The speed of decompressing Zopfli's output versus zlib's output is practically unaffected.

Due to its significantly slower compression speed, zopfli is less suited for on-the-fly compression and is typically used for one-time compression of static content. This is typically true for web content that is served with DEFLATE-based HTTP compression or web content in a DEFLATE-based file format such as PNG or WOFF font files. Another use case is software updates or downloads with software package files that have a zip-based format such as Android application packages (APK) or Java Archives (JAR), especially over mobile connections.

Technology

The higher data density is achieved by using more exhaustive compression techniques. The method is based on iterating entropy modeling and a shortest path search algorithm to find a low bit cost path through the graph of all possible DEFLATE representations of the uncompressed data.

Implementations

A reference implementation from Google was released in the form of a programming library written in C. It is available as free software under the terms of version 2.0 of the Apache License.

A wrapper was created for PHP: php_zopfli.

An implementation of Zopfli in C# can be found as part of the CompressSharper library ZopfliDeflater.cs.

History

Zopfli is based on an algorithm from Jyrki Alakuijala. A reference implementation of zopfli was written by Google employees Jyrki Alakuijala and Lode Vandevenne. It was first released to the public in February 2013. Version 1.0.0 was released on April 25, 2013. After several adaptations of Zopfli for PNG compression appeared on GitHub, ZopfliPNG was committed to Google's zopfli reference implementation in May 2013.

PNG optimization

The Zopfli algorithm can be used to compress Portable Network Graphics (PNG) files because PNG uses a DEFLATE compression layer. There is a PNG optimization tool named ZopfliPNG from the authors of Zopfli. The Zopfli algorithm has also been integrated into other PNG compression optimization tools like advpng from the AdvanceCOMP utility suite.

References

Zopfli Wikipedia