Le codage entropique (ou codage statistique à longueur variable) est une méthode de codage de source sans pertes, dont le but est de transformer la représentation d'une source de données pour sa compression ou sa transmission sur un canal de communication.
Les principaux types de codage entropique sont le codage de Huffman et le codage arithmétique.
Le codage entropique utilise des statistiques sur la source pour construire un code, c'est-à-dire une application qui associe à une partie de la source un mot de code, dont la longueur dépend des propriétés statistiques de la source. On utilise donc en général un code à longueur variable, qui attribue les mots de codes les plus courts aux symboles de source les plus fréquents. Le codage entropique est issu de la théorie de l'information, et traite de ces codes et de leurs propriétés. L'information à coder est représentée par une variable aléatoire à valeur dans un "alphabet" de taille finie. Un résultat important est le théorème du codage de source, qui établit la limite à la possibilité de compression, et établit cette limite comme étant l'entropie.
Historiquement développé dans les années 1940-50 avec la théorie de l'information, le codage entropique est devenu une technique fondamentale en compression de données, et est présent dans de nombreux programmes de compression et de normes de compression d'image et de compression vidéo.
Définitions.
On considère une source discrète, c'est-à-dire un dispositif qui fournit aléatoirement des séquences de symboles issus d'un ensemble discret fini. Une source peut être un texte, une image, ou plus généralement, tout signal numérique. Une source est modélisée par un ensemble de variables aléatoires, à valeur dans un alphabet de taille finie, formula_1. formula_2 est appelé l'ensemble des symboles de source.
L'ensemble des chaînes non nulles de symboles d'un alphabet D-aire formula_3 est noté formula_4. En général, cet alphabet est binaire et on a formula_5, formula_6. formula_4 est alors l'ensemble des chaînes de caractères de taille finie formées de 0 et de 1, formula_8. Un code associe à un symbole de source formula_9 un mot de code formula_10. Ce mot de code est de longueur variable formula_11, la longueur étant son nombre de bits. Ces codes sont appelés codes à longueur variable.
L'espérance de la longueur d'un code formula_12 (ou longueur moyenne, selon la loi de probabilité de X) est donnée par: 
formula_14 peut également se voir comme le taux de codage, c'est-à-dire le nombre moyen de bits codés par symbole de source.
Cette définition est motivée par le fait que l'on transmet des séquences de symboles, et non des symboles isolés séparés par un symbole de séparation, ce qui serait inefficace.
Propriétés des codes de source.
Un code doit respecter certaines propriétés pour être utile: une concaténation de mots de code doit avoir un décodage unique, aisé, et permettre la plus grande compression possible. Certaines conditions sont imposées au code pour satisfaire ces propriétés.
Codes préfixes.
Autrement dit, toute séquence codée est décodable par une unique séquence de symbole de source.
 L'intérêt des codes préfixés est qu'ils sont décodables immédiatement, en les parcourant de la gauche vers la droite. La fin d'un mot de code est reconnaissable immédiatement, sans la nécessité d'un code spécial pour indiquer la terminaison ou une séparation. De plus, les codes préfixes sont uniquement décodables.
Le code formula_15 est un code préfixé. 
La séquence codée comme : 11011111010110010110111
se décompose facilement en: 110 111 110 10 110 0 10 110 111
et se décode donc comme : c d c b c a b c d
Lien avec les arbres.
Il existe une bijection entre les arbres et les codes préfixes : étant donné un arbre formula_17-aire dont les feuilles sont les éléments d’un alphabet formula_18, on trouve un code préfixe de formula_19en associant à chaque élément les indices des fils allant de la racine à cet élément, la taille du code de chaque élément est alors la profondeur de cet élément dans l’arbre.
Par exemple, le code préfixe formula_20 de formula_21sur l’alphabet formula_22 est représenté par l'arbre ternaire :
Réciproquement, étant donné un code préfixe, on peut construire de tels arbres.
Ces arbres sont aussi une structure de données pour l’algorithme de décodage du code préfixe : en partant de la racine, à chaque lettre formula_9 aller au fils formula_9 du nœud sur lequel on se trouve, si ce fils est une feuille, l’afficher et revenir à la racine.
 programme décoder(A, mot)
 A' ← A
 décodé ← mot vide
 pour chaque lettre x dans mot
 A' ← fils x de A
 si A' est une feuille
 décodé ← décodé + A'
 A' ← A
 retourner décodé
Inégalité de Kraft.
L'inégalité de Kraft donne une condition nécessaire et suffisante sur les longueurs des mots de code pour qu'un code possède un code préfixé équivalent (possédant la même distribution de longueur des mots). Pour un code défini sur un alphabet de taille formula_25, et un alphabet de source formula_2 de taille formula_27, alors il est préfixé si et seulement si formula_28
Code optimal.
Un code optimal est un code préfixé de longueur moyenne minimale. La compression est d'autant plus forte que la longueur moyenne des mots de code est faible. Trouver un code optimal revient donc à choisir les longueurs des mots de codes, par rapport à la distribution de probabilité des symboles de source, afin de rendre la longueur moyenne minimale. Pour trouver un tel code, il faut minimiser la longueur moyenne du code formula_14, sous les conditions de l'inégalité de Kraft, soit:
Par la méthode des multiplicateurs de Lagrange, on définit le lagrangien formula_32:
que l'on différentie par rapport aux formula_34. Un rapide calcul donne les longueurs optimales formula_35, soit une longueur moyenne formula_36, c'est-à-dire l'entropie formula_37.
Les longueurs données par cette méthode ne sont cependant pas entières, sauf dans le cas exceptionnel où les formula_38 sont des puissances négatives de D. Ce résultat n'est donc pas utile en pratique, et il est nécessaire d'utiliser d'autres méthodes pour construire un code optimal.
Théorème du codage de source.
Le Théorème du codage de source (ou premier théorème de Shannon, ou moins usité en français, théorème de codage sans bruit) est un théorème énoncé par Claude Shannon en 1948, qui énonce la limite théorique pour la compression d'une source.
Le raisonnement de Shannon se base sur des vecteurs de symboles et sur une source -aire stationnaire (suite de variables indépendantes et identiquement distribuées). Le théorème montre que lorsque , la longueur moyenne du code tend vers l'entropie. 
Types de codes.
Codage de Shannon-Fano.
Le codage de Shannon-Fano est la première méthode de codage entropique efficace, développée en même temps par Claude Shannon et Robert Fano en 1949. Cette méthode n'est en revanche pas optimale, et a été rapidement supplantée par le codage de Huffman.
Voir le chapitre sur le Codage de Shannon-Fano.
Codage de Huffman.
Le codage de Huffman a été développé par David Albert Huffman en 1952. C'est un code optimal au niveau symbole. De nombreuses améliorations ont été proposées après sa publication, notamment le codage adaptatif, qui permet de ré-estimer les probabilités à la volée. Ceci permet d'effectuer le codage et le décodage sans disposer de la totalité des statistiques de la source.
Voir le chapitre sur le Codage de Huffman.
Codage arithmétique.
Le codage arithmétique est une extension du codage de Shannon-Fano-Elias. Il est optimal au niveau bit.
Applications.
La principale application du codage entropique est la compression de données. Si le codage de Huffman a rapidement laissé sa place aux méthodes par dictionnaire pour la compression de données génériques, il reste très utilisé en compression d'images, et est présent dans la norme JPEG. Le codage arithmétique s'est montré efficace seulement à partir du début des années 1990, et est utilisé aussi bien en compression de données génériques (PAQ) qu'en compression d'images (JPEG 2000) et vidéo (H.264).