Back to all blogs

What is Doppler Shift?

Doppler shift is the change in frequency of a signal caused by the relative motion between a transmitter and a receiver. This article explains what it is, derives the equation, and shows how it appears in the time domain and the frequency domain.

You have experienced the Doppler effect if you have ever heard the pitch of an ambulance siren drop as it passes you. The same physical phenomenon occurs in radar, satellite communications, sonar, and mobile radio, except here the “pitch” is the carrier frequency of a radio signal, and the consequence is not just a perceptual oddity but a measurable frequency offset that affects everything from demodulation to ranging.


What causes Doppler shift?

When a transmitter and receiver are stationary relative to each other, the received frequency equals the transmitted frequency. When they are moving relative to each other, the received frequency is different.

The physical reason is that motion changes the rate at which wavefronts arrive at the receiver. If the source is approaching, each successive wavefront has a slightly shorter distance to travel than the previous one, so the wavefronts arrive more frequently than they were emitted. The received frequency is higher than the transmitted frequency. If the source is receding, the opposite happens, wavefronts arrive less frequently and the received frequency is lower.


The Doppler shift equation

For a transmitter moving with radial velocity vrv_r relative to a stationary receiver, the received frequency frf_r is:

fr=ftc+vrcf_r = f_t \cdot \frac{c + v_r}{c}

where:

  • frf_r is the received frequency in Hz
  • ftf_t is the transmitted frequency in Hz
  • cc is the speed of propagation — speed of light (3×1083 \times 10^8 m/s) for radio signals, speed of sound for acoustic signals
  • vrv_r is the radial velocity of the source in m/s — positive when approaching, negative when receding

The Doppler shift fdf_d is the difference between the received and transmitted frequencies:

fd=frft=ftvrcf_d = f_r - f_t = f_t \cdot \frac{v_r}{c}

For the common radar case where the signal travels from transmitter to target and back (two-way propagation), the shift is doubled:

fd=2vrftcf_d = \frac{2 v_r f_t}{c}

where:

  • fdf_d is the Doppler shift in Hz — positive for an approaching target, negative for a receding one
  • vrv_r is the radial velocity in m/s
  • ftf_t is the transmitted frequency in Hz
  • cc is the speed of light in m/s

The key observation is that fdf_d is proportional to both the radial velocity and the transmitted frequency. A higher carrier frequency produces a larger Doppler shift for the same velocity. A LEO satellite at 7500 m/s will produce a much larger Doppler shift on a 10 GHz carrier than on a 400 MHz carrier.


Real-world examples

ScenarioTransmit frequencyRadial velocityDoppler shift (one-way)
LEO satellite pass437 MHz7500 m/s±10.9 kHz
Aircraft radar target10 GHz300 m/s±10 kHz
Vehicle (100 km/h) on mobile link2.4 GHz27.8 m/s±444 Hz
Walking pedestrian2.4 GHz1.5 m/s±12 Hz

Notice that even a walking pedestrian produces a measurable Doppler shift on a 2.4 GHz carrier. This is why Doppler compensation is needed in any system with mobility, not just high-speed radar.


What Doppler shift looks like in a signal

To make the effect visible in code, we use audio-range frequencies where the Doppler shift is large enough to see clearly in a plot. The physical principle is identical to RF, only the numbers change.

Doppler Figure 1 — Doppler shift as a function of radial velocity

The plot shows that fdf_d is a linear function of velocity. Approaching targets produce a positive shift (blue region) and receding targets produce a negative shift (brown region). The slope of the line is 2ft/c2f_t / c,steeper for higher carrier frequencies.

Doppler in Time Figure 2 — Time domain: transmitted vs Doppler-shifted signal

In the time domain the two signals look almost identical at first glance — both are sinusoids of similar appearance. The difference becomes visible only when you look carefully: the received signal has a slightly higher frequency so its cycles accumulate faster. Over a longer window, the phase difference between the two signals would grow continuously. In practice this phase accumulation is what causes symbol errors in digital communications receivers if Doppler is not corrected.

Doppler in Freq Figure 3 — Frequency domain: the Doppler shift is directly visible in the FFT

The FFT makes the Doppler shift immediately visible. The transmitted signal has a sharp peak at ft=200f_t = 200 Hz. The received signal has an identical-shaped peak shifted to fr=220f_r = 220 Hz. The shift of fd=+20f_d = +20 Hz is the Doppler shift. In practice you do not have access to both signals simultaneously — the detection and estimation problem is covered in the next article.


Learn interactively

Use the interactive module below to understand doppler shift in signals. This tool simulates a one-way acoustic propagation (c=343 m/s) to make the physical shifts easily visible at lower frequencies.

Interactive Doppler Shift

Doppler Shift (fd)+23.32 Hz
Received Freq (fr)423.32 Hz

Time Domain

Frequency Domain

Signal Parameters: fs = 8 kHz | c = 343m/s


Next in this series: How to Detect and Compensate Doppler Shift - we will learn how to do FFT-based frequency estimation, the cross-correlation method, and compensation by frequency derotation, with Python code.