Noto anche come codifica Huffman, un algoritmo per la compressione senza perdite di file basato sulla frequenza di occorrenza di un simbolo nel file che viene compresso. L'algoritmo di Huffman si basa sulla codifica statistica, il che significa che la probabilità di un simbolo ha un rapporto diretto con la lunghezza della sua rappresentazione. Più probabile è l'occorrenza di un simbolo, più breve sarà la sua rappresentazione in bit. In qualsiasi file, alcuni caratteri vengono utilizzati più di altri. Utilizzando la rappresentazione binaria, il numero di bit necessari per rappresentare ogni carattere dipende dal numero di caratteri che devono essere rappresentati. Usando un bit possiamo rappresentare due caratteri, cioè 0 rappresenta il primo carattere e 1 rappresenta il secondo carattere. Usando due bit possiamo rappresentare quattro caratteri e così via.
A differenza del codice ASCII, che è un codice a lunghezza fissa che utilizza sette bit per carattere, la compressione di Huffman è un sistema di codifica a lunghezza variabile che assegna codici più piccoli per i caratteri usati più frequentemente e codici più grandi per caratteri usati meno frequentemente al fine di ridurre file compressi e trasferiti.
Ad esempio, in un file con i seguenti dati:
XXXXXXYYYYZZ
la frequenza di "X" è 6, la frequenza di "Y" è 4 e la frequenza di "Z" è 2. Se ogni carattere è rappresentato utilizzando un codice a lunghezza fissa di due bit, il numero di bit richiesto per memorizzare questo file sarebbe 24, ovvero (2 x 6) + (2x 4) + (2x 2) = 24.
Se i dati di cui sopra fossero compressi utilizzando la compressione di Huffman, i numeri che si verificano più frequentemente sarebbero rappresentati da bit più piccoli, come:
X dal codice 0 (1 bit)
Y dal codice 10 (2 bit)
Z dal codice 11 (2 bit)
quindi la dimensione del file diventa 18, cioè (1x 6) + (2 x 4) + (2 x 2) = 18.
Nell'esempio precedente, ai caratteri che si verificano più frequentemente vengono assegnati codici più piccoli, con un conseguente numero di bit inferiore nel file compresso finale.
La compressione di Huffman prende il nome dal suo scopritore, David Huffman.