Astrophysics · Relativity
📅 July 2026 ⏱ ≈ 14 min read 🎯 Intermediate · Last updated: 9 July 2026

Gravitational Waves — LIGO and ripples in spacetime

On 14 September 2015, two laser beams four kilometres long detected a stretch and squeeze of space itself smaller than one ten-thousandth the width of a proton. That signal — a fraction of a second, rising in pitch like a bird's chirp — was the sound of two black holes merging 1.3 billion light-years away, and it opened an entirely new way of observing the universe.

TL;DR: LIGO detects gravitational waves — ripples in spacetime predicted by Einstein — by measuring tiny stretches in two 4km laser arms. As two black holes or neutron stars spiral together, the wave's frequency and amplitude rise in a "chirp," encoded in the chirp mass formula. GW150914 in 2015 confirmed the first direct detection, opening gravitational-wave astronomy.

1. Einstein's 1916 prediction

General relativity describes gravity not as a force but as curvature of spacetime caused by mass and energy. In 1916, Einstein showed that his field equations, in their weak-field linearized form, admit wave-like solutions: accelerating masses should radiate ripples of spacetime curvature that propagate outward at the speed of light — gravitational waves.

For decades the effect was considered far too small to ever detect. Ordinary objects (even planets orbiting stars) produce gravitational waves so faint they are utterly swamped by noise. Only the most extreme events in the universe — merging black holes and neutron stars — produce a signal that reaches Earth strong enough, even in principle, to measure.

Indirect proof came first: in 1974, Hulse and Taylor discovered a binary pulsar (PSR B1913+16) whose orbit was slowly decaying exactly as general relativity predicted for a system losing energy to gravitational-wave emission. That indirect confirmation earned the 1993 Nobel Prize — decades before the direct detection.

2. Strain: stretching spacetime

A gravitational wave passing through a region alternately stretches space in one direction while squeezing it in the perpendicular direction, then reverses — a quadrupole pattern, unlike the dipole radiation of electromagnetism. The size of this distortion is described by the dimensionless strain, h = ΔL / L: the fractional change in length.

h ~ 10⁻²¹ ← typical strain from a black hole merger, at Earth

For a 4 km LIGO arm:
ΔL = h · L = 10⁻²¹ × 4000 m ≈ 4 × 10⁻¹⁸ m
— about 1/1000th the diameter of a proton

Measuring a length change a thousand times smaller than a proton, over a 4 km baseline, is one of the most precise measurements ever made by humans — and it requires isolating the detector from every other source of vibration: seismic noise, thermal noise, even quantum shot noise in the laser light itself.

3. Binary inspiral and the chirp

Two compact objects (black holes or neutron stars) orbiting each other radiate gravitational waves, carrying away orbital energy. As energy is lost, the orbit shrinks and the objects speed up — which radiates even more strongly, in a runaway feedback loop that ends in a merger. Three distinct phases mark the signal:

The inspiral phase's frequency evolution follows a well-understood formula from post-Newtonian theory, making it the phase most amenable to a simple simulation.

4. The chirp mass formula

The rate at which the gravitational-wave frequency rises during inspiral depends almost entirely on one combination of the two masses, called the chirp mass:

M_c = (m₁ · m₂)^(3/5) / (m₁ + m₂)^(1/5)

The frequency's rate of change (the "chirp rate") is:

df/dt = (96/5) · π^(8/3) · (G·M_c/c³)^(5/3) · f^(11/3)

Because the GW frequency is twice the orbital frequency (f_GW = 2 · f_orb, from the quadrupole symmetry of the radiation), a numerically integrated version of this equation gives exactly the rising-pitch "chirp" heard in LIGO's audio conversions of real detections.

// Integrate the chirp-rate ODE forward in time
function simulateChirp(m1_solar, m2_solar, f0 = 30, dt = 0.001) {
  const G = 6.674e-11, c = 3e8, Msun = 1.989e30;
  const m1 = m1_solar * Msun, m2 = m2_solar * Msun;
  const Mc = Math.pow(m1 * m2, 3/5) / Math.pow(m1 + m2, 1/5);

  let f = f0;
  const freqTrack = [];
  while (f < 400) {  // stop near merger frequency
    const dfdt = (96/5) * Math.pow(Math.PI, 8/3)
      * Math.pow(G * Mc / (c*c*c), 5/3) * Math.pow(f, 11/3);
    f += dfdt * dt;
    freqTrack.push(f);
  }
  return freqTrack;
}

5. LIGO's laser interferometer

LIGO (Laser Interferometer Gravitational-Wave Observatory) uses a Michelson interferometer with two perpendicular arms, each 4 km long. A laser beam is split, sent down both arms, bounced off mirrors, and recombined:

Component Role Key spec
Arm length Baseline for strain measurement 4 km
Laser power Reduces shot noise ~750 kW circulating
Mirror suspension Isolates seismic noise Multi-stage pendulum
Vacuum tubes Removes air-pressure noise One of the largest vacuum systems on Earth

6. GW150914: the first detection

On 14 September 2015, both LIGO detectors recorded a signal matching the inspiral-merger-ringdown template of two black holes, approximately 36 and 29 solar masses, merging into a single ~62 solar-mass black hole roughly 1.3 billion light-years away. The missing ~3 solar masses were radiated away as gravitational-wave energy in a fraction of a second — briefly outshining every star and galaxy in the observable universe in terms of raw power output.

The detection, announced in February 2016, earned the 2017 Nobel Prize in Physics for Rainer Weiss, Barry Barish and Kip Thorne. Since then, LIGO and Virgo have catalogued well over 90 confirmed events, including GW170817, a neutron star merger observed simultaneously in gravitational waves and across the electromagnetic spectrum — the birth of multi-messenger astronomy.

Numbers: GW150914's signal lasted about 0.2 seconds in the detector's sensitive band, sweeping from ~35 Hz to ~250 Hz — audibly a rising "whoop" when played back sped up.

7. Simulating the chirp in Three.js

The gravitational-wave simulation on this site visualises the inspiral as two orbiting point masses whose separation shrinks over time following the chirp-rate equation above, with a live strain waveform plotted alongside — the classic rising-frequency, rising-amplitude "chirp" shape.

// Update orbiting binary each frame using the chirp frequency track
function updateBinary(t, freqTrack, dt, group) {
  const idx = Math.min(Math.floor(t / dt), freqTrack.length - 1);
  const f_orb = freqTrack[idx] / 2;       // GW freq is 2x orbital freq
  const theta = 2 * Math.PI * f_orb * t;

  // Separation shrinks as frequency rises (simplified, for visual effect)
  const r = 8.0 / Math.pow(f_orb / 15, 2/3);

  group.body1.position.set( r * Math.cos(theta),  0,  r * Math.sin(theta));
  group.body2.position.set(-r * Math.cos(theta),  0, -r * Math.sin(theta));
}

// Strain waveform, drawn on a 2D canvas overlay: h(t) ~ amplitude(t) * cos(2*phase(t))
function strainAt(t, freqTrack, dt) {
  const idx = Math.min(Math.floor(t / dt), freqTrack.length - 1);
  const f = freqTrack[idx];
  const amplitude = Math.pow(f / 30, 2/3);  // grows as merger approaches
  return amplitude * Math.cos(2 * Math.PI * f * t);
}

Rendering the spacetime distortion itself — rather than just the orbiting masses — is done with a deformed plane mesh: a grid whose vertex heights ripple outward from the binary using the same strain function, giving the classic "ripples on a rubber sheet" visualisation (a simplification of true 4D spacetime curvature, but effective for intuition).

8. Extensions and improvements

🌊 Gravitational Wave Chirp

The live simulation renders an inspiralling binary and its rising-frequency chirp waveform, modelled on real LIGO detections like GW150914.

Launch simulation →