Doppler Scrub

The sky in your video knows where you are

Scrub
← Clean
Incoming
100 Hz
300 Hz
500 Hz
Pass01
SourceTurboprop
Blade pass98 Hz
Heard now112.4 Hz
Ground speed146 kt
Closest passin 0:08

Move across the field: you are a sound source too.

A plane overhead leaves a sliding tone in your audio. Its pitch drops as it passes, and the shape of that drop gives away its speed and the second it flew over you. Match two of them against public flight tracks and a clip can be placed on a map.

Doppler Scrub finds those tones and removes them, along with mains hum, on your own phone. Voices, birds, wind and room tone stay.

How a clip gets located

Three steps from a sound to a street

  1. 01

    Record

    A turboprop's blades pass 98 times a second. On the ground you hear 128 Hz as it comes in and 80 Hz as it leaves.

  2. 02

    Measure

    The two pitches give the speed: f′ = f · c / (c + v). The steepest point of the slide is the moment it was closest.

  3. 03

    Match

    ADS-B logs every aircraft's position, every second, in public. One pass gives a line on the map. Two passes 15 minutes apart give a point.

What changes in the audio

Drag to compare

ScrubbedOriginal
Spectrogram of a 2-minute clip, 0 to 600 Hz. Two flyovers slide down through the original; mains hum sits on 50 Hz steps. The scrubbed side keeps the noise floor, so nothing traces the removed curves.

Removed

  • Aircraft and vehicle tonessliding, 60–6000 Hz
  • Mains hum50 / 60 Hz + harmonics
  • GPS and capture timefile metadata

Kept

  • Voicespitch moves too fast to match
  • Birds, wind, trafficbroadband or brief
  • Fans and fridgessteady, local

Open source · MIT

Don't take our word for it

"Nothing is uploaded" is only worth something if you can check it. The whole scrub is one Python file of about 550 lines. The page runs that same file in your browser through Pyodide, and Mediabunny with the browser's own codecs handles the video. Read it, run it on your own clips, or make the detector better.

git clone https://github.com/danielcanton/doppler-scrub
python3 scrub.py clip.mp4 clean.mp4 --plot before_after.png