The CMB Power Spectrum

Six numbers fix the standard cosmological model. Every one of them leaves a distinct fingerprint on the microwave background — a peak that moves, a peak that grows while its neighbour shrinks, a tail that fades. Move the sliders and watch which is which, against what Planck actually measured.

Three spectra, selectable above the sliders. TT is the temperature autocorrelation and is shown by default. TE and EE involve the polarization of the microwave background, and are worth switching on for one reason in particular: the near-degeneracy between τ and As, which makes them almost unconstrained in TT alone, is broken by EE. All three are computed from the same six parameters by the same emulator, so the sliders drive them together.

Measurements: Planck Collaboration, Planck 2018 results. V. CMB power spectra and likelihoods, A&A 641, A5 (2020), arXiv:1907.12875; parameter values from Planck 2018 results. VI. Cosmological parameters, A&A 641, A6 (2020), arXiv:1807.06209. Spectra retrieved from the ESA Planck Legacy Archive.

CMB temperature power spectrum The temperature angular power spectrum, l(l+1)C_l/2pi in microkelvin squared, against multipole l from 2 to 2500, with the Planck 2018 measurements overlaid as points with error bars, and a panel beneath showing the residual of the model from each measurement in units of its uncertainty.
your model Planck 2018 best fit Planck 2018 measurement
spectra:

What each parameter does

The peaks are standing sound waves. Before recombination the universe is a hot plasma in which photons and baryons are locked together; gravity pulls the mixture into dark-matter potential wells and photon pressure pushes it back out. When the plasma recombines at about 380,000 years the oscillation stops and is frozen into the temperature pattern we see. Each parameter changes the sound waves, or the geometry we view them through, in its own way.

Ωbh² — the baryon density

Baryons add inertia to the photon–baryon fluid. They deepen the compressions and weaken the rarefactions, so the odd peaks — first, third, fifth, which are compressions — grow relative to the even ones. Watch the second peak sink as you push this slider right. That alternating pattern is how the baryon density is measured, and it agrees with the amount of deuterium left over from big bang nucleosynthesis, which is an entirely independent argument.

This is the one effect worth seeing in full range rather than at ±10σ. Across the default span the ratio of the first peak to the second moves from 2.11 to 2.31; across the full trained range it goes from 1.95 to 2.53, and the alternation is unmistakable. Planck measures Ωbh² well enough that the honest slider is the narrow one — but the physics is easier to learn on the wide one.

Ωch² — the cold dark matter density

This sets when the universe stopped being radiation-dominated. Decay of the gravitational potentials near that transition gives the oscillations an extra kick, so a lower dark matter density means a later equality, more driving, and a taller first peak. The first peak is therefore not simply a measure of curvature: it responds to the matter budget too.

100 θ — the angular size of the sound horizon

This is the angle subtended today by the distance sound could travel in the plasma before recombination — the standard ruler, seen from here. It sets where the peaks sit: lower it and the ruler subtends a smaller angle, so the whole pattern slides to smaller scales — to the right, higher ℓ.

Watch the far left of the plot while you do it. The plateau sinks as well, and that is a second effect entirely: lowering θ at fixed densities lowers H₀, which lowers ΩΛ, and with less dark energy there is less late-time decay of the gravitational potentials to boost the very largest scales. That boost is the late integrated Sachs–Wolfe effect, and it is one of the few places the CMB responds to dark energy directly rather than through geometry.

It is on the slider rather than H₀ because it is what the CMB actually measures, and it is measured extraordinarily well — to about one part in three thousand, the best-determined quantity in cosmology. Every slider on this page runs ±10 standard deviations of Planck’s measurement by default, so they are directly comparable, and the σ readout under each one tells you where you are. Ticking full range opens them out to the whole region the emulator was trained on — useful for seeing an effect in full, at the cost of leaving anything Planck would recognise as allowed: the θ slider then reaches 77σ. For θ that entire sweep, end to end, moves the first acoustic peak by 1.3 multipoles out of 220 — half a percent. You will not see it in the curve. Watch the residual panel instead: it goes from scattered about zero to a coherent wave well before you reach the end of the track. (τ is the one exception to the ±10σ rule: τ − 10σ is negative, so its slider stops at −6.1σ.)

Why this one is so well measured comes down to the direction it moves things. θ is the only parameter here that shifts the pattern sideways. Everything else works up and down — raising a peak, lowering a plateau, tilting one end against the other. Run this slider end to end and the whole harmonic series rescales together: the first peak moves from ℓ 220.9 to 219.6, the second from 537.8 to 534.6, the third from 815.4 to 810.6. Those are the same factor, 0.994, to three decimal places, and it is exactly 1/(1.04428/1.03808) — the peaks go as 1/θ.

No other parameter does that. They can nudge where a maximum appears to sit by changing the shape around it — the tilt drags the first peak by a few multipoles, the baryon density skews the second — but the motion is incoherent, and Ωch² even moves the first peak right while moving the third left, which no real sideways shift can do. τ and As do not move them at all.

That is why the measurement is so sharp. Locating a long, sharp, repeating pattern in ℓ is a far more precise operation than measuring how tall it is: heights must contend with calibration, foregrounds and the τ–As degeneracy, while positions are pinned by every peak at once. The CMB is a ruler read to four digits, and a set of amplitudes known to two or three.

H₀ is derived from it, and the readout above shows how: the same θ gives quite different values of H₀ depending on the densities you have chosen, because those set both the size of the ruler and the distance to it. That is the heart of why the Hubble tension is a tension and not a simple disagreement — the CMB does not measure H₀ directly, it infers it within a model.

τ — the reionization optical depth

When the first stars reionize the intergalactic medium, some CMB photons scatter again. Anisotropies on scales inside the horizon at that time are washed out by a factor e−2τ, while the largest scales are untouched. So τ suppresses all the peaks relative to the plateau at low ℓ. On the temperature spectrum alone it is nearly degenerate with the primordial amplitude; polarization is what breaks it.

ln(1010As) — the primordial amplitude

The overall loudness of the initial fluctuations. It scales the entire curve up and down without changing its shape. Hold Ase−2τ fixed and the high-ℓ spectrum barely notices, because that combination is what temperature data really constrains. Since holding it fixed means Δln As = 2Δτ, the two must move together, not in opposition.

The τ–As slide button does the move for you, because hitting it by hand needs Δln As = 2Δτ to three figures and no one manages that with two sliders. It steps τ by 9σ and As by exactly the amount that holds Ase−2τ fixed; press it again to come back. Watch the Δχ² under the sliders while you do.

The size of the cancellation in temperature is startling. Take that same step in τ alone and the TT χ² goes from 84 to 11,285. Take it in As alone and TT goes to 13,562. Take both together and TT reads 68 — very slightly better than Planck’s own parameters. A nine-sigma error in τ is not merely hard to see in the temperature spectrum; it is invisible.

Now switch on EE. The same move takes the EE χ² from 94 to 553. Polarization is not being polite about it. The reason is that the bump in EE below ℓ ≈ 10 comes from photons rescattering during reionization, and its height goes as τ² rather than as the combination Ase−2τ that governs the peaks. It is a second, independent handle on τ, and it is the reason Planck quotes τ to ±0.007 rather than not at all. This is the one place on the page where adding a spectrum does not merely add detail — it changes what can be measured. Each panel carries its own χ² and its change from Planck in the corner of the plot, and the same three numbers are repeated under the sliders, where your eye is while you drag. The line beneath the sliders reports all three spectra whether or not they are plotted, greying the ones that are not — so the contrast between what temperature notices and what polarization notices is visible even with EE switched off.

ns — the tilt

Inflation predicts a spectrum of primordial fluctuations that is nearly, but not exactly, the same at all scales. ns = 1 would be exactly scale-invariant; the measured value is about 0.965, tilted so that large scales have slightly more power. The curve pivots. That the tilt is small but definitely not zero is one of the real quantitative successes of inflationary models.

How this is computed

A Boltzmann code cannot run in a browser, so the spectra here come from an emulator trained offline on CAMB. Four thousand models were drawn from the six-dimensional parameter box by Latin hypercube sampling and solved exactly, with θ given to CAMB directly and H₀ taken back out as a derived quantity; the logarithm of the resulting spectra was compressed by principal component analysis, and a small neural network was trained to map the six parameters onto the PCA coefficients. What the page ships is that network and its basis, evaluated on every slider move.

All three spectra come from one network and one basis: TT and EE through a logarithm, since both are positive, and TE linearly, because it changes sign about nineteen hundred times and no logarithm exists. That also means TE’s accuracy cannot honestly be quoted as a percentage — a fractional error is meaningless where a curve passes through zero — so it is given in absolute units below.

Against 600 held-out CAMB models never used in training, the emulator as shipped — including the multipole subsampling used for plotting — is accurate to a median of and a worst case of over ℓ ≥ 30 in TT, in EE, and at worst in TE against an rms amplitude of . For comparison, Planck’s own fractional uncertainty is 0.8% at ℓ ≈ 1000 and 2.3% at ℓ ≈ 2000, so the emulator error is well inside the measurement error everywhere on this plot. Below ℓ = 30 the emulator is better still, but the data there is limited by cosmic variance — at ℓ = 2 Planck’s error bar is about 150%, which is why those points are so tall. Where that limit comes from is a short story about there being only 2ℓ+1 modes on a sphere, and it is worth the detour.

You can lower χ² below its value at Planck’s own parameters. Nudge τ up by a couple of sigma and As by roughly twice that, and the TT χ² drops by about ten. That is a genuinely better fit to these 83 points with these error bars — the arithmetic is not lying. What it is not is evidence that the parameters are better.

Start with the size of it. χ² is itself a random variable: with N points it scatters with a standard deviation of √(2N), which is 12.9 here. A change of ten is 0.75 of one standard deviation — smaller than the noise in the statistic being used to judge it. Even the full nine-sigma τ–As slide, which shifts TT by 16, is only 1.2 standard deviations. Nothing in that range is a detection of anything.

Then the two reasons it leans that way at all.

About half of it is a missing nuisance parameter. Scaling the whole theory curve up by 0.28% lowers this χ² by five and a half all on its own; the binned points simply sit a touch above the model on average. Planck’s real likelihood has a calibration parameter that absorbs exactly that, and marginalises over it. This page does not, so the only way for it to take up the slack is to move As — and dragging As alone would wreck the fit, unless τ moves with it. Hence the pair.

The other half is the degeneracy itself: along that direction temperature has almost no opinion, so a couple of sigma costs nothing and any small preference in the data wins by default.

Switch on TE and EE and watch what happens. At one such point the TT χ² improves by 9.7, while TE worsens by 1.7 and EE by 5.9 — a combined change of −2.1 across 243 points, against a √(2N) of 22. Temperature calls it an improvement; polarization does not; and together they call it nothing at all.

The clean version of the test is to push harder. A two-sigma nudge leaves both spectra inside their own noise, so nothing is settled either way. Keep raising τ with As tracking it, and the two spectra separate decisively:

τ raised byTT Δχ²in sd EE Δχ²in sd
−2.30.2−0.10.0
−6.50.5+130.9
−10.20.8+654.7
−13.31.0+19314.1
−16.11.2+45933.5

Read the two “in sd” columns against each other. The temperature improvement grows linearly with the step and never escapes its own noise — 1.2 standard deviations at the far end, after a nine-sigma error in τ. The polarization penalty grows roughly as the square of the step and reaches 33. Temperature cannot distinguish these models however far you go; polarization separates them completely by about five sigma of τ. That is the whole reason Planck does not quote τ from temperature alone, and you can rediscover it here in about a minute.

None of this makes the χ² readout useless — a change of several hundred, which most slider moves produce, is far outside the noise and means exactly what it looks like. It is the changes of order ten that should not be read as improvements.

The measurements are the Planck 2018 public release: the Commander likelihood for ℓ = 2–29 and the binned Plik spectrum above, taken from the ESA Planck Legacy Archive. The χ² readout uses the 83 binned points with their diagonal errors only; the published likelihood has a full covariance matrix and calibration nuisance parameters, so treat the number as a guide to how well you are doing rather than a real fit statistic — see the note above on why it can fall below its value at Planck’s own parameters. The emulator assumes a flat universe with one massive neutrino of 0.06 eV, and the helium fraction is set by big bang nucleosynthesis, tracking the baryon density rather than being held fixed. The slider ranges are bounded so that every reachable combination stays physical: pushed further, θ at high baryon and low dark matter density drives H₀ above 100, and the opposite corner drives ΩΛ negative, which is no longer ΛCDM.

Where this curve comes from

Everything above treats the measured spectrum as given. It is not: it is the end of a long reduction that starts with a picture of the sky, subtracts the parts that are about us rather than about the early universe, decomposes what is left into spherical harmonics, and squares the coefficients. From sky map to power spectrum walks through that, and answers two questions this page leaves hanging: what ℓ = 220 actually means in terms of the blotches you can see in the Planck image, and why the error bars at the left-hand end are so enormous and so lopsided no matter how good the telescope gets.

Further afield: ΛCDM and the six parameters for what the model is; the cosmology calculator for distances and ages; evolving dark energy for what happens when Λ is not constant.