Un SVG può apparire minuscolo sullo schermo e contenere centinaia di righe di codice, coordinate con otto decimali, gruppi annidati, metadati dell’editor e identificatori generati automaticamente.
Ottimizzare significa cercare una rappresentazione più semplice dello stesso risultato, non distruggere indiscriminatamente tutto ciò che non appare immediatamente nell’anteprima.
Perché ottimizzare?
Un SVG ottimizzato può essere più leggero da trasferire, più semplice da analizzare e renderizzare, più leggibile in un diff e meno pieno di residui del software di creazione.
Ma non tutti i file meritano lo stesso intervento. Guadagnare 150 byte su un’icona già pulita raramente vale un lavoro manuale importante; un’illustrazione esportata da un editor con migliaia di punti può invece offrire grandi margini.
Capire il contenuto prima di modificarlo
Apri il file in un editor di testo. Potresti trovare un SVG compatto:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="..." fill="currentColor"/>
</svg>
oppure metadati, <defs>, gruppi, trasformazioni e molti path.
Distingui ciò che serve al rendering, al comportamento, all’accessibilità, alla licenza e ciò che è solo residuo di produzione.
Conservare sempre una sorgente master
Non fare della versione ottimizzata l’unica copia. Il file di lavoro può contenere nomi dei livelli, gruppi logici, guide, oggetti nascosti o precisione utile per modifiche future.
Una buona catena è:
sorgente di lavoro
→ SVG esportato
→ ottimizzazione
→ SVG di produzione
La versione distribuita può essere aggressivamente pulita, mentre la sorgente conserva tutto ciò che serve alla modifica.
Stabilire un riferimento
Prima dell’ottimizzazione annota dimensione, viewBox, contesto di integrazione e comportamento atteso. Apri il file nel browser, nel componente reale, su sfondi rilevanti e a dimensioni piccole e grandi.
Questa versione diventa il riferimento da confrontare dopo ogni modifica importante.
Commenti, descrizioni dell’editor, informazioni di lavorazione e attributi duplicati possono aumentare il file senza modificare il rendering.
Sono spesso i primi candidati alla rimozione, ma non cancellare automaticamente informazioni di licenza, attribuzione o accessibilità che il progetto deve conservare.
Ridurre la precisione con cautela
I path esportati possono contenere valori come 12.34567891. Ridurre le cifre decimali può diminuire notevolmente il peso, soprattutto su forme complesse.
Ma ogni arrotondamento cambia le coordinate. Su curve morbide e grandi la differenza può essere invisibile; su icone minuscole, tratti sottili o geometrie precise può diventare evidente.
Procedi quindi per livelli di precisione e confronta visivamente il risultato.
Alcuni editor producono molti <g> annidati o trasformazioni che possono essere combinate. Gli ottimizzatori automatici sanno spesso ridurre questa struttura.
Attenzione però a CSS, selettori o script che possono dipendere da determinati ID o gruppi. Un elemento apparentemente ridondante nel file isolato può avere un ruolo nel componente reale.
ID e riferimenti interni
Gradienti, clip path, mask, filtri e <use> possono riferirsi a elementi tramite ID. Rinominare o rimuovere questi identificatori senza aggiornare le referenze rompe il rendering.
Controlla quindi i riferimenti prima di “ripulire” gli ID generati.
viewBox e dimensioni
Non rimuovere viewBox per risparmiare pochi byte. È spesso essenziale per il comportamento responsive e per la relazione tra coordinate interne e dimensioni di visualizzazione.
Allo stesso modo, eliminare width e height può essere corretto in un componente gestito dal CSS, ma non è una regola universale.
Accessibilità
Un ottimizzatore non sa sempre se un <title> o una descrizione sono necessari nel contesto. Se l’SVG inline comunica informazione, verifica che il trattamento non abbia eliminato l’alternativa accessibile.
Per un SVG decorativo, invece, una semantica inutile può essere rimossa o nascosta correttamente.
Sicurezza e contenuto non affidabile
Ottimizzazione e sanitizzazione non sono la stessa operazione. Un file piccolo può comunque contenere elementi indesiderati. Se l’SVG proviene da una fonte non affidabile, applica una politica di sanitizzazione adatta prima di integrarlo inline.
Verificare il risultato
Dopo l’ottimizzazione controlla:
- resa a diverse dimensioni;
- sfondo chiaro e scuro se rilevante;
viewBox;
- colori e
currentColor;
- riferimenti a gradienti, mask e clip;
- accessibilità;
- eventuali animazioni o interazioni;
- dimensione finale.
Il file più piccolo non è automaticamente il migliore. L’ottimizzazione è riuscita quando il progetto conserva tutto ciò che serve con meno complessità e meno dati.