The genetic code is usually introduced as universal. Sixty-four codons, twenty amino acids, three stop signals, the same in a bacterium and in you. It is one of the tidiest facts in biology, and it is the reason a codon table can be printed on a single page.
It is also not quite true, and the exception lives in every cell of your body rather than in some obscure organism.
Your mitochondria read a different table
Human mitochondrial DNA is about 16,569 base pairs and carries 37 genes: 22 for transfer RNAs, 2 for ribosomal RNAs, and 13 that encode proteins. Those 13 are subunits of the respiratory complexes — the machinery that produces most of your usable energy.
They are not translated with the standard genetic code. They are translated with what NCBI numbers as translation table 2, the vertebrate mitochondrial code, and it differs from the standard table in exactly four codons.
- UGA — a stop signal in the standard code; tryptophan in mitochondria.
- AGA and AGG — arginine in the standard code; stop signals in mitochondria.
- AUA — isoleucine in the standard code; methionine in mitochondria.
Four codons out of sixty-four is a small share. Which four they are is what makes the difference.
The error runs in both directions at once
Two of the four changes are stop signals, and they move in opposite directions. That is what makes reading a mitochondrial gene with the standard table so unhelpfully wrong.
Feed a mitochondrial sequence to a tool that only knows the standard code and it will hit a UGA and stop — because in the standard code UGA means stop. In the mitochondrion that codon is tryptophan and translation continues. So the protein comes out truncated, sometimes drastically.
Then, further along, the same tool will run straight through an AGA or an AGG, because in the standard code those are arginine. In the mitochondrion they terminate the protein. So the same sequence also runs past its real ending.
One reading produces two failures in opposite directions: a protein that is both too short and too long, with nothing about it looking broken. From the tool's point of view nothing went wrong, so nothing is reported.
Initiation differs as well
Most discussions of the mitochondrial code stop at the four reassignments. Initiation differs as well.
The standard code recognises AUG, plus UUG and CUG as documented alternatives. The vertebrate mitochondrial code recognises five: AUU, AUC, AUA, AUG and GUG.
AUA is particularly interesting: it is reassigned to methionine and it also becomes a start codon. A tool that applies the four reassignments but keeps the standard start set will find open reading frames in the wrong places, which is a subtler failure than a wrong amino acid and harder to notice.
The limit no table can fix
The problem is not entirely solved by adding more tables, however. NCBI publishes more than thirty of them, and there are two recodings that none of them can express.
Selenocysteine is inserted at a UGA codon, and pyrrolysine at a UAG — both of which are otherwise stop signals. What decides between "stop here" and "insert this amino acid" is not the codon. It is a structure elsewhere in the RNA molecule: for selenocysteine, a specific element downstream of the codon.
The meaning of the codon therefore depends on context, which a simple three-letter lookup cannot represent, no matter how many tables it has. This is a structural limit of the representation rather than a missing row.
This matters for reading claims as much as for reading sequences. A tool that offers many translation tables is not thereby complete, and one that implies it is has overstated what a codon table can do.
What we changed here, and why we are saying so
Our own genetic code table shipped the standard code and nothing else, and nothing on the page said so. For anyone looking up a mitochondrial codon, it returned a confidently wrong answer — the exact failure described above, in a tool published to help.
It now carries both tables with a selector, marks the four reassigned codons when the mitochondrial table is showing, and states the selenocysteine and pyrrolysine limit rather than implying completeness. The codon data and the translation logic sit in a tested module, and the tests re-derive both tables from NCBI's published encoding rather than trusting a transcription — which incidentally confirmed that the standard table we had been serving was correct in all 64 positions.
Writing that down matters more than quietly fixing it: a guide describing this trap while our own tool still fell into it would not have been worth publishing.
What to check in whatever tool you use
The test takes one lookup. Enter UGA and see what comes back — and if you want the reverse view, which codons map to a given amino acid, our amino acid lookup lists them for the standard code. If the tool offers no way to say which genetic code you mean, it is answering for the standard code whether or not it says so, and that answer is wrong for mitochondrial sequence.
Checking the start codons is a more stringent test, as fewer implementations get it right. If a tool offers a mitochondrial mode but still treats AUG as the only initiation codon, it has applied half the table.
And if you are working with an actual sequence rather than a single codon, confirm which table your pipeline is using rather than assuming a default. Annotation formats carry a translation-table identifier precisely because the default is not safe.
Where this comes from, and what will date
The codon assignments, the stop sets and the initiation codons for both tables were taken from NCBI's published genetic-code data and decoded position by position from its machine-readable form, rather than from a prose summary — a summary we consulted stated the mitochondrial stop set incorrectly while elsewhere describing the reassignment correctly, which is a good argument for reading the encoding.
The human mitochondrial genome figures — 16,569 base pairs, 37 genes, 13 of them protein-coding — are the standard description of the revised Cambridge reference sequence.
One thing we looked into and are not asserting: NCBI's table numbering has gaps, and it is sometimes said that certain tables were withdrawn. The page that lists the tables gives no explanation for the gaps, so we make no claim about them.
Table assignments are occasionally revised as evidence accumulates, and the numbering has grown over the years, so those are worth re-checking. The shape of the problem is stable: the genetic code is a family rather than a single table, and a tool that does not ask which one you mean has already chosen for you.