Syndrome explorer
A stabilizer code never looks at the state it protects — measuring it would destroy the superposition. It measures only whether each of its generators was disturbed. Apply an error below and follow what happens: which generators fire, what the decoder concludes from that alone, and whether the correction restored the logical state or silently changed it.
Code
Shor code, error XIIIIIIII
Corrected
The decoder named exactly the error that occurred, and the state is restored.
What each generator measured
Each row is a stabilizer generator, each column a qubit. A cell is marked when the error and the generator disagree on that qubit in a way that costs a sign. The syndrome bit is the parity of the marked cells in that row — so two marks cancel and read 0.
| Generator | q0 | q1 | q2 | q3 | q4 | q5 | q6 | q7 | q8 | Marks | Bit |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Error | X | · | · | · | · | · | · | · | · | weight 1 | — |
| ZZIIIIIII | [Z] | Z | · | · | · | · | · | · | · | 1 | 1 |
| IZZIIIIII | · | Z | Z | · | · | · | · | · | · | 0 | 0 |
| IIIZZIIII | · | · | · | Z | Z | · | · | · | · | 0 | 0 |
| IIIIZZIII | · | · | · | · | Z | Z | · | · | · | 0 | 0 |
| IIIIIIZZI | · | · | · | · | · | · | Z | Z | · | 0 | 0 |
| IIIIIIIZZ | · | · | · | · | · | · | · | Z | Z | 0 | 0 |
| XXXXXXIII | X | X | X | X | X | X | · | · | · | 0 | 0 |
| IIIXXXXXX | · | · | · | X | X | X | X | X | X | 0 | 0 |
Syndrome 10000000 — 1 of 8 generators were disturbed.
Decode and correct
| Error applied | XIIIIIIII | weight 1; never observed by the decoder |
|---|---|---|
| Syndrome measured | 10000000 | the only thing the decoder sees |
| Correction inferred | XIIIIIIII | the same operator that occurred |
| Residual | IIIIIIIII | a stabilizer, so it acts as the identity on the code space |
Success is the residual being a stabilizer, not the decoder naming the error. Those differ: on a degenerate code the decoder routinely names a different operator and restores the state perfectly, and scoring by equality would count that as a failure.
Every error of weight 1 and 2
| Weight | Errors | Corrected | Miscorrected | Undetected | Trivial |
|---|---|---|---|---|---|
| 1 | 27 | 27 | 0 | 0 | 0 |
| 2 | 324 | 36 | 279 | 0 | 9 |
“Trivial” counts operators that are themselves stabilizers — they act as the identity, so there is nothing to detect. This code is degenerate: 22 distinct syndromes cover more errors than that, so some single-qubit errors are indistinguishable — and are corrected anyway.
The decoder’s lookup table
| Syndrome | Correction applied | Weight |
|---|---|---|
| 00000000 | IIIIIIIII | 0 |
| 00000001 | IIIIIIZII | 1 |
| 00000010 | ZIIIIIIII | 1 |
| 00000011 | IIIZIIIII | 1 |
| 00000100 | IIIIIIIIX | 1 |
| 00000101 | IIIIIIIIY | 1 |
| 00001000 | IIIIIIXII | 1 |
| 00001001 | IIIIIIYII | 1 |
| 00001100 | IIIIIIIXI | 1 |
| 00001101 | IIIIIIIYI | 1 |
| 00010000 | IIIIIXIII | 1 |
| 00010011 | IIIIIYIII | 1 |
| 00100000 | IIIXIIIII | 1 |
| 00100011 | IIIYIIIII | 1 |
| 00110000 | IIIIXIIII | 1 |
| 00110011 | IIIIYIIII | 1 |
| 01000000 | IIXIIIIII | 1 |
| 01000010 | IIYIIIIII | 1 |
| 10000000← measured | XIIIIIIII | 1 |
| 10000010 | YIIIIIIII | 1 |
| 11000000 | IXIIIIIII | 1 |
| 11000010 | IYIIIIIII | 1 |
Decoder benchmarks measured under identical conditions live in the QEC Lab. This page computes exactly and exhaustively on codes small enough for that to be honest; it is a way to see what a syndrome is, not a decoder benchmark.