Zopfli is a data compression library that performs Deflate, gzip and zlib data encoding.[2] It achieves higher compression ratios than mainstream Deflate and zlib implementations at the cost of being slower.[3] Google first released Zopfli in February 2013 under the terms of Apache License 2.0.[4]

Zopfli Archive
Original author(s)Lode Vandevenne and Jyrki Alakuijala
Developer(s)Google
Initial releaseFebruary 2013 (2013-02)
Stable release
1.0.3[1] Edit this on Wikidata / 27 November 2019; 4 years ago (27 November 2019)
Repository
Written inC
TypeData compression
LicenseApache License 2.0
Websitegithub.com/google/zopfli Edit this on Wikidata

The name Zöpfli is the Swiss German diminutive of “Zopf”, an unsweetened type of Hefezopf.[5]

Operation

edit

Zopfli can either generate a raw Deflate data stream or encapsulate it into gzip or zlib formats. Zopfli achieves higher data density through 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.[6] By default, Zopfli performs 15 iterations but could be configured to perform more or fewer. Under default settings, the output of Zopfli is typically 3–8% smaller than zlib's maximum compression, but takes around 80 times longer.[4][3]

Because of its significantly slower compression speed, Zopfli is not suited for on-the-fly compression. It is typically used for one-time compression of static content.[7][8] 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.[9] 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.[10]

History

edit

Zopfli is based on an algorithm from Jyrki Alakuijala.[11] The first reference implementation of Zopfli, by Jyrki Alakuijala and Lode Vandevenne, appeared in February 2013. Version 1.0.0 was released on April 25, 2013.[12] The reference implementation is a software library under the terms of Apache License 2.0, written in C.[2]

Since then, the open-source community made attempts to modify Zopfli for optimizing Portable Network Graphics (PNG) files because PNG uses a Deflate compression layer. The fruit of these modifications was ZopfliPNG, which was admitted into Google's Zopfli repository in May 2013.[13] The Zopfli algorithm has also been integrated into other PNG compression optimization tools like advpng (from the AdvanceCOMP utility suite)[14] and OxiPNG.[15]

See also

edit

References

edit
  1. ^ "Release 1.0.3". 27 November 2019. Retrieved 28 November 2019.
  2. ^ a b "google/zopfli · GitHub". Github.com. Retrieved 2015-09-29.
  3. ^ a b "A Look At Zopfli, Google's Open Source Compression Algorithm | Lifehacker Australia". Lifehacker.com.au. 2013-03-03. Retrieved 2015-09-29.
  4. ^ a b "Compress data more densely with Zopfli - Google Developers Blog". Googledevelopers.blogspot.com. 2013-02-28. Retrieved 2013-05-01.
  5. ^ Alexander Neumann (March 2013). "Zopfli: Neue Kompressionsbibliothek von Google | heise Developer" (in German). Heise.de. Retrieved 2015-09-29.
  6. ^ "Zopfli: Google's new data compression algorithm". Digit. 2013-03-01. Retrieved 2015-09-29.
  7. ^ Dean Hume (2015-06-01). "Improved Compression Ratios Using Zopfli". Retrieved 2015-09-06.
  8. ^ Sharwood, Simon (2013). "Google open sources very slow compression algorithm". The Register.
  9. ^ Ilya Grigorik (2014-01-09). "Google Fonts recently switched to using new Zopfli compression algorithm". Google+. Retrieved 2015-06-06.
  10. ^ Sanders, James. "Google's Zopfli Compression Algorithm: Extract higher performance from your compressed files". TechRepublic. Retrieved 2021-03-31.
  11. ^ "zopfli/README at master · google/zopfli". GitHub.
  12. ^ "Release Zopfli-1.0.0". Github.com. 2013-04-25. Retrieved 2015-09-06.
  13. ^ "ZopfliPNG : Google/zopfli@337d27f". Github.com. Retrieved 2015-09-29.
  14. ^ Andrea Mazzoleni. "Advance Projects". Advancemame.sourceforge.net. Retrieved 2015-09-29.
  15. ^ Josh Holmer. "shssoichiro/oxipng - Github". GitHub. Retrieved 2019-08-05.
edit