How timecode works
Timecode labels every frame as hours:minutes:seconds:frames. At 25 fps the frame number runs from 00 to 24, then the seconds tick over. Converting frames to timecode is division: frames ÷ frame rate gives whole seconds, and the remainder is the frame number. At 25 fps, frame 1,000 is 00:00:40:00.
That simple rule only matches the clock on the wall when the frame rate is a whole number. The rates used for NTSC video, 23.976, 29.97 and 59.94, are really 24, 30 and 60 multiplied by 1000/1001, so they run 0.1% slower than their timecode counts.
Drop-frame vs non-drop timecode
Non-drop (written with colons, 00:10:00:00) counts every frame at the nominal rate of 30. At 29.97 fps it falls behind real time by about 3.6 seconds an hour.
Drop-frame (written with a semicolon before the frames, 00:10:00;00) fixes that by skipping frame numbers, not frames. At 29.97 it skips 00 and 01 at the start of every minute except minutes 00, 10, 20, 30, 40 and 50. That removes 18 numbers every ten minutes, which keeps timecode within a fraction of a frame of the clock. So the timecode after 00:00:59;29 is 00:01:00;02. At 59.94 drop-frame, four numbers (00 to 03) are skipped instead.
| Rate | Real fps | Frames in 10 min of timecode | Matches the clock? |
|---|---|---|---|
| 23.976 | 24000/1001 | 14,400 | No, 0.1% slow |
| 24, 25, 30, 50, 60 | Exact | rate × 600 | Yes |
| 29.97 NDF | 30000/1001 | 18,000 | No, 0.1% slow |
| 29.97 DF | 30000/1001 | 17,982 | Yes, almost exactly |
| 59.94 NDF | 60000/1001 | 36,000 | No, 0.1% slow |
| 59.94 DF | 60000/1001 | 35,964 | Yes, almost exactly |
There is no drop-frame standard for 23.976, so it is always counted as non-drop at 24.
Using the calculator
- Pick the frame rate of your project or footage. Check your editor’s sequence settings if you aren’t sure, and match drop or non-drop too.
- Type into any of the three boxes: frames, timecode or seconds. The other two update. Seconds are real running time, so at 29.97 they won’t match the timecode exactly unless you use drop-frame.
- To find a duration, put the out point in A, the in point in B and choose A − B. To find an end point, add a duration to a start timecode.
Timecode can be typed with colons, semicolons or dots, and short forms work: 10:00 means ten seconds and zero frames. Changing the frame rate keeps the frame count and recalculates the timecode.
Common uses
- Turning a frame count from a script, a render log or ffprobe into a timecode you can jump to.
- Working out a programme’s exact running time for a broadcast delivery spec.
- Checking where a drop-frame timecode lands when you move footage between 29.97 and 30 fps projects.
FAQ
How do I convert frames to timecode?
Divide the frame count by the frame rate. The whole number is seconds, which you split into hours, minutes and seconds, and the remainder is the frame number. At 25 fps, 1,000 frames is 00:00:40:00. At 29.97 drop-frame you also add back the skipped frame numbers, which the calculator does for you.
What is drop-frame timecode?
A way of counting 29.97 or 59.94 fps video so the timecode matches real time. It skips frame numbers 00 and 01 (00 to 03 at 59.94) at the start of each minute, except every tenth minute. No video frames are thrown away, only labels.
How many frames are in 10 minutes at 29.97 fps?
17,982. In drop-frame that is exactly 00:10:00;00. In non-drop timecode, 10:00 of timecode is 18,000 frames, which lasts about 10 minutes 0.6 seconds of real time.
How do I calculate the duration between two timecodes?
Convert both to frames at the same frame rate, subtract, and convert the difference back to timecode. Put the out point in A and the in point in B, and choose A − B.