This website is largely inspired by the 1998 famous TMO Progress Report Code performance as a function of block size by S. Dolinar, D.Divsalar and F. Pollara. That report has been a fundamental reference for many code designers in the two past decades, providing, besides of a coincise and insightful treatment of finite length performance bounds, a comparison between turbo codes, convolutional codes and short algebraic codes of various lengths. The report was complemented by a remarkable website (maintained by NASA-JPL), including further comparisons with existing coding schemes.

By maintaining this website we hope to keep with the tradition of providing a thorough reference and a benchmark for future research in the field of code design.

We decided for the title Pretty Good Codes to emphasize that this website does not aim at providing an overview of the best known codes. From an engineering perspective, it is in fact difficult to define a code as universally better than all the other codes. Rather, there might be a best code for a given application (until a better one is found!). One may need a code able to maximize the coding gain at a codeword error rate, say, 10-3. That code may suffer for an error floor at lower error rates. Hence, it would not be the right choice if the target codeword error rate is, for example, 10-6.

In some applications decoding has to be extremely simple, in other applications decoding complexity may not be an issue. In some cases it is important to embed in the decoding process an error detection capability. This is the case of applications requiring a high level of reliability (a classical example is the satellite telecommand link). Here, the decoder has to be made incomplete, increasing the probability of (detected) errors. For all these reasons, we opted for providing results on codes for which a practical (not necessarily optimum) decoding algorithm exists (as for turbo or LDPC codes under iterative decoding), or its is likely to be available soon (as for ordered statistics decoding of certain block codes, which is at the moment feasible, but not always practical for implementation in real systems).

We will complement the performance chart with descriptions of the simulated codes and, when possible, we will provide our view on the pros and cons of the specific solution.

Using this site

Behind the scenes