Existuje mnoho algoritmů pro dekódování BCH kódů. Nejběžnější používají následující schéma:
- Spočtěme pro přijaté slovo syndromy sj.
- Ze syndromů určeme počet chyb t a polynom pro lokalizaci chyb Λ(x).
- Nalezněme kořeny polynomu pro lokalizaci chyb xj a jejich logaritmy -ij, tak že α−ij=xj.
- Spočtěme chybové hodnoty ei v pozicích ij.
- Opravme chyby.
V průběhu algoritmu může dekódovací algoritmus určit, že přijaté slovo obsahuje příliš mnoho chyb a nemůže být opraveno.
Například, pokud vhodná hodnota pro t není nalezena, korekce selže.
V případě zkráceného kódu, může být vypočtena pozice chyby mimo kódové slovo.
Pokud přijaté slovo má více chyb než kód dokáže opravit, dekodér může vrátit zdánlivě korektní zprávu, která se liší od zprávy odeslané.
Pokud jsou některá písmena zprávy nečitelná, můžeme jejich pozici považovat za pozici chyby.
Nalezení chyby na neznámé pozici vyžaduje stejně informací jako opravení dvou chyb na známých pozicích.
Výpočet syndromů
Přijaté slovo
je součet korektního kódového slova
a neznámého chybového slova
Hodnoty syndromů jsou získány dosazením hodnot
do
vnímaného jakožto polynom.
Proto jsou syndromy[5]

pro
od
do
Protože
jsou kořeny
jehož je
násobek,
Zkoumání hodnot syndromů proto izoluje chybový vektor,
takže můžeme začít v jeho hledání.
Pokud v přenosu nevznikly chyby, je
pro každé
V takovém případě dekódování končí.
Výpočet polynomu pro lokalizaci chyb
Pokud jsou některé syndromy nenulové, jsou v přijaté zprávě chyby. Dekodér musí zjistit, kolik jich je a kde se vyskytují.
Předpokládejme, že

Není zřejmé, jak začít řešit rovnice s neznámými
a
vysvětlující syndromy.
Prvním krokem je nalezení polynomu pro lokalizaci chyb
kompatibilního se spočtenými syndromy a s minimálním možným 
Dva populární algoritmy pro tuto úlohu jsou:
- Algoritmus Peterson–Gorenstein–Zierler[6]
- Algoritmus Berlekamp–Massey
Cílem obou algoritmů je nalézt

takové, aby pro každé
od
do
platilo

Navíc požadujeme 
Algoritmus Peterson–Gorenstein–Zierler
Algoritmus řeší soustavu rovnic hrubou silou. Nachází jediné v a Λ, které může vyhovovat, správně by měl nakonec zkontrolovat, zda skutečně vyhovují i pro ve výpočtu nepoužité syndromy.
Začněme s v=[t=(d-1)/2].

- pak vektor


- Nechť neznámé koeficienty polynomu
jsou

- Pokud má
nenulový determinant, pak maticová rovnice

- má řešení. Nalezněme tedy koeficienty polynomu
a skončeme.
- Jinak pokud
deklarujme nulový polynom lokalizace chyb a skončeme.
- Jinak snižme
o
a vraťme se k sestavení matice 
V případě
větším než je počet chyb (můžeme dodefinovat nadbytečná
nulou).
Pak

a determinant je nulový, dokud není
minimální možné.
Algoritmus Berlekamp–Massey
Algoritmus udržuje Λ odpovídající počátečnímu úseku posloupnosti syndromů.
Postupně prodlužuje délku úseku a koriguje Λ.
Nalezení kořenů polynomu pro lokalizaci chyb
Není znám algoritmus, který by hledal kořeny jinak než hrubou silou postupným dosazováním prvků tělesa B.
Algoritmus Chien search optimalizuje výpočet tím,
že minimalizuje násobení proměnnými na úkor stejného počtu násobení konstantami.
Výpočet chybových hodnot
Jakmile jsou známy polohy chyb, zbývá určit velikosti chyb na těchto místech.
Odečtením nalezených velikostí chyb dostaneme z přijatého slova kódové slovo.
V případě binárního kódu a původně neznámé polohy chyby stačí negovat příslušný bit.
V případě nečitelných dat je pro účely hledání chyby nahrazeno nečitelné písmeno nulou a pokračujeme jako v obecném případě.
V obecném případě mohou být velikosti chyb
určeny řešením soustavy lineárních rovnic


- …
Zdůvodnění Forneyova vzorce
Algoritmus je založen na Lagrangeově interpolaci a technikách vytvořujících funkcí.
Prozkoumejme
Pro jednoduchost dodefinujme
pro
a
pro 
Pak
Vztah
jsme již odvodili dříve,
takže víme pro důkaz nepodstatnou informaci, že koeficienty u
jsou 0 pro 
Zkoumejme dál význam jednotlivých koeficientů:


Můžeme získat následující formu polynomu :

Chceme spočítat neznámé
a můžeme zjednodušit kontext odstraněním
členů.
To vede k definici polynomu vyhodnocujícího chyby

Díky předpokladu
dostáváme

Zaměřme se na
Díky
(trik Lagrangeovy interpolace) suma degeneruje na jediný sčítanec

K nalezení
již stačí zbavit se nadbytečného součinu.
Můžeme jej spočítat přímo z již známých kořenů
polynomu
ale můžeme využít jednodušší výraz.
Protože formální derivace 
Získáváme v bodě
opět jediný sčítanec

Takže konečně

Tato formule je zjednodušením v případě, kdy formální derivaci
počítáme z tvaru
pomocí

kde
značí
místo násobení v příslušném tělese.
Dekódování založené na rozšířeném Euklidově algoritmu
Celý proces hledání lokalizačního polynomu Λ i hledání velikosti chyb je možno založit na
- Rozšířeném Eukleidově algoritmu. Navíc přitom můžeme opravovat i nečitelné znaky na neznámých pozicích.
Nechť
jsou pozice nečitelných znaků. Sestavíme tomu odpovídající polynom
Dodefinujme nečitelná místa nulou a spočtěme syndromy.
Tak jak jsme si popsali u Forneyova vzorce nechť 
Spustíme rozšířený Euklidův algoritmus na hledání nejmenšího společného dělitele polynomů
a
Naším cílem ale nebude nalézt nejmenšího společného dělitele, ale polynom
stupně nejvýš
a polynomy
tak, aby
Nízký stupeň polynomu
zajistí, že pro
budou platit zobecněné (o polynom opravující nečitelné znaky) definiční vztahy které jsme kladli na 
Při definici
a použití
na místě
ve Fourney algoritmu pak dostaneme odhad velikosti chyb.
Hlavní výhodou algoritmu je, že zároveň spočítá ve Forneyově vzorci potřebné 
Zdůvodnění nejen dekódování založeném na rozšířeném Euklidově algoritmu
Naší snahou je nalézt kódové slovo, které se od přijatého slova na čitelných pozicích liší co nejméně. Při vyjádření přijatého slova jako součtu nejbližšího kódového slova a chybového slova tak hledáme chybové slovo s nejmenším počtem nenulových souřadnic na čitelných pozicích. Syndrom
klade na chybové slovo podmínku
Tyto podmínky můžeme zapisovat samostatně, nebo můžeme vytvořit polynom
a klást podmínky na koeficienty u mocnin
až

Víme-li, že na pozici
je nečitelný znak, můžeme množinu syndromů
nahradit množinou syndromů
definovaných vztahem
Pokud platí pro chybové slovo podmínky kladené množinou syndromů
pak
Nová množina syndromů má vůči chybovému vektoru
stejný vztah jako měla původní množina syndromů vůči chybovému vektoru
Všimněme si, že s výjimkou souřadnice
kde je
je
nenulové,
právě když je
nenulové. Co se týče hledání pozic chyb, můžeme proto takto upravit množinu syndromů postupným zohledněním pozic neznámých znaků. Výsledná množina syndromů bude kratší o počet
nečitelných znaků.
Při formulaci v řeči polynomů nám náhrada množiny syndromů
množinou syndromů
vede k
Odtud 
Po nahrazení
pomocí
pak proto budeme hledat shodu u koeficientů 
Obdobně jako odstraňování vlivu nečitelných znaků můžeme vnímat i hledání chybných pozic. Pokud najdeme
souřadnic tak, že odstranění jejich vlivu povede k tomu, že zbylé syndromy budou nulové, existuje chybový vektor jenž má nenulové hodnoty pouze v těchto souřadnicích. Pokud označíme
polynom odstraňující vliv těchto souřadnic, dostaneme 
V Euklidově algoritmu se snažíme odstranit nejvýš
chyb (na čitelných místech), protože při větším počtu chyb může být více kódových slov od přijatého slova stejně daleko. Proto musí pro hledané
nastat ve výše uvedeném vztahu rovnost u všech souřadnic počínaje 
Ve Forney vzorci (pro nalezení velikosti chyb) nezáleželo na tom, zda je
vynásobena nenulovou konstantou, proto je podmínka
zbytečná.
Může se stát, že Euklidův algoritmus najde
stupně většího než
který má tolik různých kořenů, jako je jeho stupeň, a pomocí Forney algoritmu bude možno opravit chyby v polohách všech jeho kořenů, přesto opravovat takto nalezené chyby je nebezpečné. Obvykle při nalezení
většího stupně odmítáme chyby opravovat. Stejně tak oprava chyb selže, pokud má
vícenásobné kořeny či jejich počet neodpovídá stupni
Selhání také může detekovat to, když Forney vzorec vrátí chybu z rozdílu těles 
Příklady dekódování
Dekódování binárního kódu bez nečitelných znaků
Nechť
a používáme dříve uvedený kód s
v GF(24).
(Tento generátor je použit v QR kódech.)
Nechť přenášená zpráva je [1 1 0 1 1], nebo jako polynom
Zabezpečovací symboly jsou spočteny dělením
polynomem
a přičtením (odečtením) zbytku
neboli [ 1 0 0 0 0 1 0 1 0 0 ] k
Přidáním ke zprávě tak dostáváme přenášené kódové slovo [ 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 ].
Předpokládejme, že dva bity byly poškozeny v průběhu přenosu, takže přijaté slovo je [ 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 ].
Jakožto polynom tedy:

Abychom chyby opravili, spočteme nejprve syndromy.
Přitom
dostaneme
a
K zápisu bychom mohli používat hexadecimální číslice, ale držme se v tomto úvodním příkladu dvojkové soustavy.
Následně aplikujme Petersonův algoritmus.
![{\displaystyle \left[S_{3\times 3}|C_{3\times 1}\right]={\begin{bmatrix}s_{1}&s_{2}&s_{3}&s_{4}\\s_{2}&s_{3}&s_{4}&s_{5}\\s_{3}&s_{4}&s_{5}&s_{6}\end{bmatrix}}={\begin{bmatrix}1011&1001&1011&1101\\1001&1011&1101&0001\\1011&1101&0001&1001\end{bmatrix}}\Rightarrow {\begin{bmatrix}0001&0000&1000&0111\\0000&0001&1011&0001\\0000&0000&0000&0000\end{bmatrix}}}](//wikimedia.org/api/rest_v1/media/math/render/svg/01ae26421a97007762e7db564652697943f6c6dd)
Protože S3×3 je singulární, což není překvapením, protože slovo obsahuje pouze dvě chyby.
Nyní levý horní roh matice je identický s [S2×2 C2×1],
což vede k řešení
Výsledný polynom pro lokalizaci chyb je
Polynom má kořeny
a
Exponenty
odpovídají pozicím chyb.
Nemusíme v tomto případě počítat chybové hodnoty, protože jedinou možnou hodnotou je hodnota 1.
Dekódování s nečitelnými znaky a maximálním opravitelným počtem chyb
Předpokládejme nyní, stejný případ, ale přijaté slovo má dva nečitelné znaky [ 1 0 0 ? 1 1 ? 0 0 1 1 0 1 0 0 ].
Nahradíme nečitelné znaky (např.) nulami, vytvořme polynom potlačující vliv nečitelných znaků
Najděme syndromy
a
(Používáme logaritmické vyjádření, které je vzhledem k isomorfismu GF(24) nezávislé na reprezentaci pro sčítání.
Možné reprezentace jednotlivých mocnin jsou stejně jako v předchozím případě hexadecimálními číslicemi 1, 2, 4, 8, 3, 6, C, B, 5, A, 7, E, F, D, 9 se sčítáním založeném na bitovém xor.)
Vytvořme polynom syndromů
spočtěme 
Spusťme rozšířený euklidův algoritmus:






Dostali jsme se k polynomu stupně 3, a vzhledem k tomu, že
dostáváme

a tedy

Nechť
Netrapme se tím, že absolutní člen není 1.
Nalezněme hrubou silou kořeny polynomu
Jsou jimi
a
(po nalezení prvního můžeme vydělit
polynomem
a kořen polynomu stupně 1 nalezneme snadno).
Označme
a
Velikosti chyb hledáme ve tvaru
kde
jsou kořeny polynomu
Dostáváme
To, že
by nás nemělo překvapit.
Opravený kód tedy má být [ 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0].
Dekódování s nečitelnými znaky a malým počtem chyb
Ještě ukažme průběh výpočtu v případě, kdy je v přijatém kódu pouze jedna chyba [ 1 0 0 ? 1 1 ? 0 0 0 1 0 1 0 0 ].
Opět nahradíme nečitelné znaky nulami, spočteme
a syndromy
a
Sestavíme polynom syndromů
a
Spusťme rozšířený Euklidův algoritmus:

Dostali jsme se k polynomu stupně nejvýš 3, a vzhledem k tomu, že
dostáváme

a tedy

Nechť
Netrapme se tím, že absolutní člen není 1. Kořenem polynomu je 
Označme
a
Velikosti chyb hledáme ve tvaru
kde
jsou kořeny polynomu
Dostáváme
To, že
by nás nemělo překvapit.
Opravený kód tedy má být [ 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0].