Boneyard Tools

Timecode, Frames and Seconds: How the Conversion Works

How SMPTE HH:MM:SS:FF timecode maps to frame counts and seconds, why the frame rate matters, and where non-drop-frame differs from drop-frame.

Reading a SMPTE timecode

A SMPTE timecode has four fields written HH:MM:SS:FF, standing for hours, minutes, seconds and frames. The first three behave like an ordinary clock, counting up to 59 before rolling over. The last field, frames, counts from 0 up to one below the project frame rate, so at 24 fps it runs 0 to 23 and then ticks the seconds field. This four-part label lets an editor point at an exact single frame rather than a rough position in time.

Turning timecode into a frame count

To get a total frame count you first collapse the clock part into whole seconds: hours times 3600, plus minutes times 60, plus the seconds field. Multiply that by the frame rate and add the frame field, and you have the number of frames from the very start. For 00:01:30:00 at 24 fps the clock part is 90 seconds, times 24 gives 2160 frames, plus a frame field of 0. Reverse the process to go from frames back to timecode: divide by the rate for the total seconds, take the remainder as the frame field, then split the seconds into hours, minutes and seconds.

Why the frame rate changes everything

The same timecode means different real durations at different rates only in the frame field, but the same frame count means very different timecodes. A count of 500 frames is just over 20 seconds at 24 fps but exactly 20 seconds at 25 fps, because 500 divided by 25 is a whole 20. That is why this calculator always asks for the rate before it converts. Mixing footage shot at different rates without accounting for this is a common source of sync drift.

Non-drop-frame versus drop-frame

Broadcast video in North America often runs at 29.97 fps rather than a round 30, which slowly pushes the timecode clock ahead of real time. Drop-frame timecode fixes this by skipping two frame numbers at the top of most minutes, keeping an hour of timecode close to an hour on the wall clock. Non-drop-frame makes no such correction and simply counts every frame, so it is exact for frame math but not for matching a real clock at 29.97 fps. This tool uses non-drop-frame, which is ideal for film rates like 24 and 25 and for any workflow where you care about frame counts rather than broadcast clock time.

Frequently asked questions

Can two different timecodes point to the same frame?

In non-drop-frame no, each frame has one label. In drop-frame the skipped numbers simply never appear, so certain labels are absent rather than duplicated.

How do I convert between frame rates?

Convert the source timecode to seconds here, then multiply those seconds by the target rate to get the new frame count. Keep in mind the frame field will not always land on a whole equivalent.