Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 History  





2 Algorithm  





3 Name  





4 Applications  





5 Industry support  



5.1  Browsers and other clients  





5.2  Web servers  







6 References  





7 External links  














Brotli






Deutsch
Español
Français

Italiano
Magyar

Русский
Suomi

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Original author(s)Jyrki Alakuijala, Zoltán Szabadka
Developer(s)Jyrki Alakuijala, Eugene Kliuchnikov, Robert Obryk, Zoltán Szabadka, Lode Vandevenne
Initial release15 October 2013; 10 years ago (2013-10-15)
Stable release

1.1.0[1] Edit this on Wikidata / 31 August 2023; 9 months ago (31 August 2023)

Repository
Written inC
Operating systemCross-platform
PlatformPortable
TypeData compression
LicenseMIT License
Websitebrotli.org

Brotli is a lossless data compression algorithm developed by Google. It uses a combination of the general-purpose LZ77 lossless compression algorithm, Huffman coding and 2nd-order context modelling. Brotli is primarily used by web servers and content delivery networkstocompress HTTP content, making internet websites load faster. A successor to gzip, it is supported by all major web browsers and has become increasingly popular, as it provides better compression than gzip.[citation needed]

History[edit]

Google employees Jyrki Alakuijala and Zoltán Szabadka initially developed Brotli in 2013 to decrease the size of transmissions of WOFF web font.[2] Alakuijala and Szabadka completed the Brotli specification during 2013–2016. The specification was accompanied with a reference implementation developed by two additional authors, Evgenii Kliuchnikov and Lode Vandevenne, who had previously developed Google's zopfli implementation of deflate and gzip compatible compression in 2013.[3]: 1  Unlike zopfli, which was a reimplementation of an existing data format specification, Brotli was a new data format and allowed the authors to improve compression ratios even further.[4]

The Brotli specification was generalized in September 2015 for HTTP stream compression (content-encoding type "br"). This generalized iteration also improved the compression ratio by using a predefined dictionary of frequently used words and phrases. The version of Brotli released in September 2015 by the Google software engineers contained enhancements in generic lossless data compression, with particular emphasis on use for HTTP compression. The encoder was partly rewritten, with the result that the compression ratio improved, both the encoder and the decoder have been sped up, the streaming API was improved, and more compression quality levels have been added. Additionally, the new release shows performance improvements across platforms, with decoding memory reduction.[4]

The Internet Engineering Task Force approved the Brotli compressed data format specification as an informational request for comment (RFC 7932) in July 2016.[5] The Brotli data format is an integral part of the 2nd iteration of the Web Open Font Format,[5]: 3  which was recognized in a 2021 Technology & Engineering Emmy Award from the National Academy of Television Arts & Sciences for font technology standardization at W3C.[6][7]

Brotli support has been added over the years to web browsers, with 96% of worldwide users using a browser that supports the format, as of July 2022.[8]

In 2016 Dropbox reimplemented Brotli in Rust to fulfill their requirement to be more secure against a malicious client. In 2018 they implemented the missing feature so one can append to a Brotli compressed file.[9][10][11]

Algorithm[edit]

Brotli's new file format allows its authors to improve upon Deflate by several algorithmic and format-level improvements: the use of context models for literals and copy distances, describing copy distances through past distances, use of move-to-front queue in entropy code selection, joint-entropy coding of literal and copy lengths, the use of graph algorithms in block splitting, and a larger backward reference window are example improvements.

Unlike most general-purpose compression algorithms, Brotli uses a predefined dictionary, roughly 120 KiB in size, in addition to the dynamically populated ("sliding window") dictionary. The predefined dictionary contains over 13000 common words, phrases and other substrings derived from a large corpus of text and HTML documents.[12][3] Using a predefined dictionary has been shown to increase compression where a file mostly contains commonly used words.[13] However, according to Alakuijala, the predefined dictionary does not distract from Brotli's generalality, and is not the main reason for improved compression. Brotli with an all-zero dictionary still performs well on web content due to the algorithmic advances, he claims.[14]

Brotli's sliding window is limited to 16 MiB. This enables decoding on mobile phones with limited resources, but makes Brotli underperform on compression benchmarks having larger files. The constraints of the small window size can be alleviated by using Large Window Brotli, which is not compatible with RFC7932 (Brotli proper).[15]

Name[edit]

While Google's zopfli implementation of the deflate compression algorithm is named after Zöpfli, the Swiss German word for a snack-sized braided buttery bread, brotli is named after Brötli, the Swiss German word for a bread roll.[4] Google's own implementation of the Brotli specification was released under the terms of the permissive free software MIT license in 2016. A formal validation of the Brotli specification was independently implemented by Mark Adler,[5]: 126  one of the co-authors of the zlib/gzip compression format and library. Adler's implementation was released under the terms of the similarly permissive Apache License.[16] Other implementations of the specification also exist, including one in the source-to-source Haxe language.

Applications[edit]

Brotli compression is generally used as an alternative to gzip on the web, as Brotli provides better overall compression.[17] Compared to gzip compression, JavaScript files compressed with Brotli are roughly 15% smaller, HTML files are around 20% smaller, and CSS files are around 16% smaller.[18]

The reference implementation does ship a command-line program brotli similar to gzip,[19] but use in the Unix-like world as a simple compressor is scarce. Libarchive developers find the raw stream format of .br files difficult to support, as there is no magic number to indicate the file format.[20]

Industry support[edit]

Browsers and other clients[edit]

Web servers[edit]

References[edit]

  1. ^ "Release 1.1.0". 31 August 2023. Retrieved 18 September 2023.
  • ^ Sheeter, Rod (February 18, 2015), "Smaller Fonts with WOFF 2.0 and unicode-range", Google Open Source Blog, Mountain View, CA: opensource.googleblog.com.
  • ^ a b Alakuijala, Jyrki; Kliuchnikov, Evgenii; Szabadka, Zoltan; Vandevenne, Lode (22 September 2015), "Comparison of Brotli, Deflate, Zopfli, LZMA, LZHAM and Bzip2 Compression Algorithms" (PDF), The Comprehensive R Archive Network, r-project.org.
  • ^ a b c Szabadka, Zoltan (September 22, 2015), "Introducing Brotli: a new compression algorithm for the internet", Google Open Source Blog, Mountain View, CA: opensource.googleblog.com.
  • ^ a b c Alakuijala, Jyrki; Szabadka, Zoltan (2016), RFC 7932: Brotli Compressed Data Format, Internet Engineering Task Force Request for Comments, Fremont, CA: IETF Trust.
  • ^ "W3C Receives Emmy Award for Standardizing Font Technology". 2022-06-01.
  • ^ "Changing the face of the web: W3C Web Fonts Working Group and MPEG recognized with a Technology & Engineering Emmy Award". 2022-06-01.
  • ^ "Can I use... - Brotli". 2022-06-28.
  • ^ Lossless compression with Brotli in Rust for a bit of Pied Piper on the backend, Daniel Reiter Horn and Mehant Baid, 2016-06-29.
  • ^ [1], Rishabh Jain and Daniel Reiter Horn, 2020-08-04
  • ^ append to brotli compressed file, github ticket to google Brotli, listing implementation ideas, 2017-12-06
  • ^ Chirgwin, Richard (September 23, 2015), "Google's new squeeze: Brotli compression open-sourced", The Register, theregister.co.uk.
  • ^ Larkin, Henry (2007). "Word Indexing for Mobile Device Data Representations". 7th IEEE International Conference on Computer and Information Technology (CIT 2007). pp. 399–404. doi:10.1109/CIT.2007.22. ISBN 978-0-7695-2983-7. S2CID 8707991..
  • ^ Alakuijala, Jyrki (May 15, 2021). "Static dictionary is not why Brotli reaches excellent compression density. Much ..." Hacker News.
  • ^ Kliuchnikov, Eugene. "How to use large window sizes? · Issue #639 · google/brotli". GitHub. Currently we are testing "Large Window Brotli" extension that will allow up to 1GiB window. [...] "Large Window Brotli" is landed.
  • ^ Adler, Mark (Jan 26, 2015), "Brotli specification review and verification", Adler brotli, San Francisco: GitHub.
  • ^ Calvano, Paul (2018-07-25). "Brotli Compression: How Much Will It Reduce Your Content?". Retrieved 2021-03-07.
  • ^ Pandjarov, Hristo (2021-01-13). "More Site Speed Gains with Brotli Compression Algorithm". SiteGround. Retrieved 2021-03-07.
  • ^ "brotli(1) manual page". manned.org.
  • ^ "Brotli support · Issue #1238 · libarchive/libarchive". GitHub. Without a magic signature, libarchive cannot automatically recognize the file type, so it cannot automatically decompress. (Libarchive does not consider the file name, only the contents.)
  • ^ Goodger, Ben; et al. (26 January 2016), "Firefox 44 release notes", Mozilla Firefox, Mozilla Foundation.
  • ^ a b Baheux, Kenji (15 January 2016), "Accept-encoding: br on HTTPS connection", Chrome Platform Status, chromestatus.com.
  • ^ Trace, Rob (December 20, 2016), "Introducing Brotli compression in Microsoft Edge", Microft Edge Developer, blogs.windows.com
  • ^ Stenberg, Daniel; et al. "curl - Changes". curl.haxx.se. Retrieved 14 January 2018.
  • ^ "README". GitHub. 15 October 2021.
  • ^ "Google Brotli: How to compress, open, extract BR files".
  • ^ "Changes with Apache 2.4.26", Apache HTTPD repository, svn.apache.org.
  • ^ "Higher Compression Ratio with Brotli compression". 6 Oct 2023.
  • ^ "Caching with Azure Front Door". docs.microsoft.com. 15 June 2023.
  • ^ "Azure Front Door Service is now available". azure.microsoft.com.
  • ^ "Amazon CloudFront announces support for Brotli compression". aws.amazon.com.
  • ^ "What will Cloudflare compress?". support.cloudflare.com.
  • ^ "lighttpd 1.4.56 release info". redmine.lighttpd.net.
  • Notes
     -  Finley, Klint (22 September 2015), "Hooli, I Mean Google, Gives Away Compression Code for Free", Wired Online, wired.com.

    External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=Brotli&oldid=1226646162"

    Categories: 
    Data compression
    Free computer libraries
    Lossless compression algorithms
    Hidden categories: 
    Articles with short description
    Short description is different from Wikidata
    All articles with unsourced statements
    Articles with unsourced statements from March 2024
     



    This page was last edited on 1 June 2024, at 00:20 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki