Comprehending Compression: Minimizing Code and Media Without Compromising Performance

Appreciating the power of compression is vital when striving for optimal frontend performance. This article delves into the application of compression, specifically focusing on JavaScript, CSS, and media assets, to ensure faster load times and more efficient experiences without sacrificing functionality.

ShareShare

Comprehending Compression: Minimizing Code and Media Without Compromising Performance

Imagine investing months in developing an exceptional application, only to discover that your users are burdened with downloading 5MB of JavaScript and 15MB of images. Despite employing advanced techniques like code splitting and tree shaking, the byte count remains unnecessarily high. The answer to this issue lies in the method of compression, applicable to both your code and media assets.

This comprehensive guide covers:

  • A detailed exploration of Brotli and Gzip, including their histories and workings.
  • An examination of how modern build tools compress JS, CSS, and HTML.
  • Strategies for optimizing media, such as images, videos, and fonts.
  • Insights for configuring CDN and servers.
  • Real-world case studies demonstrating the successful application of compression in top web platforms.

The Implications of Compression

Compression significantly reduces:

  • Transfer size
  • Time to First Byte (TTFB)
  • Time to Interactive (TTI)
  • Data usage on mobile devices

In many applications, employing compression can lead to a reduction of page weight by half. While compression is a backend concern, it has substantial frontend implications.


Gzip vs Brotli: A Comparative Study

| Feature | Gzip | Brotli | |-----------|-------------|-------------| | Compression | Fast | Better | | Ratio | ~30-40% | ~40-50% | | Speed | Faster | Slower | | Support | All major browsers | All modern browsers |

Brotli offers superior compression, especially at higher levels. However, Gzip remains a powerful fallback option.

Enable compression via server:

gzip on;
brotli on;
brotli_static on;

Alternatively, compression can be enabled via platforms like Cloudflare, Netlify, Vercel, etc.


JavaScript + CSS Compression

While most bundlers produce uncompressed .js, Gzip/Brotli is used to serve in production.

Webpack + Compression Plugin:

new CompressionPlugin({
  algorithm: "brotliCompress",
  test: /\.(js|css|html|svg)$/,
})

Frameworks like Vite and Next.js provide out-of-the-box support for this.


HTML Compression

Minimized HTML templates combined with server-level gzip offer effective HTML compression:

<!-- Before -->
<div>
  <h1>   Hello   </h1>
</div>

<!-- After -->
<div><h1>Hello</h1></div>

This process involves eliminating comments, whitespace, and unused templates.


Image Compression

Images usually account for the heaviest part of most user interfaces.

Effective strategies for image compression include:

  • Using modern image formats like WebP and AVIF.
  • Compressing images before uploading using tools like TinyPNG or ImageMagick.
  • Lazy-loading offscreen images.
  • Resizing images to match display dimensions.
  • Using responsive srcset.
<img src="image.avif" srcset="image-480.webp 480w, image-1080.avif 1080w" loading="lazy" />

Video and Other Media

  • Employing H.265 or AV1 for superior compression.
  • Hosting on adaptive platforms like Mux, Cloudflare Stream, or via YouTube embeds.
  • Avoiding autoplay loops unless the video is compressed aggressively.

Font Optimization

Fonts often weigh between 100–300KB+.

Best practices for font optimization include:

  • Using WOFF2 or WOFF formats.
  • Subsetting unused glyphs.
  • Using unicode-range.
  • Preloading and caching aggressively.
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin="anonymous" />

Real-World Case Studies

Twitter Lite

  • Employs Brotli at level 11.
  • Converts images to WebP format.
  • Compresses JS chunks to 70% smaller size.

Airbnb

  • Reduces font size from 240KB to 18KB through font subsetting.
  • Loads only images present in the viewport.
  • Shrinks JS bundle from 1.6MB to 390KB post-compression.

Anti-Patterns to Avoid

  • Serving uncompressed assets, especially JS/CSS.
  • Using PNG format where JPEG/WebP would suffice.
  • Failing to compress images before uploading.
  • Overusing heavy font libraries or multiple font weights.
  • Using videos instead of lighter alternatives like animated SVGs or CSS.

Conclusion: Make Every Byte Count

Though compression is invisible to users, it plays a crucial role in shaping the user experience. It's cost-effective to implement, huge in terms of payoff, and crucial for scaling operations.

Whether it’s textual content or graphical elements — remove what you don’t need.

By doing so, you make your application feel lighter, faster, smarter. Always remember, in the realm of web, size does indeed matter.

Subscribe for Deep Dives

Get exclusive in-depth technical articles and insights directly to your inbox.

about

Ehsan Hosseini

Ehsan Hosseini

me [at] ehosseini [dot] info

Staff Software Engineer and Tech Lead with a track record of leading high-performing engineering teams and delivering scalable, end-to-end technology solutions. With experience across web, mobile, and backend systems, I help companies make smart architectural decisions, scale efficiently, and align technical strategy with business goals.

© 2025 Ehsan Hosseini. All rights reserved.