Skip to content
Phase Kickback (Explained)

Phase Kickback (Explained)

April 6, 2025

Phase kickback is one of the most useful “little tricks” in quantum computing. It explains how a controlled operation—apparently acting on the target—can end up putting a phase on the control.

This idea shows up everywhere: oracle phase marking in Grover, and especially in quantum phase estimation (which relies on the QFT).

The key setup

You need three ingredients:

  • A control qubit in superposition: α0+β1\alpha\lvert 0\rangle + \beta\lvert 1\rangle
  • A target register in a special state ψ\lvert \psi\rangle
  • A unitary UU such that ψ\lvert \psi\rangle is an eigenstate of UU:
Uψ=eiθψ. U\lvert\psi\rangle = e^{i\theta}\lvert\psi\rangle.

Now apply the controlled-UU gate (control on the first qubit, target is ψ\lvert\psi\rangle).

The “kickback” algebra (why it works)

Start with the joint state:

(α0+β1)ψ. (\alpha\lvert 0\rangle + \beta\lvert 1\rangle)\otimes\lvert\psi\rangle.

Controlled-UU acts as:

  • if control is 0\lvert 0\rangle: do nothing
  • if control is 1\lvert 1\rangle: apply UU to the target

So the output is:

$$ \alpha\lvert 0\rangle\lvert\psi\rangle + \beta\lvert 1\rangle,U\lvert\psi\rangle

\alpha\lvert 0\rangle\lvert\psi\rangle + \beta\lvert 1\rangle,e^{i\theta}\lvert\psi\rangle. $$

And here’s the punchline: because ψ\lvert\psi\rangle is unchanged (only picks up a phase), the state factors:

ψ(α0+βeiθ1). \lvert\psi\rangle\left(\alpha\lvert 0\rangle + \beta e^{i\theta}\lvert 1\rangle\right).

The target returns to the same physical state, while the control has acquired a relative phase eiθe^{i\theta} on its 1\lvert 1\rangle component. That phase is now “stored” on the control qubit, where it can interfere with other amplitudes.

If the target is not an eigenstate of UU, then UψU\lvert\psi\rangle changes the target in a state-dependent way, and control+target typically become entangled. Then you don’t get a clean, single phase on the control.

From bit-oracle to phase-oracle (the practical version)

Many algorithms start from a reversible “bit oracle” for a Boolean function ff:

Of:xyxyf(x). O_f:\lvert x\rangle\lvert y\rangle \mapsto \lvert x\rangle\lvert y\oplus f(x)\rangle.

If you prepare the ancilla as =12(01)\lvert -\rangle=\frac{1}{\sqrt{2}}(\lvert 0\rangle-\lvert 1\rangle), then flipping it applies a phase:

Ofx=(1)f(x)x. O_f\lvert x\rangle\lvert -\rangle = (-1)^{f(x)}\lvert x\rangle\lvert -\rangle.

So without measuring anything, the function value f(x)f(x) ends up encoded as a phase on x\lvert x\rangle.

This is exactly the “marking” behavior used in Grover-style phase oracles.

Tiny example in Qiskit (controlled-Rz)

The Rz(ϕ)R_z(\phi) rotation has eigenstates 0\lvert 0\rangle and 1\lvert 1\rangle:

  • Rz(ϕ)0=0R_z(\phi)\lvert 0\rangle=\lvert 0\rangle
  • Rz(ϕ)1=eiϕ1R_z(\phi)\lvert 1\rangle=e^{i\phi}\lvert 1\rangle

If you use 1\lvert 1\rangle as the target eigenstate, then a controlled-Rz(ϕ)R_z(\phi) kicks back a phase onto the control:

import numpy as np
from qiskit import QuantumCircuit

phi = np.pi / 3
qc = QuantumCircuit(2)

# control in |+>
qc.h(0)

# target eigenstate |1>
qc.x(1)

# controlled unitary
qc.crz(phi, 0, 1)

qc.draw("text")

Next