Type a timecode and find out instantly. Drop frame skips a few frame numbers every minute, and this tells you whether yours is one of them.
NTSC color video runs at 30000/1001 ≈ 29.97 frames per second, not 30. If you count those frames with plain 30 fps timecode, the clock on the wall pulls ahead of the timecode by about 3.6 seconds every hour. That's fine until someone needs a one-hour show to actually be one hour.
Drop frame fixes this by skipping frame numbers (never actual frames) so the timecode stays in step with real time. The picture is untouched; only the labels jump.
At 29.97, the first 2 frame numbers of every minute are skipped.
At 59.94, the first 4 frame numbers of every minute are skipped.
Except every 10th minute (00, 10, 20…), where nothing is skipped.
The math: 2 numbers × 54 non-tenth minutes = 108 frame numbers dropped per hour, which is
exactly the 3.6 seconds of drift. By convention, drop frame uses a semicolon (;) before
the frames field and non-drop uses a colon (:).
Need this in a script or pipeline? TimecodeTool is a small command-line tool (and Go library) from the same author. It validates timecodes, measures the span between two of them, and does timecode arithmetic, with JSON output so it fits neatly into automation.
# Is this valid drop frame? $ TimecodeTool validate "00:07:00;00" --fps=29.97 # Duration and frame count between two timecodes $ TimecodeTool span "01:00:00:00" "01:01:00:00" --fps=23.98 # Add and subtract timecodes and raw frames $ TimecodeTool calculate "01:00:00:00" + "00:00:01:00" + 23 - "00:00:00:10" --fps=23.98
+ and -.