I am interested to know what are the "most promising" decoder algorithms that are used in surface code today.

Of course, different criteria can tell what we expect from a good decoder. In particular, we would like it to:

  1. Be fast
  2. Have a high threshold

I am looking for a somewhat "good compromise" between those criteria (if a decoder has a very high threshold but has an exponential complexity I would consider it to be a bad choice).

I am interested mainly in decoders that work for arbitrary noise models, but if there are interesting results for biased noise I can be interested as well.

As a final note: I have no real experience in decoding algorithms for surface code, I just know that there are real challenges in this field (in particular to make the decoder fast enough) so I expect the answer to be pedagogical to this question if possible.

[Edit]: As current findings I found in this paper a summary of different decoding approaches:

  • Lookup table
  • Minimum Weight perfect matching
  • Machine learning
  • Tensor network
  • Union find

Is this list somewhat exhaustive of the modern approaches for surface code? Are there some relevant decoding algorithms not provided in this paper for instance? This is the purpose of my question.

  • $\begingroup$ The surface (and toric codes,...) are CSS codes. You can view the codes defined by $H_X$ and $H_Z$ as classical LDPC codes; so any classical LDPC decoder can be used. I tried this and in general the performance doesn't seem to be that good. $\endgroup$
    – unknown
    Apr 17, 2022 at 16:51
  • $\begingroup$ No decoder works for arbitrary noise models. You can always make unphysical noise that is maliciously designed to encode hard problems. You must have some specific range of noise models in mind. $\endgroup$ Apr 17, 2022 at 17:14
  • $\begingroup$ @CraigGidney, yes what I wrote assumes that whatever noise model you use can be translated to a classical noise model for the classical components. For depolarizing channel this is possible, the classical decoder sees a bsc channel (with some scaling) $\endgroup$
    – unknown
    Apr 17, 2022 at 17:37
  • $\begingroup$ @CraigGidney In case you referred to my question, by "arbitrary" I had implicitly in mind stochastic Pauli error where $X$ and $Z$ errors occur at the same rate. Like there aren't much more $X$ than $Z$ errors as it can be the case for some hardware. $\endgroup$ Apr 17, 2022 at 18:24

1 Answer 1


I run into this question from a couple years ago. We did this nice review on decoding algorithms for the surface code so I think it could be useful to put the reference here: Decoding algorithms for surface codes.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.