This timecode calculator adds and subtracts timecodes, converts between timecode, frame counts and real time, and measures the duration from an in point to an out point, at 23.976, 24, 25, 29.97, 30, 50, 59.94 and 60 frames per second, with drop-frame and non-drop-frame counting where those exist. Every result is shown three ways (timecode, frames, seconds) and in a table of the same result at every other frame rate, so a 25 fps duration can be read off in 29.97 drop-frame without a second calculation. The arithmetic is done in frames, which is the only way to get it right: a timecode is a frame number written as hours, minutes, seconds and frames, and adding the digits as if they were a clock time breaks at the frame column and, in drop-frame, at most minute boundaries.
How to use the calculator
- Pick the frame rate of the footage or the sequence. At 29.97 and 59.94 fps a Drop-frame box appears, ticked by default: leave it ticked if your timecodes carry a semicolon before the frames (
01:00:00;00), untick it for colons (01:00:00:00). The other rates have no drop-frame form and the box is disabled for them.
- Type the timecodes as hours, minutes, seconds and frames:
01:23:45:12. Shorter forms are read from the right, so 45:12 is 45 seconds and 12 frames and 3:45:12 is 3 minutes; an eight-digit number such as 01234512 is read as a timecode too, and a value ending in f (250f) is a plain frame count, handy for adding a handle of 12 frames. Frames at or above the counting rate (:25 at 25 fps) are rejected, and so are drop-frame labels that do not exist, such as 00:01:00;00; the message names the nearest valid one.
- Read the result. The timecode, the frame count and the real time it represents, then a table of the same result at every rate, both keeping the frame count and keeping the real time (the section on converting between rates explains which one you want). Copy link to this result gives a link to this page that reopens with the same inputs.
What a timecode is
A timecode labels every frame of a recording with HH:MM:SS:FF: hours, minutes, seconds, and the frame within that second, counted from zero. The frames column counts at a whole number per second, which the standard calls the timecode's frame rate: 24, 25, 30, 50 or 60. Footage at 23.976 fps carries 24-count timecode and footage at 29.97 fps carries 30-count timecode, because those rates are 24 and 30 slowed by a factor of 1.001 (24,000 ÷ 1,001 and 30,000 ÷ 1,001) for compatibility with analogue colour television. The slowing is why a 30-count timecode second at 29.97 fps lasts slightly longer than a real second, and why drop-frame exists.
| Frame rate | Counts per timecode second | Drop-frame form | Frames per timecode hour | Real time of one timecode hour | Where it is used |
| 23.976 (24,000 ÷ 1,001) | 24 | none | 86,400 | 1:00:03.600 | Film-style digital cameras, most streaming drama; "23.98" is the same rate |
| 24 | 24 | none | 86,400 | 1:00:00.000 | Cinema, film scans, DCP |
| 25 | 25 | none | 90,000 | 1:00:00.000 | Europe, Australia and most of Asia and Africa (PAL and 50 Hz regions); 50i counts 25 |
| 29.97 (30,000 ÷ 1,001) | 30 | yes | 108,000 non-drop / 107,892 drop | 1:00:03.600 non-drop / 0:59:59.996 drop | Broadcast in the US, Canada, Japan and other 60 Hz regions; 59.94i counts 29.97 |
| 30 | 30 | none | 108,000 | 1:00:00.000 | Phones, screen recorders, web video, some cameras |
| 50 | 50 | none | 180,000 | 1:00:00.000 | Sport and high-motion footage in 50 Hz regions |
| 59.94 (60,000 ÷ 1,001) | 60 | yes | 216,000 non-drop / 215,784 drop | 1:00:03.600 non-drop / 0:59:59.996 drop | Sport and broadcast in 60 Hz regions |
| 60 | 60 | none | 216,000 | 1:00:00.000 | Phones, game capture, screen recorders, web video |
Drop-frame and non-drop-frame
At 29.97 fps, 30 frames of timecode take 30 × 1,001 ÷ 30,000 = 1.001 real seconds. Non-drop-frame timecode counts every frame anyway, so after an hour of footage (108,000 frames) the timecode reads 01:00:00:00 while the clock reads 1:00:03.6: the count runs 3.6 seconds, 108 frames, behind real time for every hour. For a programme that must run to a scheduled length that is a problem, so drop-frame timecode skips the frame numbers 00 and 01 at the start of every minute except minutes 00, 10, 20, 30, 40 and 50. That is 2 numbers in each of 54 minutes an hour, 108 numbers, which is the 108 frames the count was behind; an hour of drop-frame timecode holds 107,892 frames and runs 1,001 × 107,892 ÷ 30,000 = 3,599.996 real seconds. The residual error is about 2.6 frames, 86 milliseconds, over a full day.
Three things follow. No picture frames are dropped; only labels are skipped, and the footage is identical in both forms. Labels such as 00:01:00;00 and 00:01:00;01 never occur, so the first frame of minute 1 is 00:01:00;02 while the first frame of minute 10 is 00:10:00;00; the calculator rejects a skipped label and names the valid one. And the two forms are written differently on purpose: a semicolon (or sometimes a period) before the frames, 01:00:00;00, means drop-frame, a colon means non-drop. At 59.94 fps the same scheme skips four labels, 00 to 03, in the same minutes, so 59.94 drop-frame holds 215,784 frames an hour. 23.976 fps has no drop-frame form at all: its 24-count timecode also runs 3.6 seconds an hour behind the clock, and the industry accepts that because film-rate material is not delivered to a broadcast clock in that form.
The usual way this goes wrong is mixing the two. The same frame count reads 01:00:00:00 in non-drop and 01:00:03;18 in drop-frame (108,000 frames is 3,603.6 seconds, and drop-frame tracks the clock), so a sequence set to the wrong form is "3 seconds and 18 frames out" at the hour mark, 1 second 24 frames at 30 minutes, growing linearly. If you see an offset of that size, check the semicolons before you check the edit.
Adding and subtracting timecodes
Convert both timecodes to frame counts, add or subtract the counts, convert back. At 25 fps, 01:23:45:12 is (1 × 3,600 + 23 × 60 + 45) × 25 + 12 = 125,637 frames and 00:10:30:20 is 15,770; their sum, 141,407 frames, is 01:34:16:07 and their difference, 109,867, is 01:13:14:17. The carry from the frames column is the frame rate, not 60 or 100, which is why a clock-style addition goes wrong: 00:00:59:20 + 00:00:00:10 is 00:01:00:05 at 25 fps, 00:01:00:00 at 30 and 00:00:59:30 at 60.
In drop-frame the skipped labels enter the arithmetic as well. 00:58:30;00 + 00:02:00;02 at 29.97 drop-frame is 01:00:30;00, not 01:00:30;02, because the sum crosses minute 59, where two labels are skipped, and minute 00 of the next hour, where none are (00:02:00;02 itself is 3,598 frames, two minutes of timecode less the four labels its own minutes skip). Working in frames handles that automatically; adding the digits does not. A subtraction that goes below zero is shown with a minus sign rather than wrapped around midnight, and a result past 24 hours keeps counting (25:00:00:00) rather than wrapping, since the sum of two durations is a duration.
Converting between frame rates
A timecode at one rate can mean two different things at another, and the table under every result shows both. Keeping the frame count is what happens when the frames are played at a new rate: 90,000 frames shot at 25 fps and played at 24 fps still read 01:02:30:00 in frames-at-24 terms and now take 3,750 seconds, 4% longer, which is the classic PAL-to-film speed change. Keeping the real time is what happens when the footage is conformed, converted or re-timed so it plays for the same length: an hour of 25 fps material, 90,000 frames, becomes 107,892 frames at 29.97 and reads 01:00:00;00 in drop-frame or 00:59:56:12 in non-drop, and it becomes 86,314 frames at 23.976. Subtitles, chapter markers and anything tied to the clock follow the real time; edit decisions tied to the picture follow the frame count. When the real time does not land on a whole frame the calculator rounds to the nearest one and says so.
Frames, timecode and seconds
Subtitle files, YouTube timestamp links, chapter lists and HTML media players work in seconds and milliseconds, not frames, so a timecode often has to be turned into real time. One frame is one second divided by the real rate, not the counting rate: 40 ms at 25 fps, 33.333 ms at 30, 33.367 ms at 29.97, 41.667 ms at 24, 41.708 ms at 23.976, 20 ms at 50, 16.683 ms at 59.94 and 16.667 ms at 60. A cue that should start on frame 01:02:03:04 at 25 fps therefore starts at 3,723.16 seconds, which the convert box gives as 1:02:03.160; the subtitle converter takes that figure as a shift, and the timestamp link generator takes the whole seconds for a link that opens the video at that point. The other way, a frame count from a frame extractor or a render log becomes a timecode by picking the rate and typing the number into the convert box.
| Frame rate | One frame | 10 frames | 1 second is | 1,000 frames is |
| 23.976 | 41.708 ms | 0.417 s | 23.976 frames | 41.708 s (00:00:41:16) |
| 24 | 41.667 ms | 0.417 s | 24 frames | 41.667 s (00:00:41:16) |
| 25 | 40 ms | 0.4 s | 25 frames | 40 s (00:00:40:00) |
| 29.97 | 33.367 ms | 0.334 s | 29.97 frames | 33.367 s (00:00:33:10) |
| 30 | 33.333 ms | 0.333 s | 30 frames | 33.333 s (00:00:33:10) |
| 50 | 20 ms | 0.2 s | 50 frames | 20 s (00:00:20:00) |
| 59.94 | 16.683 ms | 0.167 s | 59.94 frames | 16.683 s (00:00:16:40) |
| 60 | 16.667 ms | 0.167 s | 60 frames | 16.667 s (00:00:16:40) |
In points, out points and durations
The duration of a clip is out minus in, plus one frame if the out point is the last frame that plays, which is how most editing software marks it: in 01:00:10:00, out 01:00:20:12 at 24 fps is 252 frames exclusive and 253 frames, 00:00:10:13, inclusive. Edit decision lists and some tools record the out point as the first frame after the clip instead, so the duration box has a checkbox for the out frame; use whichever matches the numbers on your screen, and when you add handles, add them in frames with the f suffix in the main calculator (+ 12f) rather than as a timecode.
What the calculator does not do
It does not read timecode from a video file, a log or an edit list; it works on the numbers you type. It does not handle feet and frames for film, audio sample counts, or frame rates it does not list (48, 96, 100, 120 fps and others), nor timecode user bits, time-of-day offsets or the fields of interlaced video (count those at the frame rate, 25 for 50i and 29.97 for 59.94i). It does not guess the frame rate of your footage: that comes from the camera or the sequence settings, and the drop-frame box from the separator your editor shows. And it does not change any footage; a conversion in the table is arithmetic about the frames, and the speed change or conform itself happens in your editor.
Frequently asked questions
What is drop-frame timecode?
A way of numbering frames at 29.97 fps so that the timecode keeps pace with the clock. 29.97 fps is 30 divided by 1.001, so counting 30 frames per timecode second makes an hour of timecode last 3,603.6 real seconds, 3.6 seconds too long. Drop-frame skips the frame numbers 00 and 01 at the start of every minute except minutes 00, 10, 20, 30, 40 and 50: 2 numbers in 54 minutes an hour, 108 numbers in all, which is the 108 extra frames the count was running behind. No picture frames are dropped, only numbers. Drop-frame timecode is written with a semicolon before the frames, 01:00:00;00.
Why does the timecode 00:01:00;00 not exist?
Because drop-frame skips the labels 00 and 01 at the start of every minute that is not a multiple of ten. The first frame of minute 1 is 00:01:00;02, the first frame of minute 10 is 00:10:00;00, and 00:01:00;00 and 00:01:00;01 are never assigned. The calculator reports a label like that as invalid and names the nearest one that exists. At 59.94 fps drop-frame skips four labels, 00 to 03, in the same minutes.
How many frames are there in an hour of timecode?
At 24 fps 86,400; at 25 fps 90,000; at 30 fps and at 29.97 non-drop 108,000; at 29.97 drop-frame 107,892 (108,000 minus the 108 skipped labels); at 50 fps 180,000; at 60 fps and 59.94 non-drop 216,000; at 59.94 drop-frame 215,784. 23.976 fps counts 24 per second, so its timecode hour also holds 86,400 frames, which take 3,603.6 real seconds to play.
Is 29.97 drop-frame the same as 29.97 non-drop-frame?
The frames and the frame rate are identical; only the numbering differs. Non-drop counts every frame in order and its timecode runs 3.6 seconds behind the clock for every hour of footage, so 01:00:00:00 non-drop lands at 1:00:03.6 of real time. Drop-frame skips 108 numbers an hour and stays within a few frames of the clock for a whole day. Mixing them is the usual cause of a sequence that is 3 seconds and 18 frames off: the same frame count labelled both ways differs by exactly that at the one-hour mark.
How do I convert a 25 fps timecode to 29.97 fps?
Decide what to keep. If the footage is conformed so that it plays for the same real time, keep the seconds: 01:00:00:00 at 25 fps is 90,000 frames and 3,600 seconds, which is 01:00:00;00 in 29.97 drop-frame and 00:59:56:12 in 29.97 non-drop. If the frames themselves are kept and played at the new rate, keep the frame count: 90,000 frames at 29.97 is 00:50:00:00 non-drop, 3,003 real seconds, so the footage plays about 17% shorter. The convert box shows both for every rate.
How long is one frame in milliseconds?
One second divided by the real frame rate: 41.708 ms at 23.976 fps, 41.667 ms at 24, 40 ms at 25, 33.367 ms at 29.97, 33.333 ms at 30, 20 ms at 50, 16.683 ms at 59.94 and 16.667 ms at 60. The convert box gives any timecode or frame count as seconds to the millisecond, which is the figure a subtitle file or a YouTube timestamp link needs.
Does the duration between an in point and an out point include the out frame?
In most editing software the out point is the last frame that plays, so the duration is out minus in plus one frame: in 01:00:10:00, out 01:00:20:12 at 24 fps is 253 frames, 00:00:10:13. Some tools and edit lists treat the out point as the first frame that does not play, which gives 252 frames. The duration box has a checkbox for the out frame so you can match whichever convention your software uses.