Apri qualsiasi file .jpg in un editor esadecimale. I primi due byte:
FF D8
Questo e il marcatore Start of Image (inizio immagine). Ogni file JPEG inizia con esso. Ogni decoder JPEG sulla Terra lo cerca. I byte successivi indicano al decoder quale variante di JPEG si tratta, quale spazio colore aspettarsi e dove iniziano i dati dei pixel. Il formato e piu vecchio del browser web, eppure trasporta ancora circa il 57% di tutte le immagini servite sul web moderno, secondo il Web Almanac 2025.
La crisi di archiviazione che creo JPEG
Nel 1986, un'immagine in scala di grigi non compressa di 640 x 480 occupava 307 KB di spazio su disco. Un'immagine a colori alla stessa risoluzione richiedeva 921 KB. In un'epoca in cui un hard disk da 20 MB costava centinaia di dollari e i floppy disk da 1,44 MB erano il supporto di scambio standard, una singola foto non compressa poteva riempire due terzi di un disco.
La necessita era ovvia: un formato di compressione standard per immagini a tono continuo -- fotografie, non disegni al tratto. Piu gruppi stavano lavorando sul problema. Il Joint Photographic Experts Group, formato nel 1986 da ISO/IEC e ITU-T, fuse le idee migliori in una singola bozza. Dopo sei anni di perfezionamento, lo standard fu pubblicato nel 1992 come ISO/IEC 10918-1.
JPEG non fu mai pensato per essere l'unico formato di immagine. Fu progettato per un unico compito: rendere le fotografie abbastanza piccole da archiviare e trasmettere. Svolge quel compito scartando informazioni in un ordine molto specifico.
Perche JPEG comprime cosi bene
La compressione JPEG e una pipeline, non un singolo algoritmo. Ogni stadio rimuove dati che il sistema visivo umano ha meno probabilita di notare.
1. Conversione dello spazio colore (RGB -> YCbCr)
Il tuo schermo visualizza RGB. JPEG memorizza YCbCr. Il canale Y trasporta la luminanza (luminosita). Cb e Cr trasportano la crominanza (differenza di blu e differenza di rosso). Questo conta perche l'occhio umano ha circa 2,5 milioni di cellule cono sintonizzate sulla luminosita e solo 100.000 sintonizzate sul colore. Vediamo i dettagli di luminanza molto meglio dei dettagli di colore.
2. Sottocampionamento cromatico (Chroma Subsampling)
La maggior parte dei JPEG utilizza il sottocampionamento 4:2:0. Per ogni 4 campioni di luminanza, c'e 1 campione Cb e 1 campione Cr. Cio significa che i canali croma sono memorizzati a un quarto della risoluzione del canale luma. Per un'immagine di 4000 x 3000, il piano Y e a risoluzione piena. I piani Cb e Cr sono 2000 x 1500 ciascuno. Hai appena ridotto i dati grezzi di circa il 50% prima che inizi qualsiasi compressione reale, e la maggior parte degli spettatori non se ne accorge mai.
3. La trasformata discreta del coseno (DCT)
L'immagine viene divisa in blocchi di 8 x 8 pixel. Ogni blocco viene sottoposto a una DCT, che converte i dati spaziali (valori dei pixel) in dati di frequenza (quanto velocemente cambiano i valori attraverso il blocco). Il risultato e una matrice di 8 x 8 coefficienti. Il valore in alto a sinistra e il coefficiente DC -- la luminosita media del blocco. Gli altri 63 sono coefficienti AC che rappresentano dettagli a frequenza sempre piu alta.
I coefficienti ad alta frequenza codificano texture fini: capelli, erba, rumore. I coefficienti a bassa frequenza codificano forme ampie: cieli, muri, tonalita della pelle.
4. Quantizzazione
Qui e dove avviene la perdita. JPEG applica una tabella di quantizzazione a ogni blocco DCT. La tabella e una seconda matrice di 8 x 8 di divisori. Ogni coefficiente DCT viene diviso per il suo quantizzatore corrispondente e arrotondato all'intero piu vicino.
La tabella di quantizzazione standard colpisce piu duramente i coefficienti ad alta frequenza:
16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99
Un coefficiente ad alta frequenza di, diciamo, 7 viene diviso per 121 e arrotondato a 0. E andato. Irreversibile. Il decoder non lo vede mai. Questa e la compressione con perdita: i dati vengono distrutti, non solo ricodificati.
A qualita 90, i quantizzatori sono divisi per un fattore di scala piu piccolo. A qualita 50, il fattore di scala e piu alto. Piu coefficienti diventano zero. Il file diventa piu piccolo. L'immagine diventa piu morbida.
5. Codifica entropica
Dopo la quantizzazione, i coefficienti rimanenti vengono scansionati a zig-zag, codificati con codifica run-length (RLE) e compressi con codifica di Huffman. Questo stadio e senza perdita. Impacca solo i dati gia distrutti in modo piu efficiente.
Il risultato: un'immagine RGB non compressa da 12 MP e 36 MB. Salvala come JPEG qualita 90 con sottocampionamento 4:2:0 e cade a ~3,5 MB. Questa e una riduzione di 10:1 con perdita di qualita visibile solo sotto ingrandimento.
Quanto e con perdita, davvero?
Il danno non e distribuito uniformemente.
| Qualita | Dimensione tipica (12 MP) | Impatto visivo |
|---|---|---|
| 95+ | ~8 MB | Quasi invisibile; preferito per l'archiviazione |
| 90 | ~3,5 MB | Ammorbidimento minore; standard per le fotocamere |
| 75 | ~1,8 MB | Sfocatura visibile nei dettagli fini; default web |
| 50 | ~1,0 MB | Artefatti di blocco evidenti allo zoom al 100% |
| 30 | ~600 KB | Banding cromatico, rumore zanzara, inutilizzabile per la stampa |
Tre artefatti distinti appaiono man mano che la qualita diminuisce:
- Blocking: Bordi della griglia 8 x 8 visibili, specialmente in sfumature uniformi come i cieli.
- Ringing: Aloni oscillanti attorno ai bordi ad alto contrasto (testo su sfondo).
- Sanguinamento cromatico: Il sottocampionamento cromatico stende il colore oltre i confini netti.
Il vero problema e la perdita di generazione (Generation Loss). Apri un JPEG, modificalo, salvalo di nuovo come JPEG. Ogni salvataggio riesegue l'intera pipeline: RGB -> YCbCr -> sottocampionamento -> DCT -> quantizzazione. Gli errori di arrotondamento si accumulano. Dopo 10 generazioni, un'immagine puo sembrare dipinta ad acquerello. Dopo 50, e irriconoscibile.
Lo spostamento verso il verde e altre stranezze della ricompressione
Risalva un JPEG abbastanza volte e potresti notare che la temperatura colore deriva. Alcune immagini assumono una sottile dominante verde. Altre si spostano verso il magenta. La ragione e sepolta nei canali croma.
JPEG memorizza Cb e Cr a risoluzione ridotta e li quantizza aggressivamente. Ogni salvataggio introduce errore di arrotondamento in entrambi i canali. La conversione di ritorno a RGB usa questa matrice:
R = Y + 1.402 x (Cr - 128)
G = Y - 0.344136 x (Cb - 128) - 0.714136 x (Cr - 128)
B = Y + 1.772 x (Cb - 128)
Nota che il verde e calcolato sia da Cb che da Cr. Quando la quantizzazione ripetuta spinge Cb verso l'alto e Cr verso il basso anche di un solo passo di quantizzazione, il canale G deriva. Un bias positivo in Cb spinge il verso il basso. Un bias negativo in Cr spinge il verde verso l'alto. L'interazione non e simmetrica perche i coefficienti -0.344136 e -0.714136 hanno magnitudini diverse. Il risultato: un lento accumulo di verde in alcune regioni dell'immagine, specialmente dove i valori croma originali erano gia vicini ai confini di quantizzazione.
Questo non e un effetto garantito. Dipende dalle tabelle di quantizzazione dell'encoder, dalla modalita di sottocampionamento e dal contenuto dell'immagine. Ma e reale, riproducibile, e una delle ragioni per cui i flussi di lavoro professionali evitano di risalvare JPEG.
Se JPEG e cosi difettoso, perche tutto lo usa?
JPEG non e popolare perche e perfetto. E popolare perche e sufficiente e universale.
- Nessun blocco da brevetti: Il brevetto JPEG di base (detenuto da Forgent Networks) e scaduto nel 2006. Il formato e royalty-free.
- Decodifica hardware: Ogni fotocamera, telefono, stampante e browser ha un decoder JPEG in silicio o in C altamente ottimizzato. Costa quasi nulla renderizzarlo.
- Abbastanza buono: Per i social media, i siti di notizie e gli allegati di posta elettronica, un JPEG qualita 75 e indistinguibile dall'originale sullo schermo di un telefono.
- Inerzia dell'ecosistema: I sistemi di gestione dei contenuti, le CDN, le librerie di immagini e gli archivi legacy parlano tutti JPEG. Sostituirli richiede piu di un formato migliore. Richiede un formato migliore piu una ragione per migrare petabyte di risorse esistenti.
I formati che avrebbero dovuto vincere
Diversi formati hanno cercato di detronizzare JPEG. Nessuno ci e riuscito completamente.
| Formato | Con perdita | Senza perdita | Trasparenza | Animazione | Profondita bit max | Vantaggio chiave |
|---|---|---|---|---|---|---|
| JPEG | Si | No | No | No | 8 bit | Supporto universale |
| PNG | No | Si | Si | No | 16 bit | Senza perdita perfetto, alpha |
| WebP | Si | Si | Si | Si | 8 bit | 25-35% piu piccolo di JPEG, nativo browser |
| HEIC | Si | Si | Si | Si | 16 bit | ~50% piu piccolo di JPEG, default Apple |
| AVIF | Si | Si | Si | Si | 12 bit | Miglior compressione oggi, royalty-free |
| JPEG XL | Si | Si | Si | Si | 32 bit | Ricompressione JPEG senza perdita, decodifica progressiva |
PNG ha risolto il problema senza perdita ma produce file 5-10 volte piu grandi di JPEG per le foto. Domina screenshot, risorse dell'interfaccia utente e grafica.
WebP (Google, 2010) batte JPEG in dimensioni e aggiunge trasparenza e animazione. Ora e incluso in ogni browser principale. Il Web Almanac 2025 posiziona WebP all'11% delle immagini LCP, rispetto al 7% nel 2024. E il percorso di aggiornamento sicuro oggi.
HEIC (Apple, 2017) utilizza la compressione HEVC all'interno di un contenitore ISOBMFF. E ~40-50% piu piccolo di JPEG e contiene piu immagini per file. Domina l'ecosistema Apple e si blocca ovunque altro a causa dei pool di brevetti HEVC.
AVIF (AOM, 2019) deriva dal video AV1. Raggiunge i migliori rapporti di compressione di qualsiasi formato ampiamente supportato -- circa il 30% piu piccolo di WebP a qualita equivalente. Lo svantaggio e la velocita di decodifica. Le immagini AVIF possono richiedere 2-3 volte piu tempo per essere renderizzate rispetto a JPEG sui dispositivi mobili, consumando batteria e ritardando il Largest Contentful Paint.
JPEG XL (ISO/IEC 18181, 2021) e tecnicamente superiore a tutti loro. Comprime 50-60% piu piccolo di JPEG. Decodifica velocemente. Supporta la decodifica progressiva: un'immagine utilizzabile appare dopo aver scaricato solo ~1% del file. Piu importante, puo ricomprimere i JPEG esistenti senza perdita per risparmi di circa il 20% sulla dimensione con recupero bit-per-bit dell'originale. Nessun altro formato puo farlo.
Dove siamo ora
JPEG XL ha avuto un'infanzia difficile. Google ha aggiunto il supporto sperimentale a Chrome nel 2021, poi lo ha rimosso il 31 ottobre 2022 -- la "decisione di Halloween". La ragione dichiarata: beneficio incrementale insufficiente rispetto ai formati esistenti. La reazione e stata immediata. Il problema su Chromium e diventato il secondo piu seguito nella storia del progetto. Google e stato accusato di proteggere AVIF, un formato legato all'Alliance for Open Media che Google ha co-fondato.
Alla fine del 2025, Chromium ha fatto marcia indietro. Un nuovo decoder Rust (jxl-rs) e approdato in Chrome Canary. Chrome 145, rilasciato a febbraio 2026, ha distribuito il supporto JPEG XL dietro un flag. Safari lo supporta dal 2023. Firefox Nightly sta integrando lo stesso decoder Rust. JPEG XL non e ancora abilitato per default, ma e tornato nella codebase.
AVIF, nel frattempo, e la scelta pragmatica per il 2026. Il supporto del browser e ampio. Gli encoder stanno migliorando. Sia Cloudinary che Cloudflare servono AVIF automaticamente tramite negoziazione dell'header Accept. La pagina mediana che serve AVIF o WebP mostra 81% di buoni tassi LCP contro il 64% delle pagine solo JPEG, secondo i dati CoreDash.
La conclusione
JPEG e un compromesso di 33 anni. Scarta la risoluzione cromatica, la texture ad alta frequenza e la precisione numerica in cambio di dimensioni di file che hanno reso la fotografia digitale praticabile negli anni '90. Gli artefatti sono ben compresi. La perdita di generazione e reale. Lo spostamento verde succede.
Eppure JPEG persiste per la stessa ragione per cui persiste QWERTY: il costo del cambiamento e maggiore del dolore di rimanere.
Il percorso pratico in avanti e a strati:
- Conserva master di alta qualita. Archivia gli originali come PNG, TIFF o JPEG qualita 95+. Non rieditare mai da un'esportazione web qualita 75.
- Servi formati moderni dinamicamente. Usa una CDN o un servizio di immagini che negozi AVIF, WebP o JPEG XL in base all'header
Acceptdel browser. Memorizza un master; lascia che il bordo converta su richiesta. - Non ricodificare JPEG in batch. Ogni generazione distrugge dati. Se hai bisogno di file piu piccoli, ricodifica dal master, non da un altro JPEG.
JPEG non morira improvvisamente. Svanira allo stesso modo in cui e svanito GIF: ancora supportato ovunque, ancora aperto in ogni visualizzatore, ma sempre piu superato da formati che fanno lo stesso lavoro con meno byte e meno artefatti. La differenza e che questa volta, i formati sostitutivi stanno effettivamente vincendo.


