Frames to Timecode Converter
Convert a frame count into editorial timecode and real time. Enter frames and a frame rate — 23.976, 24, 25, 29.97 drop-frame, 30, or 60 fps — to get HH:MM:SS:FF (drop-frame shown with the standard semicolon), exact seconds, and the duration spelled out.
Example: with Frame count 1800 · Frame rate 29.97 fps drop-frame (NTSC) → Timecode: 00:01:00;02 (drop-frame).
- Real time (seconds)60.06 s
- Duration1 min 0.06 s
- One frame lasts33.37 ms
Computed by the calculator below using its default values. Change any input to see your own numbers.
Drop-frame timecode skips frame numbers 00 and 01 at the start of every minute except multiples of 10 (SMPTE ST 12) — so frame 1,800 at 29.97 fps reads 00:01:00;02, not 00:01:00;00.
Why 29.97 needs drop-frame counting
NTSC color video runs at 30,000/1,001 ≈ 29.97 fps, a 1950s compromise that kept color broadcasts compatible with black-and-white sets. Timecode, though, counts whole frames as if the rate were exactly 30 — so plain counting drifts 3.6 seconds ahead of the wall clock every hour. Drop-frame timecode fixes the books by skipping two frame *numbers* (;00 and ;01) at the start of every minute, except minutes divisible by ten. No pictures are dropped; only labels are.
The bookkeeping works out almost perfectly: one hour of drop-frame timecode lands within about 4 milliseconds of true clock time. That is why broadcast deliverables require DF — and why the semicolon in 00:01:00;02 matters. 23.976 material takes the other path: it counts at 24 and simply accepts running 0.1% slower than the clock.
How it’s calculated
Non-drop rates divide the frame count directly: FF = frames mod rate, then seconds, minutes, hours. 23.976 (24,000/1,001) counts timecode at 24, with real seconds = frames × 1,001 ÷ 24,000. 29.97 drop-frame (30,000/1,001) skips frame numbers 00 and 01 each minute except every 10th (SMPTE ST 12): the converter adds 18 numbers per full 10-minute block plus 2 per additional minute, then reads the result at 30 fps. Real seconds = frames × 1,001 ÷ 30,000.
Assumes a constant frame rate counted from frame 0 at 00:00:00:00 — variable-frame-rate phone recordings and 59.94 DF material follow different rules.
Landmark frame counts
| Frames | Rate | Timecode |
|---|---|---|
| 1,798 | 29.97 DF | 00:00:59;28 |
| 1,800 | 29.97 DF | 00:01:00;02 — numbers ;00 and ;01 skipped |
| 17,982 | 29.97 DF | 00:10:00;00 — 10th minutes keep all numbers |
| 107,892 | 29.97 DF | 01:00:00;00 |
| 1,440 | 24 fps | 00:01:00:00 |
| 90,000 | 25 fps | 01:00:00:00 |
Computed with the SMPTE ST 12 drop-frame numbering rule; DF timecode at one hour sits within 4 ms of true clock time.
Common mistakes
- Dividing frames by an even 30 for NTSC — the true rate is 29.97, and ignoring it drifts 3.6 seconds every hour.
- Writing drop-frame with a colon: the semicolon (00:01:00;02) is the standard flag that separates DF from NDF.
- Believing drop-frame deletes frames — it skips numbers in the count; every picture is still there.
- Treating 23.976 and 24 as identical: their timecode matches frame for frame, but 23.976 runs 0.1% longer in real time, about 3.6 s per timecode hour.
Frequently asked questions
How do I convert frames to seconds?
Seconds = frames ÷ frame rate, using the exact rate: 1,800 frames at 29.97 (30,000/1,001) fps is 1,800 × 1,001 ÷ 30,000 = 60.06 seconds. At an even 30 fps it would be exactly 60.
What is the drop-frame rule?
At 29.97 fps, timecode skips frame numbers 00 and 01 at the start of every minute except minutes divisible by 10 — 18 numbers dropped per 10-minute block. That keeps timecode aligned with the clock to within milliseconds.
When should I use drop-frame vs non-drop?
Use drop-frame when timecode must match wall-clock time — broadcast deliverables and long-form program timing. Non-drop is fine for short pieces, film (24), and PAL (25), where no discrepancy exists.
Why does 29.97 fps exist at all?
When color was added to NTSC in 1953, engineers shifted the frame rate by 0.1% (to 30,000/1,001) so the color subcarrier would not interfere with the audio carrier on existing black-and-white sets. Every drop-frame headache since descends from that fix.