Frames to Timecode Calculator
Enter a frame count and choose your frame rate to get the exact SMPTE timecode in HH:MM:SS:FF format. The calculator supports every standard video frame rate from 23.976 to 60 fps, including 29.97 and 59.94 drop-frame (DF) modes used in NTSC broadcast. You also get the equivalent wall-clock duration broken down into hours, minutes, seconds, and leftover frames.
Formula
Worked example
For frame 2400 at 24 fps: FF = 2400 mod 24 = 0, total seconds = floor(2400/24) = 100, SS = 100 mod 60 = 40, total minutes = floor(100/60) = 1, MM = 1 mod 60 = 1, HH = floor(2400/86400) = 0. Timecode: 00:01:40:00.
What is SMPTE timecode?
SMPTE timecode (defined in SMPTE 12M) is a standard addressing system for video and audio used across broadcast television, film post-production, and digital audio workstations. A timecode address looks like HH:MM:SS:FF - hours, minutes, seconds, and frames. Each frame of video has a unique address, which is how editors, colorists, and sound designers refer to a specific moment in a clip or sequence. Colons separate the components in non-drop-frame timecode; a semicolon before the frame count (HH:MM:SS;FF) indicates drop-frame mode. SMPTE timecode can be embedded in a video signal, recorded on a dedicated tape track, or stored as metadata in a digital file.
Non-drop-frame vs. drop-frame timecode
The confusion around drop-frame timecode comes from a historical quirk: NTSC color video runs at exactly 30000/1001 frames per second (approximately 29.97), not a clean 30 fps. At 29.97 fps, a non-drop-frame (NDF) timecode that pretends the rate is exactly 30 fps will drift from wall-clock time by about 3.6 seconds every hour, which is a real problem for broadcasting where programs must end on schedule. Drop-frame (DF) timecode compensates by skipping frame numbers 00 and 01 at the start of every minute except every tenth minute. No actual video frames are removed - only the frame numbers are omitted from the timecode count. This keeps timecode synchronized with real time to within about two frames per day. You can tell drop-frame timecode by the semicolon separator: 00:02:30;00 is drop-frame, 00:02:30:00 is non-drop-frame. The same principle applies to 59.94 fps, where 4 frame numbers are dropped per eligible minute.
How to convert frames to timecode
The conversion is integer division at each timecode component. Given a total frame count F and an integer fps: the frames component FF is F modulo fps; the seconds component SS is the floor of (F divided by fps) modulo 60; the minutes component MM is the floor of (F divided by fps times 60) modulo 60; and hours HH is the floor of (F divided by fps times 3600). For example, frame 5400 at 25 fps: FF = 5400 mod 25 = 0, total seconds = 5400/25 = 216, SS = 216 mod 60 = 36, total minutes = floor(216/60) = 3, MM = 3 mod 60 = 3, HH = 0. Timecode: 00:03:36:00. Drop-frame conversions require an extra adjustment step defined in SMPTE 12M to account for the skipped frame numbers, which is why a dedicated calculator is helpful.
Practical uses in post-production
Knowing the timecode for a given frame count matters in several real workflows. When syncing audio recorded separately (double-system sound), the recorded timecode must match the matching frame in the edit timeline. VFX shots are handed off with a start frame and end frame number, which the compositor converts to timecode to locate the shot on the timeline. Subtitle and caption files (SRT, VTT) use timecodes to place each line of text at the right frame. Delivery specifications from broadcasters (like "program starts at 01:00:00:00 with a 8-frame slate") require knowing exactly which frame number to begin recording. Burn-in timecode overlays on review files help directors and producers communicate precise feedback by frame address rather than an imprecise time offset.
Standard video frame rates and their uses
| Frame Rate | Type | Drop-Frame? | Typical Use |
|---|---|---|---|
| 23.976 fps | Film / NTSC pulldown | No | Streaming, Blu-ray, theatrical |
| 24 fps | Cinema | No | Feature films, narrative content |
| 25 fps | PAL / EBU | No | Europe, Australia broadcast & streaming |
| 29.97 NDF | NTSC | No (drifts ~3.6 s/hr) | Legacy NTSC, some web |
| 29.97 DF | NTSC | Yes | US broadcast, news, commercials |
| 30 fps | Web / social | No | YouTube, social media, web video |
| 48 fps | HFR cinema | No | HFR theatrical (The Hobbit) |
| 50 fps | PAL HFR | No | Sports in PAL territories |
| 59.94 DF | NTSC HFR | Yes | US broadcast sports, live events |
| 60 fps | Web / gaming | No | Gaming, sports, social video |
Common fps values, their origin, and where each is typically used.
Frequently asked questions
What is the difference between drop-frame and non-drop-frame timecode?
Drop-frame (DF) timecode skips certain frame numbers (but not actual frames) to keep timecode synchronized with real wall-clock time when working at 29.97 or 59.94 fps. Non-drop-frame (NDF) timecode counts every frame number without skipping, which means at 29.97 fps it drifts about 3.6 seconds behind real time per hour. DF is required for US broadcast deliverables; NDF is fine for most other purposes. You can tell them apart by the separator: a semicolon (HH:MM:SS;FF) means drop-frame, colons mean non-drop.
Does frame 0 or frame 1 start the timecode?
Most NLEs and this calculator treat frame 0 as the very first frame of a clip, which corresponds to timecode 00:00:00:00. Some workflows, especially older broadcast ones, start at 00:00:00:00 as the first displayed frame. The important thing is consistency within a project: as long as every tool in your pipeline agrees on where frame 0 maps, the arithmetic works out.
Why does my NLE show a different timecode than this calculator?
The most common cause is a mismatch between drop-frame and non-drop-frame settings. If your NLE project is set to 29.97 DF but you calculate with the NDF option here (or vice versa), the timecodes will diverge over time. Another cause is a start-of-timeline offset: many NLEs set the sequence to begin at 01:00:00:00 rather than 00:00:00:00, adding exactly one hour (108,000 frames at 30 fps) to every address.
How do I add or subtract two timecodes?
Convert each timecode to a total frame count using the reverse formula (frame count = HH x fps x 3600 + MM x fps x 60 + SS x fps + FF), add or subtract the frame counts, then convert the result back to timecode. This avoids rollover errors you would get from trying to add the components directly. For drop-frame projects, apply the DF frame-count formula for each step.
What frame rate should I use for streaming video?
23.976 fps is the standard for streaming platforms targeting a cinematic look (Netflix, Apple TV+, Disney+). 24 fps is essentially the same look and is fine for platforms that accept it. 25 fps is standard across Europe and Australia. 29.97 or 30 fps is common for non-cinematic content like talk shows and some web video. 60 fps is increasingly used for high-motion gaming and sports content.
What does the frame count represent in a video file?
In a digital video file, frames are numbered sequentially from 0 (or 1, depending on the container). The total frame count equals the video duration in seconds multiplied by the frame rate. For a 2-hour feature film at 24 fps, the total frame count is 7200 x 24 = 172,800 frames. Frame numbers are used internally by encoders, decoders, and NLEs to seek to a specific point in the media.