Production Management calculator
SMPTE Timecode Calculator
Timecode arithmetic means converting to a frame count, doing integer math, and converting back, with drop-frame rules applied at 29.97. This calculator adds and subtracts timecode at every common rate and shows the underlying frame count, handling the drop-frame minute boundaries exactly.
Formulas
Timecode to frames (non-drop)
frames = (3600h + 60m + s) × fps + f- fps:
- nominal frame rate (24, 25, 30)
Drop-frame correction (29.97 DF)
subtract 2 × (totalMinutes - floor(totalMinutes / 10))- totalMinutes:
- whole minutes of the timecode value
How it works
Drop-frame exists because NTSC color video runs at 30000/1001 ≈ 29.97 fps, not 30. Counting labels at exactly 30 per second drifts 3.6 seconds behind the wall clock every hour. Drop-frame timecode fixes the label, not the video: it skips frame numbers 00 and 01 at the start of every minute except minutes divisible by 10, dropping 108 labels per hour so the count tracks real time within milliseconds.
No frames of picture are ever dropped; only numbers are skipped. That is why 00:00:59;29 is followed by 00:01:00;02, and why the semicolon separator conventionally marks drop-frame while a colon marks non-drop.
Live production cares because the show clock is a wall clock. An hour of 29.97 NDF timecode is one hour and 3.6 seconds of real time, which is a missed broadcast window or an out-of-sync fireworks cue. Use DF when timecode must equal clock time at 29.97; use NDF (or 24/25/30 flat rates) when frame counting matters more than the clock.
Worked example: Add a 00:12:34;15 segment to a 01:00:00;00 show start at 29.97 DF
- 1.Convert both to frame counts with the DF correction: 01:00:00;00 = 107,892 frames, 00:12:34;15 = 22,597 frames.
- 2.Add: 130,489 frames.
- 3.Convert back inserting dropped numbers: 01:12:34;15.
01:12:34;15, with all drop-frame boundaries handled in the conversion.
Timecode hour vs real time
| Rate | One TC hour in real time | Clock-accurate? |
|---|---|---|
| 24 / true 24 | 1:00:00.0 | Yes |
| 23.976 (24 labels) | 1:00:03.6 | No (+3.6 s) |
| 25 | 1:00:00.0 | Yes |
| 29.97 NDF | 1:00:03.6 | No (+3.6 s) |
| 29.97 DF | 1:00:00.0 (±ms) | Yes |
| 30 (true) | 1:00:00.0 | Yes |
Field notes
- The separator is the tell: 01:00:00;00 (semicolon) is drop-frame, 01:00:00:00 is non-drop. Devices disagreeing about DF/NDF is the classic mid-show drift bug.
- Jam-sync devices from one master at the top of the day; free-running clocks drift apart even at the "same" rate.
Frequently asked questions
What is drop frame timecode?
A labeling scheme for 29.97 fps video that skips frame numbers 00 and 01 each minute (except every tenth minute) so timecode matches the wall clock. No video frames are discarded.
Why is 00:01:00;00 not a valid drop-frame timecode?
Because the 00 and 01 frame labels are skipped at every minute not divisible by ten. After 00:00:59;29 the next label is 00:01:00;02.
How far does non-drop timecode drift from the clock?
At 29.97 fps, 1.001 seconds of real time pass per labeled second: 3.6 seconds per hour, 86.4 seconds per day. Flat rates (24, 25, 30, and true 23.976 counting) have their own relationships; 25 fps matches the clock exactly.