Kanavakoodaus on tekniikka, jota käytetään digitaalisessa viestinnässä sen varmistamiseksi, että lähetys vastaanotetaan mahdollisimman vähän tai ei lainkaan virheitä. Erilaiset koodausmenetelmät, joita voidaan käyttää, kudotaan lisäämällä binaarilukuja lähetykseen. Kun lähetys on dekoodattu vastaanottopäässä, lähetys voidaan tarkistaa mahdollisten virheiden varalta ja monissa tapauksissa korjata. Muina aikoina vastaanottaja yksinkertaisesti pyytää lähetystä uudelleen.
Kanavan koodauksen idea kehitettiin, koska virheitä oli väistämättä olemassa tietyn tyyppisessä viestintäkanavassa. Radioaalloilla, sähköisillä signaaleilla ja jopa valoaalloilla kuituoptisten kanavien yli on jonkin verran kohinaa väliaineessa sekä signaalin heikkeneminen, joka tapahtuu jonkin matkan päässä. Koska tällainen yleinen ongelma viestinnässä, lukuisat teoriat sen käsittelemiseksi ovat kehittyneet soveltavan matematiikan aloilla, kuten informaatioteoria ja koodausteoria.
Yksi yleisesti käytetty menetelmä on nimeltään automaattinen toistopyyntö (ARQ), johon yksinkertaisesti kuuluu, että vastaanottaja tarkistaa lähetyksen virheiden varalta ja pyytää uudelleenlähetystä, jos sitä tapahtuu. Tätä kutsutaan joskus taaksepäin virheen korjaamiseksi. Kanavakoodaus on toisaalta FEC (forward error korjaus) -tekniikka. Lähettäjä valmistelee bitit lähetettäväksi käyttämällä erityistä algoritmia, joka tunnetaan virheenkorjauskoodina ja joka sitten dekoodataan vastaanottopäässä. Molempia menetelmiä käytetään myös usein hybriditavalla, jolloin lähetyksessä olevat pienet virheet voidaan korjata kanavakoodilla, ja suuret virheet vaativat täydellisen uudelleenlähetyksen.
Ensimmäisen kanavakoodaustekniikan loi matemaatikko Richard Hamming, joka kehitti niin kutsutun Hamming -koodin. Tämä oli ensimmäinen eteenpäin suuntautuva virheenkorjauskoodi, joka sisältää lähetykseen lisäbinaarilukuja, joita kutsutaan pariteettibiteiksi. Älykäs laskelma pariteettibiteistä lähetyksen vastaanottopäässä paljastaa, onko lähetyksessä tapahtunut virheitä, missä ne ovat bittijonossa, ja kuinka korjata ne alkuperäisen lähetyksen palauttamiseksi.
Hamming -koodi kuuluu lohkokoodiksi kutsuttujen kanavakoodausmenetelmien perheeseen, joista monia on kehitetty vuosien varrella. Lohkokoodit sisältävät tyypillisesti bittien keräämisen kiinteän pituisiksi lohkoiksi, joita kutsutaan sitten koodisanoiksi. Jokaiselle koodisanalle annetaan sopivat tarkistusbitit vastaanottajan dekoodausta varten. Lohkokoodimenetelmillä on taipumus lisätä lähetyksen kokoa koodisanan lisättyjen bittien vuoksi, mikä voi vaikuttaa kanavan kaistanleveyteen.
Toinen kanavakoodausmenetelmä tunnetaan konvoluutiokoodina. Nämä menetelmät ovat paljon nopeampia ja voivat koodata minkä tahansa pituisen bittivirran. Yksi tämän tyyppinen yleisesti käytetty koodi on italialaisen matemaatikon Andrew Viterbin luoma Viterbi -koodi. Tämän menetelmän haittapuoli on se, että konvoluutiokoodin pituuden kasvaessa sen monimutkaisuus dekoodauksen aikana kasvaa. Monissa tapauksissa konvoluutiokoodeja käytetään yhdessä lohkokoodien kanssa niin kutsutuissa ketjutetuissa virheenkorjauskoodeissa.