{"id":13560,"date":"2026-10-16T07:35:00","date_gmt":"2026-10-16T05:35:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13560"},"modified":"2026-10-09T23:17:38","modified_gmt":"2026-10-09T21:17:38","slug":"gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/","title":{"rendered":"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress"},"content":{"rendered":"<p>A web page arriving in a browser is usually not the page the server keeps on disk. It is a packed version of it, and the unpacking happens so early that nothing further along ever notices.<\/p>\n<p>Which method does the packing is agreed between browser and server on every single request. Three of them are in circulation, and a measurement of twenty large front pages shows that one is doing almost all the work.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/http-kompression-en.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Four compression methods with the number of front pages that used each one, the widest and narrowest measured ratios, and the single answer that arrived uncompressed\"><figcaption>Four methods were offered in every request. Two of them were ever used.<\/figcaption><\/figure>\n<h2>Two header lines settle it<\/h2>\n<p>The browser opens with a list. Its request carries a line named <code>Accept-Encoding<\/code>, and that line names everything the browser is able to unpack &#8211; today usually <code>gzip, deflate, br, zstd<\/code>.<\/p>\n<p>The server picks one from that list, packs the answer, and says which one it took in a line called <code>Content-Encoding<\/code>. Where it picks nothing, that line is simply absent and the body travels exactly as it lies on disk.<\/p>\n<p>One further line matters wherever a cache sits in between. <code>Vary: Accept-Encoding<\/code> tells that cache the answer depends on what was asked for, so a packed copy is never handed on to a client unable to unpack it.<\/p>\n<p>Nothing in this exchange is a fixed setting at either end. It is negotiated afresh for every file, every time.<\/p>\n<h2>The three methods<\/h2>\n<p><code>gzip<\/code> is the oldest and the safest. It has been in every browser and every command-line tool for decades, and nothing anywhere refuses it.<\/p>\n<p><code>br<\/code>, short for Brotli, is newer and generally packs text tighter than gzip at comparable reading speed. Browsers offer it over HTTPS only.<\/p>\n<p><code>zstd<\/code> is newer still. Its argument is speed rather than density: it packs and unpacks faster at similar ratios, which counts most where the packing happens fresh for every single request.<\/p>\n<p><code>deflate<\/code> also appears in the list, largely out of habit. It is the same algorithm as gzip in a different wrapper, and it is offered far more often than it is ever used.<\/p>\n<h2>What twenty front pages actually send<\/h2>\n<p>Twenty large sites were asked once each on 2 September 2026, every request offering all four methods. All twenty answered with status 200.<\/p>\n<p>Thirteen answered with <code>gzip<\/code>: Wikipedia, GitHub, the BBC, the New York Times, Apple, Spiegel, Heise, python.org, debian.org, kernel.org, gnu.org, nginx.org and postgresql.org.<\/p>\n<p>Six answered with <code>br<\/code>: cloudflare.com, mozilla.org, w3.org, zeit.de, tagesschau.de and php.net.<\/p>\n<p>One answered with nothing at all.<\/p>\n<p>And <code>zstd<\/code>, offered in all twenty requests, was chosen by none of them. The reason is not visible from outside. What is visible is that gzip, three decades on, remains the ordinary answer.<\/p>\n<figure class=\"lw-illu\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/illustrationen\/illu-http-kompression.webp\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"A tall stack of plates beside a frame and, past it, the same plates as a much shorter stack; a coral stack passes above the frame at full height\"><br \/>\n<\/figure>\n<h2>How much it actually saves<\/h2>\n<p>The measured ratios run from 2.88 to 12.63.<\/p>\n<p>The tightest was cloudflare.com: 1,315,964 bytes of markup travelled as 104,114. The loosest was nginx.org at 2.88, and that is no failing &#8211; the page is short and plain, and a small file simply holds less repetition to exploit.<\/p>\n<p>Size helps, in other words. Large pages assembled by a framework compress far better than small hand-written ones, because compression lives on repetition and a generated page is full of it.<\/p>\n<p>Brotli did not win automatically either. tagesschau.de reached 11.99 with it, while zeit.de managed 3.38 with the same method. What is being packed counts for more than which algorithm packs it.<\/p>\n<h2>The one that sends nothing<\/h2>\n<p>microsoft.com produced the single answer without a <code>Content-Encoding<\/code> line: 201,253 bytes of HTML, exactly as stored.<\/p>\n<p>The response names its origin plainly enough &#8211; <code>server: AkamaiNetStorage<\/code>, a bare <code>content-length<\/code>, no <code>vary<\/code>. Compression would have removed roughly nine tenths of it.<\/p>\n<p>That deserves stating precisely, because one measurement is one measurement: what arrived here, at this hour, over this route, was uncompressed. A different edge or a different path may answer differently. The response was real all the same, and 201 KB is what crossed the wire.<\/p>\n<h2>The measuring mistake that invents a result<\/h2>\n<p>The obvious way to measure a ratio is to ask twice: once with <code>Accept-Encoding: identity<\/code> and once offering everything. Divide the size of the first response by the size of the second.<\/p>\n<p>That method produced a clean, confident and wrong answer here. python.org came back at 11,672 bytes both times, a ratio of exactly 1.00, which reads as a site that does not compress at all.<\/p>\n<p>It does. The server ignored the request for no compression and sent gzip regardless, so both numbers were the packed size. Measured properly, python.org packs 52,820 bytes down to 11,672 &#8211; a ratio of 4.52.<\/p>\n<p>The method that cannot be fooled needs only one request: count the bytes arriving on the wire, then compare them with the file after unpacking. Both numbers come out of the same response, so no server gets the chance to answer a second question differently.<\/p>\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n<h3>Is compression worth it for images and font files too?<\/h3>\n<p>Hardly. JPEG, PNG, WebP and WOFF2 are already compressed internally, and gzip or Brotli find almost no repetition left to exploit; sometimes the file even grows slightly. Servers therefore usually limit compression to text formats such as HTML, CSS, JavaScript, JSON and SVG.<\/p>\n<h3>Does Brotli cost more server time than gzip?<\/h3>\n<p>That depends on the level. Brotli has quality levels from 0 to 11, and the top ones pack considerably more slowly than gzip. For responses generated fresh on every request, such as HTML from WordPress, medium levels are therefore common, where the time needed is in the same range as gzip while the result is still tighter.<\/p>\n<p>Static files change the calculation. CSS and JavaScript can be packed once at the highest level during deployment and stored as a finished file next to the original; the server then only hands out the matching version. The slow level costs time once rather than on every request. The speed argument of zstd is aimed at exactly the opposite case, packing on every request.<\/p>\n<h3>Is compression over HTTPS a security risk?<\/h3>\n<p>In one narrowly defined case. The BREACH attack exploits the fact that a compressed response becomes shorter when text injected by the attacker matches a secret in the same response. Three things are needed at once: a secret in the response body, such as a CSRF token, attacker input that is reflected in the same response, and the ability to trigger a large number of requests and observe the length of the encrypted responses.<\/p>\n<p>The usual defence leaves compression switched on and removes one of the conditions instead: tokens masked differently on every delivery, or no unfiltered reflection of input on pages that carry secrets. Compression at the TLS level, the target of the older CRIME attack, no longer exists in TLS 1.3; it has nothing to do with Content-Encoding.<\/p>\n<h3>What does the single-request measurement look like on the command line?<\/h3>\n<p>The simplest way is curl without automatic unpacking: the request offers only gzip, and the response is written to a file exactly as it crossed the wire.<\/p>\n<p><code>curl -s -D - -H \"Accept-Encoding: gzip\" -o page.gz https:\/\/example.com\/<\/code><\/p>\n<p>The printed headers show whether the server actually set Content-Encoding: gzip. After that, <code>wc -c &lt; page.gz<\/code> gives the size of the packed body as it was transferred and <code>gzip -dc page.gz | wc -c<\/code> the size after unpacking; the ratio of the two is the figure being sought. Both come from the same response, which is exactly the point.<\/p>\n<p>If the Content-Encoding line is missing, the file is not packed at all and gzip stops with an error message. That is a finding too, the microsoft.com case. The same applies to Brotli with br in the offer and the brotli program for unpacking, if it is installed.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Reference\/Headers\/Content-Encoding\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: Content-Encoding<\/a><\/li>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9110.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9110: HTTP Semantics<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Every request in this measurement offered four ways to compress the answer. Twenty front pages replied, and between them they used two of the four &#8211; while the newest one was never chosen at all.<\/p>\n","protected":false},"author":1,"featured_media":16130,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[158],"tags":[91099,91219,91315],"class_list":["post-13560","post","type-post","status-publish","format-standard","hentry","category-tutorials-en-web-development","tag-server-administration","tag-tutorial","tag-web-performance"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"How content compression is negotiated, what twenty large front pages really send, how much it saves in practice, and the measuring mistake that invents a result.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"How content compression is negotiated, what twenty large front pages really send, how much it saves in practice, and the measuring mistake that invents a result.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-16T05:35:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13560-gzip-brotli-zstd-measured-nz.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress\",\"datePublished\":\"2026-10-16T05:35:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/\"},\"wordCount\":1248,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13560-gzip-brotli-zstd-measured-nz.png\",\"keywords\":[\"Server Administration\",\"Tutorial\",\"Web Performance\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/\",\"name\":\"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13560-gzip-brotli-zstd-measured-nz.png\",\"datePublished\":\"2026-10-16T05:35:00+00:00\",\"description\":\"How content compression is negotiated, what twenty large front pages really send, how much it saves in practice, and the measuring mistake that invents a result.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13560-gzip-brotli-zstd-measured-nz.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13560-gzip-brotli-zstd-measured-nz.png\",\"width\":1200,\"height\":630,\"caption\":\"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress | Lukas Wojcik","description":"How content compression is negotiated, what twenty large front pages really send, how much it saves in practice, and the measuring mistake that invents a result.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/","og_locale":"en_US","og_type":"article","og_title":"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress | Lukas Wojcik","og_description":"How content compression is negotiated, what twenty large front pages really send, how much it saves in practice, and the measuring mistake that invents a result.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-16T05:35:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13560-gzip-brotli-zstd-measured-nz.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress","datePublished":"2026-10-16T05:35:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/"},"wordCount":1248,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13560-gzip-brotli-zstd-measured-nz.png","keywords":["Server Administration","Tutorial","Web Performance"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/","name":"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13560-gzip-brotli-zstd-measured-nz.png","datePublished":"2026-10-16T05:35:00+00:00","description":"How content compression is negotiated, what twenty large front pages really send, how much it saves in practice, and the measuring mistake that invents a result.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13560-gzip-brotli-zstd-measured-nz.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13560-gzip-brotli-zstd-measured-nz.png","width":1200,"height":630,"caption":"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/gzip-brotli-and-zstd-what-twenty-large-websites-actually-use-to-compress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"gzip, Brotli and zstd: What Twenty Large Websites Actually Use to Compress"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=13560"}],"version-history":[{"count":3,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13560\/revisions"}],"predecessor-version":[{"id":22234,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13560\/revisions\/22234"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/16130"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13560"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}