Kodowanie Huffmana polega na utworzeniu słów kodowych (ciągów bitowych), których długość jest odwrotnie proporcjonalna do prawdopodobieństwa Tzn. im częściej dany symbol występuje (może wystąpić) w ciągu danych, tym mniej zajmie bitów.
Własności kodu Huffmana są następujące: jest kodem prefiksowym; oznacza to, że żadne słowo kodowe nie jest początkiem innego słowa; średnia długość słowa kodowego jest najmniejsza spośród kodów prefiksowych; jeśli prawdopodobieństwa są różne, tzn. to długość kodu dla symbolu jest nie większa od kodu dla symbolu słowa kodu dwóch najmniej prawdopodobnych symboli mają równą długość.
Kompresja polega na zastąpieniu symboli otrzymanymi kodami.
Algorytm statycznego kodowania Huffmana Algorytm Huffmana:
Określ prawdopodobieństwo (lub częstość występowania) dla każdego symbolu ze zbioru S. Utwórz listę drzew binarnych, które w węzłach przechowują pary: symbol, prawdopodobieństwo. Na początku drzewa składają się wyłącznie z korzenia. Dopóki na liście jest więcej niż jedno drzewo, powtarzaj: Usuń z listy dwa drzewa o najmniejszym prawdopodobieństwie zapisanym w korzeniu. Wstaw nowe drzewo, w którego korzeniu jest suma prawdopodobieństw usuniętych drzew, natomiast one same stają się jego lewym i prawym poddrzewem.