Battery used Bike power

The Case for Minimal Web Design

Modern websites are bloated with megabytes of JavaScript. What if we went back to basics?

The Modern Web is Heavy

The average website in 2025 weighs over 2MB. That’s more than the entire original DOOM game. For a blog post. With text and maybe a few images.

What Happened?

  • Tracking scripts
  • Ad networks
  • Analytics
  • Frameworks loading frameworks
  • Auto-playing videos
  • Cookie consent banners

We’ve normalized this bloat, but it doesn’t have to be this way.

Going Minimal

What if we stripped it all away? Just HTML, minimal CSS, and only JavaScript when absolutely necessary.

Benefits:

  • Fast load times - Loads in milliseconds, not seconds
  • Accessibility - Works on any device, any connection
  • Longevity - Simple HTML lasts decades
  • Privacy - No trackers means no tracking

“Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.” - Antoine de Saint-Exupéry

A Minimal HTML Example

Here’s all you need for a perfectly functional webpage:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>My Page</title>
  <style>
    body {
      max-width: 650px;
      margin: 40px auto;
      padding: 0 10px;
      font: 18px/1.5 system-ui, sans-serif;
    }
  </style>
</head>
<body>
  <h1>Hello World</h1>
  <p>This is a minimal webpage. It loads instantly.</p>
</body>
</html>

That’s it. No framework. No build step. No megabytes of dependencies.

The Performance Difference

Compare these typical page weights:

Minimal HTML site:     ~10 KB
Medium Blog:           ~500 KB
Modern SPA:            ~2-3 MB
Enterprise Dashboard:  ~5-10 MB

A 10KB page loads almost instantly, even on slow connections. A 5MB page? Not so much.

This Site

That’s what this site aims to be - lightweight, fast, and functional. No build step complexity, no client-side hydration, no bundle splitting.

Just content that loads instantly and works everywhere.

Measuring Success

You can check page size in your browser’s dev tools:

// Run this in your browser console
const resources = performance.getEntriesByType('resource');
const totalSize = resources.reduce((acc, r) => acc + r.transferSize, 0);
console.log(`Total page size: ${(totalSize / 1024).toFixed(2)} KB`);

Try it on this page, then try it on a modern web app. The difference is staggering.

A Better Web

The web started simple. Maybe it’s time to remember that simplicity isn’t a limitation - it’s a feature.

“The best code is no code at all.”