The Stolt f‐x migration algorithm is a direct (i.e. nonrecursive) Fourier‐domain technique based on a change of variables, or equivalently a mapping, that converts the unmigrated spectrum to the migrated spectrum. The algorithm is simple and efficient but limited to constant velocity. A v(z) f‐k migration method, capable of very high accuracy for vertical velocity variations, can be formulated as a nonstationary filter that avoids the change of variables. The result is a direct Fourier‐domain process that, for each wavenumber, applies a nonstationary migration filter to a vector of input frequency samples to create a vector of output frequency samples. The filter matrix is analytically specified in the mixed domain of input frequency and migrated time. It can be moved to the full‐Fourier domain of input frequency and output frequency by a fast Fourier transform. When applied for constant velocity, the v(z) f‐k algorithm is slower than the Stolt method but without the usual artifacts related to complex‐valued frequency‐domain interpolation. Vertical velocity variations, through an rms‐velocity (straight‐ray) assumption, are handled by the v(z) f‐k method with no additional cost. Greater accuracy at slight additional expense is obtained by extending the method to a WKBJ phase‐shift integral. This has the same accuracy as recursive phase shift and is similar in cost. For constant velocity, the full‐Fourier domain migration filter is a discrete approximation to a Dirac delta function whose singularity tracks along a hyperbola determined by the migration velocity. For variable velocity, the migration filter has significant energy between hyperbolic trajectories determined by the minimum and maximum instantaneous velocities. The full‐Fourier domain offers interesting conceptual parallels to Stolt’s algorithm. However, unless a more efficient method of calculating the Fourier filter matrix can be found, the mixed‐domain method will be faster. The mixed‐domain nonstationary filter moves the input data from the Fourier domain to the migrated time domain as it migrates. It is faster because the migration filter is known analytically in the mixed domain.