Minify and beautify HTML, CSS and JS

Minification reduces the weight of your code without changing its behavior. The beautifier does the opposite: it reformats compressed code to make it readable. Two complementary operations every web developer uses daily.

✨ Minify my code 📋 How it works

Why minify your code?

A JavaScript or CSS source file is written to be read and maintained by humans — with explicit variable names, comments, indentation, and blank lines between blocks. All of that is essential during development, but completely useless to the browser. Every space, every comment, every line break is a byte downloaded unnecessarily by your visitors.

Minification removes everything invisible at runtime, and can also shorten variable names to one or two characters (mangling). The result is functionally identical, but much lighter.

FileSource sizeMinified sizeSavings
jQuery 3.7280 KB87 KB−69 %
Bootstrap CSS 5196 KB159 KB−19 %
React 18 (dev)1.1 MB140 KB−87 %
Typical business CSS file45 KB31 KB−31 %

These savings translate directly into load times — especially on mobile over 4G or degraded networks — and bandwidth savings at scale on high-traffic sites.

Impact on Core Web Vitals Google incorporates Core Web Vitals into its ranking algorithm. LCP (Largest Contentful Paint) and FID (First Input Delay) are directly influenced by the load time of blocking JS and CSS resources. Minifying these files is one of the simplest optimizations to highlight in a performance audit.

How minification works

HTML — remove visual noise

An HTML minifier removes comments, whitespace between tags, indentation, and can merge redundant boolean attributes. Note: whitespace inside visible text and <pre> tags must be preserved — a space between two words cannot be removed without breaking the display.

Before — 312 bytes
<!-- Main navigation -->
<nav class="topbar">
  <div class="inner">
    <a href="/">
      Home
    </a>
    <a href="/blog/">
      Blog
    </a>
  </div>
</nav>
After — 71 bytes
<nav class="topbar"><div class="inner"><a href="/">Home</a><a href="/blog/">Blog</a></div></nav>

CSS — margins on margins

CSS minification removes comments, spaces around :, ;, { and }, the last semicolon in a block (legal in CSS), and can normalize redundant values. 6-character hex colors can be shortened to 3 when pairs match: #ff6600#f60.

Before — 187 bytes
/* Main card */
.card {
  background-color: #ffffff;
  border: 1px solid #e5e7eb;
  border-radius: 18px;
  padding: 24px 28px;
  box-shadow: 0 4px 20px
    rgba(15, 23, 42, 0.07);
}
After — 107 bytes
.card{background-color:#fff;border:1px solid #e5e7eb;border-radius:18px;padding:24px 28px;box-shadow:0 4px 20px rgba(15,23,42,.07)}

JavaScript — the trickiest of the three

JS minification is the most complex because JavaScript is an interpreted language with automatic semicolon insertion (ASI) rules and behaviors that depend on whitespace in certain contexts. A basic minifier removes comments and superfluous spaces; an advanced minifier (Terser, UglifyJS) also performs mangling — renaming local variables to a, b, c — and tree-shaking to eliminate dead code.

Danger: regex on strings A classic mistake of naive minifiers: removing spaces inside strings. "hello world" cannot become "helloworld". A good minifier protects string content before applying transformations.

The beautifier: reading compressed code

The beautifier (or pretty-printer) does the opposite of minification: it reformats compressed code by adding indentation, line breaks, and spaces to make it readable. It's essential in two situations:

  • Debug a production file: when a bug appears in prod and you only have access to minified JS in the browser DevTools.
  • Analyze third-party code: an ad tag, a tracking script, a library without source access — the beautifier makes it inspectable in seconds.

Adtech use case: inspect an ad creative

Creative studios often deliver HTML ad tags in compressed format. Here's what you receive, and what a beautifier lets you read:

Received tag — 1 line, unreadable
<div id="ad"><script>(function(){var t=document.getElementById("ad");var i=new Image();i.src="https://t.example.com/imp?id=12345&ts="+Date.now();t.innerHTML="<a href='https://click.example.com/track?id=12345' target='_blank'><img src='https://cdn.example.com/banner_300x250.jpg' width='300' height='250' /></a>";})();</script></div>
After beautify — readable structure
<div id="ad">
  <script>
    (function () {
      var t = document.getElementById("ad");
      // Impression pixel
      var i = new Image();
      i.src = "https://t.example.com/imp?id=12345&ts="
            + Date.now();
      // Creative injection
      t.innerHTML =
        "<a href='https://click.example.com/track?id=12345'"
        + " target='_blank'>"
        + "<img src='https://cdn.example.com/banner_300x250.jpg'"
        + " width='300' height='250' /></a>";
    })();
  </script>
</div>

Once beautified, the structure is immediately visible: an impression pixel that fires on load, and a creative injected via innerHTML. That's the starting point to verify tracking URLs with the Redirect Tracker, or analyze a VAST tag if present with the VAST Reader.

HTML, CSS and JS: three different logics

LanguageMain weight sourceMinification riskTypical savings
HTMLComments, indentation, inter-tag spacesSignificant whitespace in visible text, pre tags10–30 %
CSSComments, spaces around punctuationLow — CSS is unambiguous about spaces15–35 %
JSComments, spaces, long variable namesHigh — ASI, strings, regex, template literals30–85 % (with mangling)

Integrating minification into your workflow

Production projects — build tools

For an actively developed project, minification happens automatically on every build via a bundler:

  • Vite / Rollup: JS minification with esbuild by default, extremely fast.
  • Webpack: Terser Plugin for JS, CssMinimizerPlugin for CSS.
  • esbuild: built-in minification, 10–100× faster than JS alternatives.
  • PostCSS + cssnano: CSS pipeline with transformations and minification.

One-off tasks — online tool

For an isolated file — an ad tag from a partner, a legacy script to inspect, CSS to optimize before delivery — an online tool is faster than configuring a build. That's the main use case for the Flownect Minifier: instant processing, no installation, no uploading code to a third-party server.

Source code security If you minify or beautify confidential code (proprietary tag, internal script, business logic), make sure the tool you use does not submit that code to an external server. The Flownect tool processes everything in your browser — no line of code is sent anywhere.

Source maps: the bridge between prod and dev

Minification makes debugging hard — a production error points to line 1, column 47823 of a minified file. Source maps (.map) solve this: JSON files that map each position in minified code to the original source file. Chrome and Firefox DevTools use them automatically to display errors in readable source context.

In production, source maps should be deployed on a server accessible only to your team, or in an error tracking service (Sentry, Datadog) that uses them to symbolize stack traces without exposing them publicly.

Minify or beautify your code

HTML, CSS or JS — transform your code in one click, 100 % in the browser.

Open the tool →

Frequently asked questions

Can minification break my code?

Yes, if the minifier is poorly implemented. Common cases: spaces removed inside strings, reliance on automatic semicolon insertion (ASI) in JavaScript, or <pre> tags whose whitespace is significant in HTML. Production minifiers (Terser, esbuild) actually parse code via an AST before transforming — they avoid these pitfalls. A basic regex-based minifier is faster but less reliable.

Should I minify inline CSS in HTML?

Yes, if you inject critical CSS inline in the <head> to optimize First Contentful Paint. That CSS is not served as a separate file and is therefore not covered by static file minification. Inline minification reduces the weight of the HTML itself.

What's the difference between minifying and compressing (gzip/brotli)?

These are two complementary optimizations at different levels. Minification removes superfluous characters from the source file — the result is a shorter file that remains readable text (with effort). Gzip or brotli compression is applied by the HTTP server during transmission — it encodes the file in binary to further reduce transit weight. Both stack: a minified JS file then compressed with brotli can be 8 to 10 times lighter than the uncompressed source file.

How do I read a minified JS file in DevTools?

In Chrome: open DevTools → Sources → click the { } icon (Pretty Print) at the bottom left of the code editor. If a source map is available, DevTools use it automatically and display the original source. You can also copy the minified code and paste it into the Flownect Beautifier to inspect it outside the browser.