Axes are l:c ratio against Doppler-shifted velocity referenced to the PH3 wavelength. Left: the least and most conservative solutions after fitting and removing spectral ripple (see ‘JCMT data reduction’ in Methods), with the residual line present inside velocity ranges of |v| = 8 km s−1 (solid, black) and |v| = 2 km s−1 (dashed, orange). The data have been binned for clarity into histograms (that is, bars denoting averages) on the x axis; representative 1σ error bars are 0.46 × 10−4 in l:c ratio per 3.5 km s−1 spectral bin. Error bars indicate the dispersion within each channel from 140 co-added input spectra; channel-to-channel dispersion is higher by ~40%, attributable to residual ripple, and contributing to the range of signal-to-noise ratio (Table 1). Right: the adopted mid-range solution with |v| = 5 km s−1 (histogram), overlaid with our model for 20 ppb abundance by volume. The solid red curve shows this model after processing with the same spectral fitting as used for the data. The line wings and continuum slope have thus been removed from the original model (bottom dashed red curve). As the spectral fitting forces the line wings towards zero, only the range ±10 km s−1 around Venus’s velocity was used in line characterization (Table 1).