§

Options

Minify options
§

Incolla l'HTML

§

Output minificato

html
§

Risparmiato %

  • Dimensione originale
  • Dimensione minificata
  • Risparmiato
  • Risparmiato %

I team JAMstack di Esselunga distribuiscono migliaia di pagine prodotto tramite edge node di Cloudflare e Vercel, dove ogni kilobyte sottratto all'HTML si moltiplica per milioni di sessioni quotidiane del catalogo. La redazione web del Corriere della Sera ha integrato la minificazione HTML nel proprio pipeline CMS per ridurre il budget di caricamento su connessioni 4G italiane, ottenendo risparmi tra il 18 e il 22 per cento sui template degli articoli. Eseguire il passaggio localmente nel browser prima del commit garantisce la stessa riduzione di byte senza aggiungere dipendenze di vendor al repository.

Come funziona la minificazione HTML

Il minificatore percorre il tuo input con un piccolo automa a stati che distingue le regioni di conservazione (<pre>, <textarea>, <script>, <style>) dalle regioni modificabili dove gli spazi bianchi e i commenti possono essere compressi in sicurezza.

  1. Tokenizzare i blocchi di conservazione. Lo scanner legge l'input carattere per carattere e passa in uno stato di conservazione quando incontra un tag di apertura <pre>, <textarea>, <script> o <style>. Tutto ciò che si trova all'interno di quei tag viene mantenuto byte per byte fino alla chiusura corrispondente.
  2. Comprimere gli spazi bianchi modificabili. Nelle regioni modificabili, lo scanner comprime ogni sequenza di spazi, tabulazioni e interruzioni di riga in un singolo spazio e poi taglia gli spazi bianchi iniziali e finali attorno ai confini dei tag. Il testo visibile si ridistribuisce nello stesso modo in cui il browser lo renderizza.
  3. Rimuovere i commenti. I blocchi <!-- ... --> vengono rimossi quando l'interruttore è attivo. I commenti condizionali IE (<!--[if IE]> ... <![endif]-->) sopravvivono quando l'interruttore di conservazione condizionale è attivo, perché i vecchi client di posta elettronica ne dipendono ancora.
  4. Comprimere gli attributi booleani. Le forme verbose come checked="checked", disabled="disabled" e required="required" vengono ridotte al solo nome dell'attributo. La specifica HTML5 tratta la forma breve come semanticamente identica, quindi il DOM renderizzato rimane invariato.
  5. Riportare i delta di byte. Sia il testo originale sia quello minificato vengono misurati con new TextEncoder().encode(...).byteLength, lo stesso conteggio di byte UTF-8 che un CDN o un server HTTP vede sulla rete. La barra delle metriche mostra dimensione originale, dimensione minificata, byte risparmiati e percentuale risparmiata.

Perché minificare HTML

  • Caricamento delle pagine più veloce. Un HTML più piccolo raggiunge il browser prima e il parser termina prima. Sulle reti mobili, i byte risparmiati si traducono direttamente in un First Contentful Paint più rapido e un punteggio di performance Lighthouse migliore.
  • Fatture di egress CDN ridotte. CloudFront, Cloudflare e Fastly fatturano per gigabyte di egress. Una riduzione del 20 per cento nell'HTML su milioni di visualizzazioni mensili si accumula in risparmi reali in fattura, prima ancora che arrivi qualsiasi ottimizzazione di immagini o script.
  • Diff di pull request più puliti. L'HTML statico precompilato archiviato in un repository diventa rumoroso quando ogni modifica al template ridistribuisce l'indentazione. L'HTML minificato nella cartella dist produce diff di PR più compatti che si concentrano sulle vere modifiche al contenuto invece che sulle variazioni di spazi bianchi.
  • Embed e snippet più piccoli. I template di e-mail, gli snippet di widget di terze parti e l'HTML memorizzato nelle configurazioni JSON o YAML beneficiano dello stesso taglio di byte. Gli embed minificati mantengono le e-mail transazionali sotto i limiti di dimensione degli ESP e riducono i bundle dei widget.

Applicazioni comuni

La minificazione HTML appare alla fine di quasi ogni pipeline di build di siti statici o JAMstack, oltre ad alcuni contesti di runtime dove i byte contano più della leggibilità del codice sorgente.

  • Fasi di build di siti statici: Eleventy, Hugo, Astro e Next.js fanno passare l'HTML attraverso un minificatore prima di scrivere nella cartella dist in modo che il bundle distribuito sia più piccolo del sorgente.
  • E-mail transazionali: gli ESP (SendGrid, Postmark, Mailgun) limitano la dimensione del corpo HTML e l'espansione del CSS inline gonfia rapidamente quel conteggio. Minificare il corpo prima dell'invio mantiene il messaggio sotto il limite.
  • Widget incorporati: i widget di terze parti e gli snippet di chat distribuiti come HTML inline beneficiano di ogni byte tagliato perché la pagina host deve scaricarli ad ogni visita.

Un esempio pratico

Incolla uno snippet di modulo verboso da 500 byte con indentazione a due spazi, tre interruzioni di riga tra le righe, un blocco di commenti HTML in cima e un <input type="checkbox" checked="checked" />. Con tutte le opzioni attivate, l'output si comprime a circa 300 byte — circa il 40 per cento di risparmio — mentre l'albero DOM renderizzato rimane identico al sorgente.

La minificazione romperà il mio HTML?

No, quando si usano gli interruttori predefiniti. Il minificatore preserva il contenuto dei tag <pre>, <textarea>, <script> e <style> alla lettera, lascia intatti i commenti condizionali IE quando quell'interruttore è attivo e comprime solo gli spazi bianchi che il parser HTML5 classifica già come insignificanti. L'albero DOM renderizzato è identico al sorgente. Gli interruttori aggressivi (remove-empty-attributes) possono cambiare il comportamento degli snippet che usano intenzionalmente value="" o alt="", quindi controlla l'output se li attivi.

Minifica anche il CSS e il JS inline?

Non in questo strumento. I corpi di <style> e <script> inline vengono preservati alla lettera in modo che il minificatore non rompa mai una regola CSS o un'istruzione JS comprimendo gli spazi bianchi all'interno di un literal di stringa o di un'espressione regolare. Per la minificazione specifica del CSS usa un Minificatore CSS; per il JS usa un Minificatore JS. Il Minificatore HTML si concentra sul markup stesso.

Quanto posso risparmiare?

I risparmi tipici sull'HTML scritto a mano vanno dal 10 al 30 per cento, a seconda di quanta indentazione, righe vuote e forme di attributo verbose usa il sorgente. L'HTML statico precompilato da framework come Next.js spesso risparmia dal 15 al 25 per cento perché il framework fa già alcune ottimizzazioni ma lascia spazi bianchi leggibili dall'uomo. I template con molti commenti e l'HTML in stile e-mail con profondo annidamento possono raggiungere il 40 per cento o più.

Il contenuto di pre viene preservato?

Sì. Il minificatore tokenizza esplicitamente i blocchi <pre>, <textarea>, <script> e <style> come regioni di conservazione e copia il loro contenuto byte per byte nell'output. Gli spazi bianchi, le interruzioni di riga e l'indentazione all'interno di quei tag sopravvivono intatti, quindi gli esempi di codice e l'arte ASCII vengono renderizzati esattamente nello stesso modo dopo la minificazione.

La minificazione HTML lato browser mantiene il tuo pipeline di build semplice e il tuo markup piccolo. Incolla qualsiasi HTML sopra, regola gli interruttori delle opzioni e copia o scarica l'output minificato — nessun caricamento, nessun account, nessuna libreria di vendor.