Kanalno kodiranje je tehnika, ki se uporablja v digitalnih komunikacijah za zagotovitev, da je prenos sprejet z minimalnimi napakami ali brez njih. Različne metode kodiranja, ki jih je mogoče uporabiti, so dosežene s prepletanjem dodatnih binarnih števk v prenos. Pri dekodiranju na sprejemni strani je mogoče prenos preveriti glede napak, ki so se lahko zgodile, in v mnogih primerih popraviti. V drugih primerih prejemnik preprosto znova zaprosi za prenos.
Ideja za kodiranje kanalov je bila razvita zaradi neizogibnega obstoja napak na kateri koli vrsti komunikacijskega kanala. Radijski valovi, električni signali in celo svetlobni valovi preko optičnih kanalov bodo imeli določeno količino šuma na mediju, pa tudi poslabšanje signala, ki se pojavi na določeni razdalji. Ker je tako pogost problem v komunikacijah, so se v vejah uporabne matematike, kot sta teorija informacij in teorija kodiranja, razvile številne teorije o tem, kako ravnati z njim.
Ena pogosto uporabljena metoda se imenuje samodejna zahteva za ponovitev (ARQ), ki preprosto vključuje, da prejemnik preveri prenos za napake in zaprosi za ponovno oddajo, če se zgodi. To se včasih imenuje popravljanje napak za nazaj. Po drugi strani je kanalno kodiranje tehnika popravljanja napak naprej (FEC). Pošiljatelj pripravi bite za prenos z uporabo posebnega algoritma, znanega kot koda za odpravljanje napak, ki se nato dekodira na strani prejemnika. Obe metodi se pogosto uporabljata tudi na hibridni način, ki omogoča popravilo majhnih napak pri prenosu s kanalno kodo, velike napake pa zahtevajo popolno ponovno oddajanje.
Prvo tehniko kanalnega kodiranja je ustvaril matematik Richard Hamming, ki je razvil tisto, kar je znano kot Hammingova koda. To je bila prva koda za odpravo napak naprej, ki vključuje vključitev dodatnih binarnih števk v prenos, ki se imenujejo paritetni bit. Pameten izračun paritetnih bitov na sprejemnem koncu prenosa bo razkril, ali so se pri prenosu pojavile kakršne koli napake, kje so v nizu bitov in kako jih popraviti, da bi obnovili prvotni prenos.
Hammingova koda spada v družino metod kanalnega kodiranja, ki se imenujejo blokovne kode, od katerih so bile mnoge razvite v preteklih letih. Blok kode običajno vključujejo bite, ki se zbirajo v bloke fiksne dolžine, ki se nato imenujejo kodne besede. Vsaki kodni besedi prejemnik dodeli ustrezne kontrolne bite za dekodiranje. Metode blokovne kode ponavadi povečajo velikost prenosa zaradi dodanih bitov v kodni besedi, kar lahko vpliva na pasovno širino kanala.
Druga metoda kanalskega kodiranja je znana kot konvolucijska koda. Te metode so veliko hitrejše in lahko kodirajo bitni tok poljubne dolžine. Ena pogosto uporabljena koda te vrste se imenuje Viterbijeva koda, ki jo je ustvaril italijanski matematik Andrew Viterbi. Pomanjkljivost te metode je, da se s povečanjem dolžine konvolucijske kode poveča tudi njena kompleksnost pri dekodiranju. V mnogih primerih se konvolucijske kode uporabljajo v kombinaciji z blokovnimi kodami v tako imenovanih združenih kodah za popravljanje napak.