Un formattatore HTML è uno strumento che esegue la formattazione HTML (chiamata anche abbellimento o pretty-printing): aggiunge indentazione, interruzioni di riga e spaziatura coerenti al markup HTML in modo da rendere visibile la struttura di annidamento. I browser ignorano gli spazi bianchi durante il rendering dell'HTML, quindi un documento scritto su una singola riga produce lo stesso output di uno con un'indentazione accurata. La differenza è interamente per gli esseri umani: l'HTML formattato è più facile da leggere, debuggare e mantenere.
La specifica HTML (mantenuta da WHATWG come HTML Living Standard) definisce oltre 110 elementi, ciascuno con il proprio modello di contenuto. Gli elementi a livello di blocco come <div>, <section> e <article> iniziano tipicamente su una nuova riga e indentano i propri figli. Gli elementi void come <br>, <img> e <input> non hanno tag di chiusura né figli da indentare. Un buon formattatore comprende queste distinzioni e applica le regole di indentazione di conseguenza, invece di aggiungere ciecamente spazi bianchi dopo ogni tag.
La formattazione è più importante durante lo sviluppo. L'HTML minificato o generato da macchine, l'output delle piattaforme CMS e il markup copiato dai DevTools del browser arrivano spesso come un'unica riga densa. Senza una corretta indentazione, trovare un tag di chiusura mancante o tracciare una struttura profondamente annidata richiede molto più tempo. Un formattatore HTML trasforma quella parete di testo in un albero correttamente indentato e leggibile in un unico passaggio.
Perché usare questo Formattatore HTML?
Incolla qualsiasi HTML e ottieni immediatamente un output correttamente indentato. Nessun plugin da installare, nessun file di configurazione da scrivere, nessun account da creare.
⚡
Formattazione istantanea
L'output si aggiorna mentre digiti. Incolla HTML minificato da qualsiasi sorgente e visualizza il risultato indentato senza attendere un passaggio di build o un comando CLI.
🔒
Elaborazione privacy-first
Tutta la formattazione viene eseguita nel tuo browser tramite JavaScript. Il tuo HTML non lascia mai il tuo dispositivo, quindi è sicuro incollare markup contenente chiavi API, token o URL interni.
🎯
Indentazione configurabile
Passa tra indentazione a 2 spazi e 4 spazi con un clic. Il formattatore applica la tua scelta in modo coerente a ogni livello di annidamento.
📋
Copia con un clic
Copia l'output formattato negli appunti con un singolo pulsante. Incollalo direttamente nel tuo editor, nella revisione di una pull request o nella documentazione.
Casi d'uso del Formattatore HTML
Sviluppo frontend
Formatta i template HTML prima di eseguire il commit nel controllo di versione. Un'indentazione coerente riduce il rumore nei diff nelle pull request e rende la revisione del codice più rapida.
Debug di template backend
L'HTML renderizzato lato server da framework come Django, Rails o PHP spesso produce markup non indentato. Incolla l'output renderizzato qui per verificare l'annidamento e individuare tag non chiusi.
DevOps e pipeline CI
Verifica che gli strumenti di build producano HTML ben strutturato. Formatta l'output dei generatori di siti statici o dei builder di email HTML prima dell'ispezione visiva.
QA e testing
Confronta snapshot formattati dell'output HTML tra diverse esecuzioni di test. Una corretta indentazione rende le differenze strutturali evidenti quando si confrontano due versioni di una pagina.
Ingegneria dei dati
Le pipeline di web scraping producono HTML grezzo che necessita di ispezione. Formatta le pagine acquisite per comprendere la struttura del DOM prima di scrivere i selettori di estrazione.
Apprendimento di HTML
Gli studenti possono incollare il codice sorgente di qualsiasi sito web e vedere come gli elementi si annidano l'uno nell'altro. La struttura ad albero formattata rende chiari i rapporti genitore-figlio tra i tag.
Regole di indentazione HTML
Il modo in cui un formattatore HTML tratta ogni tipo di elemento dipende dal suo modello di contenuto. La tabella seguente mostra gli elementi comuni e come vengono indentati con le impostazioni a 2 spazi e 4 spazi. Entrambe producono un rendering identico nel browser; la differenza è la leggibilità.
Tag
Tipo di elemento
Indent 2 spazi
Indent 4 spazi
<div>
Block element
New line, indent children
New line, indent children
<span>
Inline element
New line, indent children
Inline with parent text
<br>
Void element
New line, same level
New line, same level
<img>
Void element
New line, same level
New line, same level
<!-- -->
Comment
New line, same level
New line, same level
<!DOCTYPE>
Document type
First line, no indent
First line, no indent
<script>
Script block
New line, preserve inner
New line, preserve inner
<pre>
Preformatted
New line, preserve inner
New line, preserve inner
Formattatore vs. Minificatore vs. Linter
Questi tre strumenti operano sull'HTML ma servono scopi diversi. Formattazione e minificazione sono trasformazioni opposte; il linting controlla gli errori senza modificare gli spazi bianchi.
Formattatore (questo strumento)
Aggiunge indentazione e interruzioni di riga per rendere l'HTML leggibile. Non modifica la struttura del DOM né rimuove alcun contenuto. L'output viene renderizzato in modo identico all'input in un browser.
Minificatore
Rimuove spazi bianchi, commenti e tag di chiusura facoltativi per ridurre le dimensioni del file. L'opposto della formattazione. Usalo per i build di produzione, non per la lettura o la modifica.
Linter (HTMLHint / W3C)
Controlla l'HTML alla ricerca di errori come attributi alt mancanti, ID duplicati o tag deprecati. Segnala i problemi ma non modifica l'indentazione né la formattazione.
Esempi di codice
Come formattare HTML a livello programmatico nei linguaggi e strumenti più diffusi:
package main
import (
"bytes"
"fmt"
"golang.org/x/net/html"
"strings"
)
func main() {
ugly := "<div><p>Hello</p></div>"
doc, _ := html.Parse(strings.NewReader(ugly))
var buf bytes.Buffer
html.Render(&buf, doc)
fmt.Println(buf.String())
// renders normalized HTML — pair with indent logic for pretty output
}
CLI (Prettier)
# Format a single file in place
npx prettier --write index.html
# Format and print to stdout (pipe-friendly)
npx prettier --parser html index.html
# Format with 4-space indentation
npx prettier --tab-width 4 --parser html index.html
# Format HTML from stdin
echo '<div><p>Hello</p></div>' | npx prettier --parser html
Domande frequenti
Qual è la differenza tra formattazione HTML e validazione HTML?
La formattazione aggiunge indentazione e interruzioni di riga per rendere il markup leggibile. La validazione verifica se il markup è conforme alla specifica HTML, segnalando errori come attributi obbligatori mancanti o elementi annidati in modo errato. Un formattatore non corregge gli errori; un validatore non modifica gli spazi bianchi.
La formattazione HTML cambia come la pagina viene renderizzata?
Nella maggior parte dei casi, no. I browser collassano le sequenze di spazi bianchi in un singolo spazio durante il rendering. Le eccezioni sono gli elementi con white-space: pre o regole CSS simili, e gli elementi <pre> e <textarea>, dove gli spazi bianchi sono significativi. Un formattatore ben costruito preserva il contenuto di questi elementi esattamente com'è.
Quanti spazi dovrei usare per l'indentazione HTML?
Due spazi e quattro spazi sono entrambi comuni. La Google HTML/CSS Style Guide raccomanda 2 spazi. Il formattatore Prettier usa per impostazione predefinita 2 spazi. Quattro spazi corrispondono alla convenzione PEP 8 di Python e sono preferiti da alcuni team per coerenza tra i linguaggi. Scegline uno e applicalo con un formattatore o con la configurazione dell'editor.
Posso formattare HTML che contiene JavaScript o CSS incorporati?
Questo strumento formatta la struttura HTML (tag e attributi). I blocchi <script> e <style> inline vengono preservati così come sono. Per formattare JavaScript e CSS incorporati, usa un formattatore dedicato come Prettier, che può analizzare e formattare tutti e tre i linguaggi in un unico passaggio.
Il dibattito tab vs. spazi riguarda ancora l'HTML?
La maggior parte delle guide di stile HTML e i formattatori usano per impostazione predefinita gli spazi. Il Developer Survey 2023 di Stack Overflow mostra che gli spazi sono usati da circa il 55% degli intervistati per lo sviluppo web. I tab hanno il vantaggio di accessibilità di permettere a ogni sviluppatore di impostare la propria larghezza visiva preferita. Entrambi funzionano; la coerenza all'interno di un progetto conta più della scelta in sé.
Perché il mio HTML ha un aspetto diverso dopo la formattazione?
Il formattatore aggiunge caratteri di spazio (spazi e newline) che non erano nel markup originale. Questo cambia l'aspetto del codice sorgente ma non l'output renderizzato. Se noti una differenza visiva nel browser, è probabilmente causata da elementi inline dove gli spazi bianchi aggiunti creano un carattere spazio extra tra i tag, che può essere risolto con CSS (font-size: 0 sull'elemento genitore, o layout flexbox).
Come posso applicare una formattazione HTML coerente in un team?
Usa un formattatore automatizzato nella tua pipeline CI. Prettier supporta HTML e può essere eseguito come hook pre-commit tramite Husky o lint-staged. Aggiungi un file di configurazione .prettierrc al tuo repository specificando tabWidth, printWidth e htmlWhitespaceSensitivity. Ogni commit seguirà così le stesse regole di formattazione indipendentemente dalle impostazioni dell'editor di ogni sviluppatore.
Qual è la differenza tra un formattatore HTML e un abbellitore HTML?
Sono la stessa operazione. 'Formattatore' e 'abbellitore' si riferiscono entrambi all'aggiunta di indentazione e interruzioni di riga al markup HTML. Alcuni strumenti usano 'beautify' (js-beautify), altri usano 'format' (Prettier). L'output è identico: HTML correttamente indentato e leggibile dall'essere umano. 'Pretty-print' è un altro sinonimo comunemente usato nella documentazione e nelle query di ricerca.