We present an approach to showing that a linear code is resilient to random errors. We use this approach to obtain decoding results for both transitive and doubly transitive codes. We give three kinds of results about linear codes in general, and transitive linear codes in particular.1. We give a tight bound on the weight distribution of every transitive linear code2. We give a criterion that certifies that a linear code C can be decoded on the binary symmetric channel. Let Ks(x) denote the Krawtchouk polynomial of degree s, and let C ⊥ denote the dual code of C. We show that bounds on E c∈C ⊥ [K ϵN (wt(c)) 2 ] imply that C recovers from errors on the binary symmetric channel with parameter ϵ. Weaker bounds can be used to obtain list-decoding results using similar methods. One consequence of our criterion is that whenever the weight distribution of C ⊥ is sufficiently close to the binomial distribution in some interval around N 2 , C is resilient to ϵ-errors. 3. We combine known estimates for the Krawtchouk polynomials with our weight bound for transitive codes, and with known weight bounds for doubly transitive codes, to obtain list-decoding results for both these families of codes. In some regimes, our bounds for doubly transitive codes achieve the information-theoretic optimal trade-off between rate and list size.