Google is open-sourcing a new general purpose data compression library called Zopfli that can be used to speed up Web downloads.
The Zopfli Compression Algorithm, which got its name from a Swiss bread recipe, is an implementation of the Deflate compression algorithm that creates a smaller output size compared to previous techniques, wrote Lode Vandevenne, a software engineer with Google's Compression Team, on the Google Open Source Blog last week.
"The smaller compressed size allows for better space utilization, faster data transmission, and lower Web page load latencies. Furthermore, the smaller compressed size has additional benefits in mobile use, such as lower data transfer fees and reduced battery use," Vandevenne wrote.
The more exhaustive compression techniques used achieve higher data density but also make the compression a lot slower. This does not affect the decompression speed, though, Vandenne wrote.
Zopfli is a compression-only library and existing software can be used to decompress the data, he said. Zopfli is compatible with Zip, PNG, gzip and HTTP requests among others, Vandevenne added.
With the proliferation of video downloads in particular, Google and other services are researching ways to boost compression. Google acquired On2, a data compression technology firm, in 2009. Browser maker Opera has been refining compression functions as well.
Resource-demanding but effective
Zopfli's output is generally 3 percent to 8 percent smaller compared to zlib, another compression library based on the Deflate compression algorithm, according to Vandevenne. "We believe that Zopfli represents the state of the art in Deflate-compatible compression," he said.
"This compressor takes more time (~100x slower), but compresses around 5 percent better than zlib and better than any other zlib-compatible compressor we have found," Google said on Zopfli's Google Code page. The code is available under Apache License 2.0.
The new compression library, however, requires two to three times more CPU time than zlib at maximum quality. Therefore, it is best suited for applications where data is compressed once and sent over the network many times, such as static content for the Web, Vandevenne said.
Vandevenne and his colleague Jyrki Alakuijala, a Google software engineer who also worked on the project, recommend in their research paper to use Zopfli "for compression of static content and other content where data transfer or storage costs are more significant than the increase in CPU time."
"By open sourcing Zopfli, thus allowing webmasters to better optimize the size of frequently accessed static content, we hope to make the Internet a bit faster for all of us," Vandevenne said.