Understanding Timecode to Frames conversion
SMPTE timecode labels every frame of video with an address in the form HH:MM:SS:FF — hours, minutes, seconds, and a two-digit frame number. This tool converts that address into a single total frame count (the frame number counting from 00:00:00:00), plus the equivalent real-world duration. It is the same math editing systems, VFX pipelines, and broadcast automation use to locate exact frames, trim clips, and hand off cue sheets between tools.
The core formula
For non-drop-frame timecode, the conversion is direct:
- Total Frames = FPS x (Hours x 3600 + Minutes x 60 + Seconds) + Frames
where FPS is the nominal frame rate used for counting — 24, 25, 30, 50, or 60 — and Frames is the FF field, which must be less than FPS (frame numbers run 0 to FPS−1, never reaching FPS itself). For example, 01:23:45:12 at 30 fps is 30 x (1 x 3600 + 23 x 60 + 45) + 12 = 30 x 5025 + 12 = 150,762 frames.
Drop-frame vs. non-drop-frame timecode
Fractional NTSC rates (23.976, 29.97, and 59.94 fps) are exactly 24, 30, and 60 fps multiplied by 1000/1001 — a tweak made in 1953 so the added color signal would not interfere with the existing black-and-white broadcast. Because 29.97 fps runs slightly slower than 30 fps, a timecode that simply counts at 30 frames per second drifts about 3.6 seconds behind real time over one hour. Non-drop-frame (NDF) timecode accepts that drift; it always uses the plain formula above. Drop-frame (DF) timecode corrects it by skipping frame numbers 00 and 01 at the start of every minute except minutes divisible by 10 (00, 10, 20, 30, 40, 50). No video frames are deleted — only the numbers 00 and 01 are skipped in the count — which keeps the displayed timecode matching a wall clock to within a frame over long recordings.
Worked example: drop-frame at 29.97 fps
For 01:23:45:12 with drop-frame enabled, first compute the plain (non-drop) frame number at the nominal 30 fps: 150,762 frames, as above. Then subtract the frames dropped over the elapsed 83 minutes (60 x 1 + 23): 2 dropped frames per minute except every 10th minute leaves 83 − floor(83/10) = 75 "droppable" minutes, so 2 x 75 = 150 frames are subtracted, giving 150,612 total frames. The real elapsed time is the same either way — the drop-frame adjustment only changes how frame numbers map onto the clock, not how many frames actually exist.
Common frame rates and where they are used
- 23.976 fps — film-originated content mastered for NTSC broadcast or streaming.
- 24 fps — the traditional cinema film rate.
- 25 fps — PAL/SECAM video, standard across most of Europe, Asia, Africa, and Australia.
- 29.97 fps — NTSC broadcast video (North America, Japan); almost always paired with drop-frame timecode for long-form content.
- 30 fps — non-broadcast digital video and some webcast formats.
- 50 / 59.94 / 60 fps — high frame rate broadcast, sports, and slow-motion capture.
Reading the result
The real-time duration divides the total frame count by the exact frame rate (for example 30000/1001 for 29.97 fps, not the rounded 30), so it reflects actual elapsed time regardless of whether the timecode is drop-frame or non-drop-frame — that field is what changes when you toggle timecode type.