Corresponding author: [email protected] This is a part of The Leading Edge “Geophysical Tutorials” series. You can read more about it in . Open any textbook about seismic data processing and you will inevitably find a section about the normal moveout (NMO) correction. There you’ll see that we can correct the measured travel-time of a reflected wave t at a given offset x to obtain the travel-time at normal incidence t₀ by applying the following equation t_0^2=t^2-{v_^2} in which vNMO is the NMO velocity. There are variants of this equation with different degrees of accuracy, but we’ll use this one for simplicity. When applied to a common midpoint (CMP) section, the equation above is supposed to turn the hyperbola associated with a reflection into a straight horizontal line. What most textbooks won’t tell you is _how, exactly, do you apply this equation to the data_? Read on and I’ll explain step-by-step how the algorithm for NMO correction from works and how to implement it in Python. The accompanying Jupyter notebook contains the full source code, with documentation and tests for each function. You can download the notebook at github.com/seg or github.com/pinga-lab/nmo-tutorial.