Skip to content

Error correction: why one logical qubit needs a thousand physical ones

Published: at 09:25 PM

When people talk about quantum computers they usually quote a qubit count. A hundred qubits, a thousand qubits. The number that actually matters is hiding behind that one: how many of those qubits does it take to make one qubit you can trust?

The answer, for the leading approach, is somewhere around a thousand. Google’s own projection from its Willow chip is that a single qubit with an error rate of one in a million would take a grid of 1,457 physical qubits.1 Older estimates for running something like Shor’s algorithm land in the range of a thousand to ten thousand per logical qubit.2

That sounds absurd. In a normal computer you don’t need a thousand transistors to store one reliable bit. This post is my attempt to explain why the overhead is so big, why surface codes remain an important approach, and what the “below threshold” result from late 2024 actually means, without overselling it.

Qubits are bad at being left alone

A classical bit in your laptop is a big, loud thing. Billions of electrons on one side of a transistor or the other. A stray cosmic ray or a bit of heat can flip one, but it’s rare, and memory chips can fix the occasional flip with simple error-correcting codes.

A qubit is the opposite. It’s a single tiny quantum system, like a superconducting circuit cooled to near absolute zero, and its state is a delicate superposition. Any interaction with the outside world (heat, stray electromagnetic fields, the wiring you use to control it) leaks a little information about that state into the environment. Once that happens the superposition starts to fall apart. This is called decoherence.

Two numbers describe how fast it happens. T1 is how long a qubit holds onto an excited |1> before relaxing to |0>. T2 is how long the phase relationship in a superposition survives. On Google’s 105-qubit Willow processor, the mean T1 is 68 microseconds and T2 (measured with a technique called CPMG) is 89 microseconds.1 Google’s announcement describes T1 as roughly five times better than its previous generation.3

Seventy microseconds sounds like nothing, but gates on these chips take tens to hundreds of nanoseconds,1 so you get a few hundred operations before things go bad. On top of that, every gate itself has some chance of being slightly wrong. The best many-qubit platforms have only recently reached 99.9% fidelity on two-qubit gates, which is an error rate of one in a thousand.1 Useful algorithms need error rates closer to one in ten billion.1

That gap, 10^-3 versus 10^-10, is the whole problem. You don’t close seven orders of magnitude by building slightly cleaner hardware. You close it with error correction.

The obvious fix doesn’t work

If I wanted to protect a classical bit, the simplest thing is to copy it. Store 0 as 000. If noise flips one, I get 010, I take a majority vote, and I’m back to 0. This is the repetition code, and it works as long as two flips don’t happen before I check.

Quantum mechanics blocks this in two ways.

First, you can’t copy an unknown quantum state. This is the no-cloning theorem, proved by Wootters and Zurek in 1982.4 There’s no machine that takes an arbitrary qubit a|0> + b|1> and outputs two independent copies of it. The proof is short: copying would have to be a linear operation, and a linear operation that copies |0> and |1> correctly will produce an entangled mess, not two copies, when you feed it a superposition.

Second, you can’t just look. Measuring a qubit to check whether it got flipped collapses the superposition. The act of checking destroys the thing you’re protecting.

Early on, these two facts looked like a serious obstacle to protecting qubits at all. Then in 1995 Peter Shor published a scheme that encodes one qubit into nine and can recover from an error on any one of them.5 Google’s Willow announcement points out that getting error correction to actually improve as you scale up had been an open challenge ever since.3

The trick: ask about relationships, not values

Here’s the idea that makes it work, and honestly it’s one of my favorite ideas in all of quantum computing.

You don’t copy the state. You spread it out. Instead of copying a|0> + b|1> into three separate qubits, you entangle three qubits into a|000> + b|111>. That’s not three copies. It’s one logical qubit whose information lives in the correlations between three physical ones. No-cloning isn’t violated because you never had two independent copies of anything.

Now suppose noise flips the middle qubit. The state becomes a|010> + b|101>. To find the error, you don’t measure any qubit directly. You measure parities: “do qubits 1 and 2 agree?” and “do qubits 2 and 3 agree?”

Diagram of a three-qubit repetition code: a logical 0 is encoded into three qubits, noise flips the middle one, and two parity checks both fail, pointing to qubit 2.
The three-qubit repetition code. Parity checks reveal which qubit disagrees with its neighbors without revealing the stored value. Diagram: my own.

Look at what those questions return. In a|010> + b|101>, qubits 1 and 2 disagree in both branches. Qubits 2 and 3 also disagree in both branches. So the answer is “disagree, disagree” with certainty, no matter what a and b are. The measurement tells you where the error is and nothing at all about the data. The superposition survives. You flip qubit 2 back and you’re done.

The pattern of check results is called the syndrome, and in practice you measure it by entangling each pair of data qubits with an extra helper qubit (a measure qubit) and measuring only the helper. This is the basic shape of every code in this post: data qubits hold the information, measure qubits keep asking parity questions, and a classical computer called a decoder reads the syndromes and figures out the most likely error.

Bit flips are only half of it

The repetition code above catches bit flips (X errors, |0> to |1>). But qubits also suffer phase flips (Z errors), which turn |0> + |1> into |0> - |1>. A classical bit has no phase, so classical codes never had to deal with this.

The fix is to also run checks in a rotated basis, where phase flips look like bit flips. Shor’s nine-qubit code is basically a repetition code for bit flips nested inside a repetition code for phase flips.5

There’s one more worry. Real errors are continuous. A qubit doesn’t flip cleanly, it drifts by some small random angle. It turns out this doesn’t matter: measuring the syndrome forces the error to “pick” a discrete outcome, either no error or a specific flip. Aharonov and Ben-Or give a short proof that correcting bit flips and phase flips is enough to handle general errors.6

This is the part that made quantum error correction feel less like magic to me. The measurement that could have destroyed you is the same thing that turns analog noise into digital errors you can fix.

The surface code

Shor’s code proved the idea was possible. The code most hardware teams actually use today is the surface code, which grew out of Kitaev’s work on topological codes in the late 1990s.78

Picture a checkerboard. Data qubits sit on the corners. Measure qubits sit in the middle of each square, and each one checks the parity of the four data qubits around it. Half the squares check for bit flips, half check for phase flips, alternating like the colors on the board.

Four-panel figure from Google's Willow paper: (a) layout of a distance-7 surface code with data, measure, and leakage removal qubits; (b) error probability distributions; (c) logical error probability versus cycles for distances 3, 5, 7; (d) logical error per cycle falling with code distance.
Figure 1 from Google Quantum AI and Collaborators, "Quantum error correction below the surface code threshold" (Nature, 2025). Panel a is the distance-7 surface code layout on Willow: gold data qubits, blue measure qubits, green leakage removal qubits. Panel d shows logical error per cycle dropping as the code grows. Image: Acharya et al., CC BY-NC-ND 4.0, via Nature.

The reason people like it so much comes down to three properties.

  1. Every check is local. Each measure qubit only talks to its four neighbors. That matters a lot on a flat chip where qubits can only be wired to the ones next to them.
  2. It tolerates high error rates. Fowler and colleagues’ 2012 review puts the surface code’s per-operation error tolerance as high as about 1%, which is far more forgiving than older schemes.2
  3. It scales by just getting bigger. The logical information is stored in the pattern across the whole grid. To corrupt it, errors have to form a chain stretching from one edge to the other. A bigger grid means longer chains, which are less likely.

The code distance, d, is the minimum weight of a nontrivial logical operator. A distance-d code can correct up to floor((d - 1) / 2) arbitrary errors, though actual failure rates depend on the noise and decoder. In the layout Google uses, a distance-d code takes d^2 data qubits plus d^2 - 1 measure qubits, so 2d^2 - 1 physical qubits total.1

d = 3   ->    17 qubits
d = 5   ->    49 qubits
d = 7   ->    97 qubits   (Willow used 101, counting 4 leakage-removal helpers)
d = 27  ->  1457 qubits

That quadratic growth is where the “thousand” comes from. You don’t need a thousand because each qubit is terrible. You need it because protection grows with the distance and cost grows with the distance squared.

The threshold theorem

So here’s the catch with adding more qubits. Every new qubit is also a new place for errors to happen. If your hardware is noisy enough, a bigger code just gives noise more places to start, and the logical qubit gets worse, not better.

The threshold theorem says there’s a crossover point. If the physical error rate p is below some threshold p_thr, then making the code bigger suppresses logical errors, and you can drive them as low as you want. Aharonov and Ben-Or proved a version of this in the 1990s for error rates below a constant threshold,6 and Dennis, Kitaev, Landahl and Preskill showed the surface code has one too, framing it as a phase transition.8

For the surface code, the Willow paper writes the approximate relationship like this:1

logical error  ε_d  ∝  (p / p_thr) ^ ((d + 1) / 2)

The ratio p / p_thr gets raised to a power that grows with distance. If the ratio is below 1, a bigger exponent means a smaller number, fast. If it’s above 1, a bigger exponent makes things blow up.

The cleanest way to measure this is a single number, Λ (lambda): how much the logical error rate drops each time you increase the distance by 2.1

Λ = ε_d / ε_(d+2)  ≈  p_thr / p

If Λ > 1, you’re below threshold, and every step up in size divides your error rate by Λ. If Λ < 1, you’re above threshold and error correction is making things worse. For years, that was the honest state of affairs.

Here’s a quick sketch in Python, with the Willow numbers plugged in:

eps_7 = 1.43e-3   # measured logical error per cycle at d = 7
lam = 2.14        # measured suppression factor

for d in range(7, 29, 4):
    eps = eps_7 / lam ** ((d - 7) / 2)
    print(d, 2 * d * d - 1, f"{eps:.1e}")
# 7   97  1.4e-03
# 11 241  3.1e-04
# 15 449  6.8e-05
# 19 721  1.5e-05
# 23 1057 3.3e-06
# 27 1457 7.1e-07

This is a naive extrapolation and assumes nothing else goes wrong at scale, which is exactly what you can’t assume. But it shows the shape: each factor of about 2 costs one more step in distance, which is tens of qubits at small sizes and a couple hundred near d = 27.

What Willow actually showed

In December 2024, Google Quantum AI published “Quantum error correction below the surface code threshold” in Nature.1 Here’s what’s in it, as plainly as I can put it.

The important comparison is with Google’s previous attempt. In 2022 to 2023, on an older chip, their distance-5 code only barely beat distance-3: a logical error per cycle of 2.914% versus 3.028%.9 That’s Λ of about 1.04. Technically better, practically a tie. Going from “barely improves” to “halves at every step” is the difference between error correction being a theory and being an engineering roadmap.

Log-scale chart of logical error per cycle versus code distance from 3 to 27. A blue line starting from Willow's measured values falls to about 7e-7 at distance 27. A dashed red line for a halved physical error rate falls much faster, to about 4e-11.
Naive extrapolation from Willow's measured distance-7 error and Λ = 2.14 (blue), and the same extrapolation if the physical error rate were halved (red dashed), using the scaling law in the paper. Circled points are the measured range. Chart: my own, from numbers in Acharya et al. (2025).

What it didn’t show

This is the part I think gets lost in headlines, so I want to be careful.

It’s a memory, not a computer. The experiment stored one logical qubit and kept it alive. It didn’t run logical gates between logical qubits. The paper says directly that more challenges will show up when doing logical computation instead of storage.1

10^-3 is still bad. A logical error of about one in a thousand per cycle is roughly where good physical gates already are. The win is the trend, not the number. Useful algorithms want something like 10^-10 or lower.1

The extrapolation has a floor. Google also ran repetition codes (which only protect against one kind of flip) up to distance 29. They saw clean exponential suppression for a while, then it leveled off at around 10^-10, caused by rare bursts of correlated errors that hit many qubits at once, roughly once an hour.1 Threshold results require assumptions about noise, which can allow some local correlations. Rare large bursts can violate those assumptions and limit the extrapolation.

The random circuit sampling claim is a separate thing. Google’s announcement also said Willow ran a benchmark in under five minutes that would take a top supercomputer 10 septillion years.3 That’s a different experiment, and it isn’t about error correction. Google’s own post says it expects classical methods to keep improving on that benchmark.3 I’d keep the two results in different boxes.

Λ around 2 is just barely enough. Because Λ ≈ p_thr / p, a Λ of 2 means the hardware is only about twice as good as the threshold. That’s why the overhead is so large. The paper points out the flip side: halve the physical error rate and the distance-27 code improves by about four orders of magnitude.1 That’s the red line in the chart above. Below threshold, better hardware can substantially reduce the coding overhead.

So why “a thousand”?

Putting it together, the overhead comes from three things stacked on top of each other.

  1. You can’t copy, so you have to spread one qubit’s information across many and keep checking relationships, which needs extra measure qubits on top of the data qubits.
  2. Today’s hardware is only modestly below threshold, so each step up in distance only buys a factor of about 2.
  3. Cost grows with d^2 while protection grows with d, so getting from 10^-3 to 10^-6 or 10^-12 takes a big grid.

Fowler’s 2012 review estimates that with physical error rates around 10^-3, a logical qubit needs 10^3 to 10^4 physical qubits to get logical error rates down to 10^-14 or 10^-15,2 and in its factoring example, about 14,500 physical qubits per logical qubit.2 Willow’s own extrapolation is 1,457 for 10^-6.1 “A thousand” is shorthand for that order of magnitude, and the real number depends heavily on how good the hardware gets.

The same logic is why estimates for breaking RSA are so large. In 2019, Gidney and Ekerå estimated that factoring a 2048-bit RSA number would take about 20 million noisy qubits running for 8 hours.10 In May 2025, Gidney revised that to fewer than a million noisy qubits running for under a week, assuming a 0.1% gate error rate, using cleverer arithmetic and better ways to pack idle logical qubits.11 Error correction is most of that budget. I went through what those numbers mean for RSA in the Shor post, and every one of those estimates assumes error-corrected logical qubits underneath.

What I keep thinking about

The overhead numbers are going down from both directions. Hardware gets cleaner, which raises Λ. And theory gets smarter: Gidney’s drop from 20 million to under a million came almost entirely from better algorithms and encodings, not better chips.1011 The Willow paper also expects overheads to fall with better codes and decoders.1

The decoder part is what I find most interesting as someone who mostly writes software. Willow’s best decoder was a neural network fine-tuned on data from the actual processor.1 And the real-time decoder has to process a fresh round of syndromes every 1.1 microseconds, forever, without falling behind.1 That’s a classical computing problem sitting right in the middle of a quantum one.

I like that progress can come from both the device and the software trying to make sense of its errors. It makes me wonder how much the resource estimates could change as those pieces improve together.

Willow’s measured improvement as the code grows is exciting, but I’d want to see how well that trend holds as systems get larger and errors interact in new ways. The overhead is still a serious part of the problem. Understanding where it can fall seems like one of the most interesting ways to get closer to a useful machine.

Sources

Footnotes

  1. Google Quantum AI and Collaborators (R. Acharya et al.), “Quantum error correction below the surface code threshold”, Nature 638, 920 to 926, 2025 (published online December 9, 2024). https://www.nature.com/articles/s41586-024-08449-y (preprint: https://arxiv.org/abs/2408.13687) ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21

  2. A. G. Fowler, M. Mariantoni, J. M. Martinis, A. N. Cleland, “Surface codes: Towards practical large-scale quantum computation”, Physical Review A 86, 032324, 2012. https://arxiv.org/abs/1208.0928 ↩ ↩2 ↩3 ↩4

  3. H. Neven, “Meet Willow, our state-of-the-art quantum chip”, Google Blog, December 9, 2024. https://blog.google/technology/research/google-willow-quantum-chip/ ↩ ↩2 ↩3 ↩4 ↩5

  4. W. K. Wootters and W. H. Zurek, “A single quantum cannot be cloned”, Nature 299, 802 to 803, 1982. https://doi.org/10.1038/299802a0 ↩

  5. P. W. Shor, “Scheme for reducing decoherence in quantum computer memory”, Physical Review A 52, R2493, 1995. https://doi.org/10.1103/PhysRevA.52.R2493 ↩ ↩2

  6. D. Aharonov and M. Ben-Or, “Fault-Tolerant Quantum Computation With Constant Error Rate”, extended version of STOC 1997 paper, arXiv, 1999. https://arxiv.org/abs/quant-ph/9906129 ↩ ↩2

  7. A. Yu. Kitaev, “Fault-tolerant quantum computation by anyons”, Annals of Physics 303, 2 to 30, 2003 (arXiv 1997). https://arxiv.org/abs/quant-ph/9707021 ↩

  8. E. Dennis, A. Kitaev, A. Landahl, J. Preskill, “Topological quantum memory”, Journal of Mathematical Physics 43, 4452, 2002. https://arxiv.org/abs/quant-ph/0110143 ↩ ↩2

  9. Google Quantum AI (R. Acharya et al.), “Suppressing quantum errors by scaling a surface code logical qubit”, Nature 614, 678 to 681, 2023. https://arxiv.org/abs/2207.06431 ↩

  10. C. Gidney and M. Ekerå, “How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits”, Quantum 5, 433, 2021. https://arxiv.org/abs/1905.09749 ↩ ↩2

  11. C. Gidney, “How to factor 2048 bit RSA integers with less than a million noisy qubits”, arXiv, May 2025. https://arxiv.org/abs/2505.15917 ↩ ↩2