Nominal fps vs real fps
SMPTE label counting uses nominal fps. Real elapsed time uses the exact playback rate. For example, 23.976 uses nominal 24, 29.97 uses nominal 30, and 59.94 uses nominal 60.
Convert between SMPTE timecode, frame counts, milliseconds, and real-time durations across multiple frame rates, including drop-frame and non-drop-frame formats.
| SMPTE (No Rate) | Formatted Time @ 24 Base column |
|---|---|
01:00:00:00 Line 1 | 01:00:00.000 3,600,000 ms |
00:10:00:00 Line 2 | 00:10:00.000 600,000 ms |
00:01:23:12 Line 3 | 00:01:23.500 83,500 ms |
The converter keeps label counting and real elapsed time separate. SMPTE labels are counted with the nominal integer frame rate, then converted to milliseconds with the exact playback-rate ratio.
SMPTE label counting uses nominal fps. Real elapsed time uses the exact playback rate. For example, 23.976 uses nominal 24, 29.97 uses nominal 30, and 59.94 uses nominal 60.
For NDF labels, total frames are counted sequentially:
Frames = ((HH × 3600 + MM × 60 + SS) × nominalFps) + FFFor valid DF labels, skipped label numbers are subtracted from the nominal count:
totalMinutes = HH × 60 + MM
droppedFrameCount = dropFrames × (totalMinutes - floor(totalMinutes / 10))
Frames = ((HH × 3600 + MM × 60 + SS) × nominalFps) + FF - droppedFrameCountOnce total frames are known, real elapsed time is calculated with the exact rate:
milliseconds = round((totalFrames × fpsDenominator × 1000) / fpsNumerator)Drop-frame skips frame numbers, not actual video frames. At DF rates, skipped labels at the start of most minutes are invalid. Every 10th minute is treated differently, so labels are not skipped there.
At 29.97 DF, 01:00:00;00 has 60 total minutes. The converter subtracts 108 dropped labels, so the total is 107,892 frames before converting to real milliseconds.
Short answers for the common places where frame rates, DF/NDF modes, and elapsed time can feel counterintuitive.
SMPTE timecode labels are counted using the nominal integer frame rate. For example, 23.976 uses 24 labels per second, 29.97 uses 30, and 59.94 uses 60. Real elapsed time is calculated afterward using the exact playback-rate ratio.
Nominal fps is the integer rate used for timecode labels. Real fps is the actual playback speed. For example, 29.97 uses nominal 30, while the exact playback rate is 30000/1001.
No. Drop-frame timecode does not remove footage. It skips certain frame numbers in the label sequence so the displayed timecode stays aligned with real elapsed time.
In drop-frame formats such as 29.97 DF and 59.94 DF, certain labels are skipped at the start of most minutes except every 10th minute. Those skipped labels are invalid inputs.
Drop-frame skips labels in most minutes, but not every 10th minute. That pattern keeps long-running timecode close to clock time without skipping actual media frames.
The semicolon usually indicates drop-frame while the colon usually indicates non-drop-frame. They are different counting systems and can produce different real-time values when interpreted directly.
Drift usually comes from using the wrong frame rate or wrong DF/NDF mode, such as using 30 instead of 29.97 or NDF instead of DF.
The converter first counts total frames from the source value, then converts those frames into real elapsed time using the exact frame-rate ratio, such as 30000/1001.
Use SMPTE (No Rate) when you have a label like 01:00:00:00 but do not want to commit to a source timing system yet. In that mode, each output column applies its own rate and DF/NDF rules to the same raw SMPTE label.