  Time domain astronomy and the increasing number of exoplanet candidates call
for reliable, robust, and automatic wavelength calibration. We present an
algorithm for wavelength calibrating \'echelle spectrographs that uses
order-by-order extracted spectra and a list of laboratory wavelengths. Our
approach is fully automatic and does not need the pixel locations of certain
spectral features with which to anchor the wavelength solution, nor the true
order number of each diffraction order. We use spectral features that are
duplicated in adjacent orders to establish the scale-invariant component of the
wavelength solution. We then match the central wavelengths of spectral features
to laboratory wavelengths to establish the scale and higher order components of
the wavelength solution. We demonstrate our method on the four spectrographs of
Las Cumbres Observatory's Network of Robotic \'Echelle Spectrographs (NRES), on
the High Accuracy Radial Velocity Planet Searcher (HARPS) spectrograph, and on
synthetic data. We obtain a velocity-equivalent precision of 10 m/s on NRES. We
achieve 1 m/s on HARPS, which agrees with the precision reported by the HARPS
team. On synthetic data, we achieve the velocity precision set by Gaussian
centroiding errors. Our algorithm likely holds for a wide range of
spectrographs beyond the five presented here. We provide an open-source Python
package, xwavecal (https://github.com/gmbrandt/xwavecal/), which outputs
wavelength calibrated spectra as well as the wavelengths of spectral features.
