Qiskit Intermediate Free 37/61 in series 45 minutes

Quantum Teleportation: Transferring Quantum States Without Moving Particles

Understand the quantum teleportation protocol from first principles, learn why it does not violate relativity or the no-cloning theorem, and implement a working teleportation circuit using Qiskit dynamic circuits.

What you'll learn

  • quantum teleportation
  • Bell state
  • classical communication
  • entanglement
  • no-cloning theorem

Prerequisites

  • Python proficiency
  • Beginner quantum computing concepts (superposition, entanglement)
  • Linear algebra basics

What Quantum Teleportation Actually Is

Quantum teleportation is one of the most misunderstood concepts in quantum computing. The name invites science-fiction comparisons, but the reality is both more subtle and more interesting than beaming people across the galaxy.

Quantum teleportation is the transfer of a quantum state from one qubit to another, using a shared entangled pair and two classical bits of communication. The physical qubit is not moved. The information encoded in its quantum state is reconstructed at the destination. This distinction matters enormously: the particle itself stays put, but the exact quantum information it carried appears somewhere else.

This protocol is fundamental to quantum networking, quantum repeaters, and distributed quantum computing. Understanding it deeply means understanding why entanglement is a genuine resource, why quantum information is fragile in a way classical information is not, and why certain limits on communication are absolute.

The No-Cloning Theorem Sets the Stage

Before diving into the protocol, it helps to understand why naive approaches fail. Classically, if you want to send a bit to someone, you read it and transmit its value. But quantum states cannot be read without disturbing them. Measuring a qubit collapses its superposition.

The no-cloning theorem makes this formal: there is no quantum operation that takes an arbitrary unknown qubit state |psi> and produces two identical copies. If cloning were possible, teleportation would be trivial. It would also break quantum cryptography and allow faster-than-light signaling, which is why the universe does not permit it.

Teleportation sidesteps this constraint cleverly. It does not copy the state. It destroys the original while recreating it at the destination. The original qubit ends up in a different, well-defined state after the protocol completes. No copies are ever made.

The Protocol Step by Step

The teleportation protocol has three participants: Alice, who holds the qubit to teleport, and Bob, who will receive the state. A third party (often anonymous) distributes an entangled Bell pair, giving one qubit to Alice and one to Bob. They can be arbitrarily far apart when this happens.

Step 1: State preparation. Alice has a qubit in state |psi> = alpha|0> + beta|1> that she wants to teleport to Bob. She does not know alpha and beta; the state may have been handed to her without being described classically.

Step 2: Bell pair distribution. Alice and Bob share a maximally entangled Bell pair |Phi+> = (|00> + |11>) / sqrt(2). Alice holds qubit 1, Bob holds qubit 2.

Step 3: Bell State Measurement (BSM). Alice entangles her unknown qubit with her half of the Bell pair using a CNOT followed by a Hadamard, then measures both. This is the Bell State Measurement. It produces two classical bits (00, 01, 10, or 11) with equal probability.

Step 4: Classical communication. Alice sends those two bits to Bob over a regular classical channel. This is the step that prevents faster-than-light communication. Bob must wait for Alice’s message.

Step 5: Bob applies corrections. Depending on which two bits he receives, Bob applies one of four Pauli corrections to his qubit: I (identity, no correction), X, Z, or ZX. After the correction, his qubit is in state alpha|0> + beta|1>. Teleportation is complete.

The math works because the three-qubit state after step 2 can be rewritten as a superposition of the four Bell states on Alice’s side, each paired with a specific transformation of |psi> on Bob’s side. The BSM projects onto one of these branches, and Alice’s two-bit outcome tells Bob which branch occurred.

Why This Is Not Faster Than Light

Alice’s measurement outcome is random. Bob’s qubit is in a mixed state until he receives Alice’s classical bits. Without those bits, he cannot extract any information from his qubit. He cannot tell whether teleportation has begun, succeeded, or been abandoned. The protocol requires the classical channel, which is limited to the speed of light. Relativity is safe.

This is a recurring theme in quantum information: entanglement creates correlations but not a communication channel. You cannot use entanglement alone to send a message.

Qiskit Implementation with Dynamic Circuits

Modern Qiskit supports dynamic circuits, where mid-circuit measurements feed into classical conditions that control subsequent gates. This is the correct way to implement teleportation on real hardware. Previous approaches used deferred measurement (moving measurements to the end) but that is a simulation convenience, not a hardware reality.

from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit_aer import AerSimulator
from qiskit.circuit import IfElseOp
import numpy as np

def build_teleportation_circuit(theta=np.pi/3, phi=np.pi/4):
    """
    Teleport state |psi> = cos(theta/2)|0> + e^(i*phi) sin(theta/2)|1>.
    
    Qubits:
      q[0]: Alice's data qubit (to be teleported)
      q[1]: Alice's half of Bell pair
      q[2]: Bob's half of Bell pair (receives teleported state)
    """
    qr = QuantumRegister(3, 'q')
    cr_alice = ClassicalRegister(2, 'alice')
    cr_bob = ClassicalRegister(1, 'bob')
    qc = QuantumCircuit(qr, cr_alice, cr_bob)

    # Prepare the state to teleport on q[0]
    qc.ry(theta, 0)
    qc.rz(phi, 0)
    qc.barrier()

    # Create Bell pair between q[1] and q[2]
    qc.h(1)
    qc.cx(1, 2)
    qc.barrier()

    # Alice's Bell State Measurement
    qc.cx(0, 1)
    qc.h(0)
    qc.barrier()
    qc.measure(0, cr_alice[0])
    qc.measure(1, cr_alice[1])
    qc.barrier()

    # Bob applies corrections using dynamic circuit if/else
    with qc.if_test((cr_alice[1], 1)):
        qc.x(2)
    with qc.if_test((cr_alice[0], 1)):
        qc.z(2)

    qc.barrier()
    # Verify: measure in the Z basis
    qc.measure(2, cr_bob[0])

    return qc


def verify_teleportation():
    """
    Run teleportation and verify the output matches the input state statistics.
    We teleport |+> = H|0> and check that the output measures 50/50.
    """
    # Teleport the |+> state: theta=pi/2, phi=0
    qc = build_teleportation_circuit(theta=np.pi/2, phi=0)

    sim = AerSimulator()
    job = sim.run(qc, shots=4096)
    result = job.result()
    counts = result.get_counts()

    # Extract Bob's qubit counts (rightmost bit in bitstring)
    bob_counts = {'0': 0, '1': 0}
    for bitstring, count in counts.items():
        # Format: 'bob alice_low alice_high' -- read rightmost classical register
        bob_bit = bitstring.split(' ')[0]
        bob_counts[bob_bit] += count

    total = sum(bob_counts.values())
    print(f"Bob's measurement outcomes after teleporting |+>:")
    print(f"  |0>: {bob_counts['0']/total:.3f}")
    print(f"  |1>: {bob_counts['1']/total:.3f}")
    print(f"Expected: ~0.500 each (|+> state)")
    return bob_counts


# Run the full protocol
qc = build_teleportation_circuit(theta=np.pi/3, phi=np.pi/4)
print(qc.draw('text'))
verify_teleportation()

Running on a Statevector Simulator for Exact Verification

For a cleaner verification that does not require statistical sampling:

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector, state_fidelity
import numpy as np

def statevector_check(theta, phi):
    """Check teleportation fidelity exactly using statevector simulation."""
    # Expected output state
    target = Statevector([np.cos(theta/2), np.exp(1j*phi)*np.sin(theta/2)])

    # Build circuit without final measurement for statevector extraction
    qc = QuantumCircuit(3)
    qc.ry(theta, 0)
    qc.rz(phi, 0)
    qc.h(1)
    qc.cx(1, 2)
    qc.cx(0, 1)
    qc.h(0)

    # Post-select on Alice's |00> outcome — in this branch Bob already holds |psi>
    # Qiskit uses little-endian indexing: q0 is bit 0, q1 is bit 1, q2 is bit 2.
    # Alice's |00> (q0=0, q1=0) → indices with bit0=0 and bit1=0: index 0 (|000>) and 4 (|100>)
    sv = Statevector(qc)
    sv_data = np.array(sv.data)
    bob_amps = np.array([sv_data[0], sv_data[4]])  # Bob's |0> and |1> amplitudes in the |00> branch
    bob_state = Statevector(bob_amps / np.linalg.norm(bob_amps))

    fidelity = state_fidelity(bob_state, target)
    print(f"Teleportation fidelity (post-selected on Alice |00>): {fidelity:.6f}")
    return fidelity

statevector_check(theta=np.pi/3, phi=np.pi/4)

The fidelity is 1.0, confirming perfect teleportation in noiseless simulation. This post-selects on Alice’s |00⟩ outcome — the branch where no Pauli correction is needed. In all four measurement branches, Bob’s qubit holds the correct state after the appropriate correction (I, X, Z, or ZX) is applied.

Applications in Quantum Networking

Quantum teleportation is not just a theoretical curiosity. It is the core primitive behind several real technologies:

Quantum repeaters use teleportation to extend entanglement over long distances. Direct fiber transmission degrades entanglement exponentially with distance. Repeater nodes share entangled pairs with neighbors, then perform entanglement swapping (a variant of teleportation) to create long-range entanglement without the exponential loss.

Gate teleportation allows computation to be performed on a qubit without physical access to it, by teleporting the qubit to a computation site and back. This is central to modular quantum computing architectures where different QPU modules are connected by photonic links.

Blind quantum computation lets a client send a quantum state to a server for computation without revealing the state. The server performs gates but cannot learn the input. Teleportation is the underlying mechanism.

Quantum key distribution networks use teleportation to share keys across multiple nodes. The 2022 Delft experiments demonstrated multi-node quantum network teleportation, a significant step toward a future quantum internet.

Common Misconceptions

The term “teleportation” causes confusion. Nothing moves instantly. No matter is transmitted. The state at the destination is not created before Alice’s measurement; Bob’s qubit is in a mixed state until he receives Alice’s two bits. The protocol is entirely causal.

Another misconception is that the no-cloning theorem is violated. It is not. After teleportation, Alice’s original qubit is collapsed by the measurement. The state exists exactly once throughout the protocol.

Finally, some sources describe teleportation as “copying quantum information.” It is not. Copying would require the original to persist. Teleportation is fundamentally a move operation with classical coordination.

Understanding these distinctions separates genuine quantum intuition from popular-science oversimplification.

Was this tutorial helpful?