Understanding the frames to timecode converter — concept and principle
Video editors label every frame with SMPTE timecode in the form HH:MM:SS:FF. This converter turns a frame count into timecode or a timecode back into a frame count for common frame rates, including 29.97 fps drop-frame, and shows the real running time and how far the timecode label differs from the clock.
How it is calculated
Non-drop: frame = ((HH × 60 + MM) × 60 + SS) × base + FF
Drop-frame (29.97): frame = ((HH × 60 + MM) × 60 + SS) × 30 + FF − 2 × (total minutes − ⌊total minutes ÷ 10⌋)
Real time (s) = frame ÷ actual frame rate (for example 30000 ÷ 1001)
Timecode ahead of real time = label time − real time
- Drop-frame timecode uses a semicolon before the frames; 23.976 and 59.94 are counted as non-drop with bases 24 and 60.
The principle
NTSC colour video runs at 30 ÷ 1.001 ≈ 29.97 frames per second, slightly slower than 30. If you label frames as if there were exactly 30 per second, the label drifts behind the clock by 3.6 seconds per hour. Drop-frame timecode fixes this by skipping the frame numbers 00 and 01 at the start of every minute except every tenth minute. No pictures are dropped, only labels. That removes 108 labels per hour, which exactly cancels the drift to within a few milliseconds.
Worked example
Default inputs: frame count → timecode, 29.97 fps drop-frame, 107,892 frames.
- One hour of 29.97 fps video holds 30,000 ÷ 1,001 × 3,600 ≈ 107,892 frames.
- Adding back the skipped labels, the frame count maps to 01:00:00;00.
- Frame count = 107,892.
- Real running time = 107,892 ÷ 29.97003 = 3,599.996 s = 1:00:00.
- Timecode ahead of real time = 3,600 − 3,599.996 = 0.004 s.
How to read the result
Use drop-frame for 29.97 fps broadcast work where the timecode must match the clock, for example to schedule programmes. Non-drop counting is simpler for editing and is standard for 24, 25 and 30 fps. Always confirm the project's timecode setting before exchanging edit lists, because a mismatch causes clips to land at the wrong place.
Common mistakes
- Treating 29.97 drop-frame as if frames are actually removed.
- Mixing drop-frame and non-drop timecode in one project.
- Entering a drop-frame timecode that does not exist, such as 00:01:00;00.
- Assuming 23.976 uses drop-frame; it is counted as non-drop.
Frequently asked questions
Why is it called drop-frame?
Frame numbers are dropped from the count; no video frames are removed.
Which timecodes are skipped?
Frames 00 and 01 at the start of each minute, except minutes 00, 10, 20, 30, 40 and 50.
What does the semicolon mean?
It indicates drop-frame timecode.
Does 25 fps need drop-frame?
No. 25 fps is an exact rate, so non-drop timecode matches the clock.
Sources: SMPTE ST 12-1:2008, "Time and Control Code" (drop-frame counting for 30/1.001 fps)