Kit Room

Timecode calculator

Enter two timecodes and a frame rate. The calculator adds or subtracts them, counts the frames and shows how long the result really runs, which at 23.976 and 29.97 is not what the label says.

Result
00:47:25:12
In frames
68,292 frames
Real running time
0 h 47 min 28.346 s
Timecode A in frames
86,400

Timecode looks like a clock and behaves like a counter. Every frame gets a label of hours, minutes, seconds and frames (HH:MM:SS:FF), and the label only matches a real clock when the frame rate is a whole number. At 23.976 and 29.97 the two drift apart. Most timecode confusion starts there.

How the timecode calculator works

The calculator turns both timecodes into frame counts, does the sum, and turns the answer back into timecode.

  • Frames = (hours × 3,600 + minutes × 60 + seconds) × timebase + frames. The timebase is the whole number the labels count to: 24 for 23.976, 30 for 29.97, 60 for 59.94.
  • At drop-frame rates it then takes away two frame numbers for every minute except each tenth minute, or four at 59.94.
  • Real running time = frames ÷ true frame rate. The true rate of 23.976 is 24,000 ÷ 1,001, and 29.97 is 30,000 ÷ 1,001.

Separate the fields with colons, semicolons or full stops. The tool rejects labels that cannot exist: minutes or seconds above 59, a frame number at or above the timebase, and the drop-frame labels that are skipped. Type 00:01:00;00 at 29.97 drop-frame and it tells you Timecode A is not valid at this frame rate, because that label is never used.

Worked example: an hour minus twelve minutes at 23.976

The tool opens at 23.976 (non-drop), with Timecode A at 01:00:00:00, "subtract B (a duration)" chosen and Timecode B at 00:12:34:12. It reads:

  • Result: 00:47:25:12
  • In frames: 68,292 frames
  • Real running time: 0 h 47 min 28.346 s
  • Timecode A in frames: 86,400

The frame counts are plain multiplication. 01:00:00:00 is 3,600 seconds × 24 = 86,400 frames. 00:12:34:12 is 754 seconds × 24 + 12 = 18,108 frames. The difference is 68,292 frames, which the labels call 47 minutes, 25 seconds and 12 frames.

The running time is where 23.976 shows itself. 68,292 frames at 24,000 ÷ 1,001 frames a second take exactly 2,848.3455 seconds, which the tool rounds to 0 h 47 min 28.346 s. The label says 47:25, the clock says 47:28. Footage at 23.976 plays 0.1 per cent slower than its labels count, so when a delivery form asks for running time, give the clock figure.

Now set "Then" to "add B (an offset)". The result is 01:12:34:12, or 104,508 frames: the sum you need when a clip sits 12 minutes, 34 seconds and 12 frames into a cut that starts at one hour, as many edit timelines do. The clearance log in our archive and rights guide records exactly these in and out points for every clip.

Drop-frame vs non-drop-frame timecode

29.97 fps is really 30,000 frames every 1,001 seconds. Non-drop timecode still labels 30 frames per second, so the labels fall behind the clock. One hour of 29.97 non-drop timecode, 01:00:00:00, is 108,000 frames and lasts 3,603.6 real seconds: 3.6 seconds long.

Drop-frame timecode fixes the drift by skipping labels. At the start of every minute it skips frame numbers 00 and 01, except in every tenth minute (00, 10, 20, 30, 40 and 50). That comes to 108 labels an hour. One hour of drop-frame timecode, 01:00:00;00, is therefore 107,892 frames and lasts 3,599.996 seconds, within a few thousandths of a second of the wall clock. No pictures are thrown away. Only numbers are skipped.

By convention a semicolon before the frames marks drop-frame, and the tool writes its drop-frame results that way. At 59.94 the same scheme skips four labels, 00 to 03. And 23.976 has no drop-frame version at all: it counts 24 labels a second and runs 3.6 seconds long per hour, the same 0.1 per cent as 29.97 non-drop.

Frame rate in the tool Labels per second Skipped labels Real length of one hour of timecode
23.976 (non-drop) 24 none 3,603.6 s
24 24 none 3,600 s
25 25 none 3,600 s
29.97 non-drop 30 none 3,603.6 s
29.97 drop-frame 30 2 a minute, not in tenth minutes 3,599.996 s
30 30 none 3,600 s
50 50 none 3,600 s
59.94 drop-frame 60 4 a minute, not in tenth minutes 3,599.996 s
60 60 none 3,600 s

Timecode generators, and what this page does instead

A timecode generator is a different thing: a small box, or a function inside a camera or sound recorder, that writes running timecode into the files as you shoot. When two cameras and a recorder are jammed to the same source, every file shares one clock and the edit lines up on its own. The interview guide covers jamming and slating on a two-camera day. This page does the arithmetic afterwards: durations, offsets and frame counts.

What the calculator cannot tell you

It does not convert between frame rates. Playing 25 fps material at 23.976 makes it about 4 per cent longer and, unless the sound is corrected, lowers its pitch. That is a separate job for your editing software.

It does not roll over at 24 hours the way a camera clock does; a sum past midnight keeps counting hours, and a negative result gets a minus sign. It knows nothing of reel names, source against record timecode, or audio offsets smaller than a frame. The running time also assumes the material plays at its true rate, which is worth checking when a file has been retimed.

Questions

What is the difference between drop-frame and non-drop-frame timecode?

Both count frames at 29.97 or 59.94 fps. Non-drop numbers every frame in sequence and falls 3.6 seconds behind the clock each hour. Drop-frame skips some numbers, two a minute at 29.97 except in every tenth minute, so an hour of timecode matches an hour on the clock.

Does drop-frame timecode drop frames?

No. Every picture is kept. Only the labels 00 and 01 are skipped at the start of most minutes, four labels at 59.94.

Is 23.976 drop-frame?

No. 23.976 timecode is non-drop, so one hour of it, 86,400 frames, lasts 3,603.6 seconds on the clock.

How many frames are in one hour of 29.97 drop-frame timecode?

107,892. Non-drop timecode at the same rate has 108,000 frames in an hour, which is why it runs 3.6 seconds long.