Quantum Teleportation
Move the state, not the substrate. One Bell pair plus two classical bits sends one qubit of information — and nothing ever travels between the endpoints except those two bits.
The previous essay closed with a promise: once you have a Bell pair, you can do things classical bits can't, and the headline example is teleportation. Alice has a single qubit in some unknown state. She and Bob set up a shared Bell pair in advance (one half each, prepared in the same lab and then carried apart). Alice runs a short protocol on her two qubits — the unknown one plus her half of the Bell pair — measures both, and phones Bob the two classical bits she gets. Bob does one of four single-qubit corrections, and the state that was on Alice's first qubit is now on Bob's.
No qubit travels. One Bell pair, set up beforehand, plus two classical bits sent over a regular phone line, carries one qubit of quantum information. The unknown state never leaves Alice's lab as a quantum object; it disappears from her register and reappears on Bob's. That's the headline. The rest of this essay is the recipe and a careful look at why the picture below works.
The three qubits
We need three qubits. Index convention matches the rest of the
codebase — |q2 q1 q0⟩,
LSB-first, Qiskit-compatible:
- q0 — Alice's message qubit (the unknown state to send).
- q1 — Alice's half of the shared Bell pair.
- q2 — Bob's half of the shared Bell pair.
Alice can touch q0 and q1. Bob can touch q2. Nobody can touch each other's qubits — that's the constraint that makes this interesting. The only channel between them is a classical wire.
Step through the protocol
The widget below holds three live Bloch cards (q0, q1, q2), each showing that qubit's reduced state. Below them, a stepper walks the five-step protocol. Each step updates the shared three-qubit simulator under the hood, so the cards repaint to match. Step backward and forward as much as you like — the stepper replays from scratch each time, so jumps can't drift.
q0
Entangledr = 1.000
q1
Entangledr = 1.000
q2
Entangledr = 1.000
Step 1 / 5
Hadamard on q1, then CNOT(q1 → q2) creates the shared Bell pair Alice and Bob will use as the channel.
Try this: press Next through all five steps. The cascade you should see:
- Entangle the Bell pair on (q1, q2). Both arrows shrink to the origin. The "Entangled" badge lights up on q1 and q2. q0 hasn't moved.
- Prepare the message on q0. Default
is
Xon q0, so the message is|1⟩— q0's arrow swings to the south pole. The Bell pair is still maximally mixed from each half's point of view. - Alice's Bell-basis measurement on (q0, q1).
We apply
CNOT(q0 → q1)thenHon q0. This rotates Alice's Bell basis into the computational basis — if Alice did measure now, she'd get one of four equally likely two-bit outcomes, each pointing at a different Bell state. q0 and q1 arrows do their own scramble; q2 stays at the origin. - Bob's first correction: CNOT(q1 → q2). Bob conditionally flips q2 based on q1's value. q2's arrow visibly moves.
- Bob's second correction: CZ(q0 → q2).
Conditional phase. q2's arrow lands at the south
pole —
|1⟩. The state that was on q0 after step 2 is now on q2. Teleportation complete.
The deferred-measurement trick
If you've read teleportation before, you might be squinting at
step 5. The textbook protocol says Alice measures
q0 and q1 after step 3, getting two
classical bits (a, b), and tells Bob — who then
applies Xb Za on q2.
The two corrections are classically conditioned on
Alice's measurement outcome. Where did the measurement go?
It's a textbook identity, sometimes called the principle of deferred measurement: a quantum circuit that ends with a measurement followed by a classically-conditioned gate is equivalent to the same circuit with the conditional gate replaced by its quantum-controlled cousin and the measurement pushed all the way to the end. For teleportation this means:
Same final state on q2, no mid-circuit measurement needed, every gate is unitary. That's what the simulator underneath this page is running. Nothing has been cheaped out — the picture is the textbook circuit rewritten as a unitary block, and the math is exact (the appendix walks through it). The "Copy as Qiskit" button on the diagram below emits the same deferred-measurement circuit; you can paste it into a Jupyter notebook and check.
A small naming note: there's no native CZ in the
simulator's gate set, but CZ = H · CNOT · H on the
target qubit. The circuit diagram below shows the explicit
three-op decomposition; the protocol stepper bundles them into
one labeled "Correct: deferred CZ" step.
Why this isn't faster-than-light
No information moves between Alice and Bob without the classical phone call. Before Alice's measurement (or its deferred-measurement proxy), Bob's q2 is in the maximally mixed state — a fair coin, with the Bloch arrow at the origin. After Alice runs her side of the protocol but before she calls, q2 is still in the maximally mixed state from Bob's local point of view, because Bob doesn't know which of four correlated branches he's in. Only after the two classical bits arrive can Bob apply the right correction and recover the state. The classical channel is the bottleneck. Special relativity stays intact.
Quantum networks and repeaters
Once teleportation works between two endpoints, you can chain it. Suppose Alice wants to share entanglement with a distant Bob, but the physical channel is lossy enough that a single Bell pair won't make it. The fix is a quantum repeater: an intermediate node that holds two Bell pairs — one with Alice, one with Bob — and "swaps" them with a Bell-basis measurement. The net effect is a fresh Bell pair shared directly between Alice and Bob, despite no qubit having ever traveled the full path.
The widget below is the cleanest cartoon of that. Each line is a physical link that may or may not be carrying an active Bell pair. Click a link to entangle it. The indicator under the diagram turns on only when Alice and Bob share a continuous entangled path:
Alice ↔ Bob: not yet entangled
The cartoon hides a lot. Real repeaters need entanglement distillation (combining several noisy pairs into one cleaner pair), quantum memory long enough to wait for the second link to come up, and synchronization of the Bell-basis measurements. Every hop loses some fidelity, and chaining many hops without error correction degrades the final pair past usefulness — which is why first-generation quantum repeaters target the regime where post-selection and distillation can recover the loss. A fidelity-aware repeater diagram with measured loss rates is a Phase 4 essay; this one stops at the topology.
Self-test
-
Step the protocol to the end and look at q2's Bloch
arrow. Then reset, prepare a different message on q0
(remix the circuit in the sandbox — change the
X(0)toH(0), for example), and run the protocol again. Where does q2 land? Does it match what q0 looked like after step 2? (It should — that's the protocol.) -
The "deferred CZ" step is actually three op dispatches in the
protocol stepper but a single textbook gate. Why does the
simulator need the decomposition? (Hint: look at the gate set
the circuit IR supports — there's no native CZ. Same reason
you'd write
cx; h; cx; hin a different framework that lackedcz.)
Deferred measurement, classical-conditioned Paulis, and the Bell-basis projector
Alice's Bell-basis measurement on (q0, q1)
can be written, before measurement, as the unitary
which rotates the Bell basis on (q0, q1)
into the computational basis. After UBSM,
measuring in the computational basis yields outcomes
(a, b) ∈ 1², one per Bell state, each with
probability 1/4 regardless of the input on
q0.
The classical-conditioned correction is Xb Za
on q2. The principle of deferred measurement says:
a measurement followed by a classically-conditioned Pauli is
equivalent to the corresponding quantum-controlled Pauli
followed by a measurement that's now decoupled from
everything downstream. Concretely:
Apply both substitutions, and the trailing
measure(q0, q1) commutes
through every remaining gate (those gates don't touch
q0 or q1 anymore). We can drop the
measurement entirely from the simulation and trace out
q0, q1 at the end; the reduced state on
q2 is exactly the input state on q0. Run
the algebra once and you have it forever; the proof is in
Nielsen & Chuang §4.4.
And CZ = H · CNOT · H on the target — that's the
identity
conjugated through the CNOT's target-side action — which is
why the simulator can run the protocol without growing a
native CZ kind.