Google has released the code behind a new compression algorithm, dubbed Brotli, under an open-source licence in the hopes it will be widely adopted by web browsers.
Part of the advertising giant's campaign to both speed up the web and reduce its own bandwidth expenses, Brotli is a novel compression algorithm which is designed to replace the company's two-year-old Deflate-compatible Zopfli in future browser releases. Using an entirely new data format - meaning that support will need to be explicitly added at both the server and client ends of a connection - Brotli promises anything up to a 26 per cent higher compression ratio while taking no longer to decompress. The result: faster downloads and less bandwidth used.
'
The higher data density is achieved by a 2nd order context modelling, re-use of entropy codes, larger memory window of past data and joint distribution codes,' explained Google's Zoltan Szabadka in an
introductory post for the software. '
Just like Zopfli, the new algorithm is named after Swiss bakery products. Brötli means ‘small bread’ in Swiss German. The smaller compressed size allows for better space utilisation and faster page loads. We hope that this format will be supported by major browsers in the near future, as the smaller compressed size would give additional benefits to mobile users, such as lower data transfer fees and reduced battery use.'
There is, as always, a trade-off: while the decompression time for Brotli is no longer than traditional Deflate-compatible algorithms, the compression time is an order of magnitude greater. This may well be reduced in the future as the code for the software is optimised, but initially the algorithm will be best suited to data which is intended to be compressed just once and decompressed many times - making it a great choice for static web content, and less so for dynamic content which requires on-the-fly compression as it is generated for each visitor.
The company has published Brotli's code to its
official GitHub repository.
Want to comment? Please log in.