Frames to Timecode Calculator

Convert a frame count into standard SMPTE timecode (HH:MM:SS:FF) at any common video frame rate, with accurate drop-frame and non-drop-frame counting.

Quick Facts

Formula
Frame count = (HH×3600 + MM×60 + SS) × fps + FF
Reversed to split a frame count back into HH:MM:SS:FF.
Drop-frame rule
Skip frame numbers 00 and 01 every minute, except every 10th minute
Used at 29.97 and 59.94 fps to keep timecode close to real clock time; no video frames are actually removed.

Your Results

Calculated
Resulting timecode
-
HH:MM:SS:FF (";" marks drop-frame)
Elapsed real time
-
Wall-clock duration from 00:00:00:00
Total frame count
-
Frames from 00:00:00:00 to this point
Frame rate & format
-
Standard used for this conversion

Ready

Enter a starting timecode, a frame offset, and a frame rate, then press Calculate.

About the Frames to Timecode Calculator

This calculator converts a frame count into standard SMPTE timecode — the HH:MM:SS:FF address format used throughout video editing, color grading, and broadcast to identify an exact frame. Enter a starting timecode, a number of frames to add (or subtract), and a frame rate, and it computes the resulting timecode, the real elapsed time it represents, and the underlying frame count.

The formula

Converting a frame count to timecode is straightforward arithmetic once the frame rate is fixed. For non-drop-frame timecode at a nominal frame rate fps:

  • FF (frames) = frameCount mod fps
  • SS (seconds) = floor(frameCount / fps) mod 60
  • MM (minutes) = floor(frameCount / fps / 60) mod 60
  • HH (hours) = floor(frameCount / fps / 3600)

The same relationship runs in reverse to turn a starting timecode back into a frame count: frameCount = (HH×3600 + MM×60 + SS) × fps + FF. To find a resulting timecode, the calculator converts the starting timecode to a frame count, adds the frame offset, and converts the total back to HH:MM:SS:FF.

Drop-frame timecode at 29.97 and 59.94 fps

Video that actually runs at 29.97 fps (NTSC) or 59.94 fps causes a problem: if you count frames as if the rate were an even 30 or 60 fps, the displayed timecode drifts about 3.6 seconds ahead of real clock time every hour. Drop-frame timecode corrects this by skipping frame numbers 00 and 01 at the start of every minute, except minutes 00, 10, 20, 30, 40, and 50. No video frames are deleted — only two frame numbers are renumbered per affected minute — and the result stays within about one frame of real time over 24 hours. Drop-frame timecode is written with a semicolon before the frames field (HH:MM:SS;FF); non-drop-frame uses a colon (HH:MM:SS:FF).

How to get the best results

  • Match the frame rate exactly to your source footage — 23.976 and 24 fps, or 29.97 and 30 fps, look similar but produce different timecode for the same frame count.
  • Use drop-frame only for 29.97 or 59.94 fps sources that are meant to track real time (typical for US broadcast); use non-drop-frame for film-rate or PAL-rate projects.
  • Enter the starting timecode as HH:MM:SS:FF using either colons or semicolons — the calculator reads either separator.

Practical context

Timecode math like this comes up when trimming an edit decision list (EDL) entry by a fixed number of frames, syncing multi-camera footage, calculating how far into a program a cue point falls, or checking whether a delivery spec's frame rate and drop-frame requirement match your master file. The arithmetic is exact; matching the correct frame rate and drop-frame convention to your actual footage is the part that requires judgment.

Frequently Asked Questions

What is SMPTE timecode?
SMPTE timecode labels every frame of video with an address in the form HH:MM:SS:FF (hours:minutes:seconds:frames), counted from a reference point such as 00:00:00:00 or 01:00:00:00. It lets editors, colorists, and broadcast engineers refer to an exact frame instead of an approximate time.
What is the difference between drop-frame and non-drop-frame timecode?
Non-drop-frame timecode counts frames 0-29 (at 30 fps) or 0-59 (at 60 fps) every second with no adjustment, which drifts from real clock time at the true rates of 29.97 and 59.94 fps. Drop-frame timecode fixes that drift by skipping frame numbers 00 and 01 at the start of every minute except minutes divisible by 10, keeping the displayed clock within a couple of frames of real time over 24 hours. No video frames are deleted, only frame numbers.
How do you convert a frame count to timecode by hand?
For non-drop-frame timecode: FF = frameCount mod fps; total whole seconds = floor(frameCount / fps); SS = total seconds mod 60; total minutes = floor(total seconds / 60); MM = total minutes mod 60; HH = floor(total minutes / 60). Drop-frame timecode uses the same idea but renumbers frames to skip 2 (or 4, at 60 fps) frame numbers per minute except every tenth minute.
Why does drop-frame timecode use a semicolon before the frames?
The semicolon in HH:MM:SS;FF is the standard SMPTE convention marking a timecode as drop-frame. A colon in that position, HH:MM:SS:FF, marks non-drop-frame. The separator is a labeling convention only — it does not change how the frame count itself is stored.