Skip to main content

Drop-frame timecode explained: what 29.97 drops, and when to use it

The PrismPoster teamNovember 7, 202612 min read

Drop-frame timecode is a counting rule, not a picture edit: at 29.97 fps the counter skips two frame numbers at the start of every minute except minutes 00, 10, 20, 30, 40 and 50, so the label on screen stays within a frame of the wall clock. No frame of video is removed. Non-drop timecode at the same rate counts every frame honestly and falls 3.6 seconds behind real time every hour. Only 29.97 and 59.94 have a drop-frame form; 23.976, 24, 25, 30, 50 and 60 do not, and a tool that offers you drop-frame at 24 is wrong. The rest of this page is the arithmetic, the notation, and the decision — which mode to use for which delivery — with a timecode calculator that does the conversion in your browser.

What drop-frame timecode actually drops

Timecode gives every frame a four-part label — hours, minutes, seconds, frames — and the frames field counts up to one less than the timebase before the seconds tick over. At a timebase of 30 the frames field runs 00 to 29.

The problem is that 29.97 fps is not 30. It is exactly 30000/1001 frames per second, which is 29.970029… A counter with a timebase of 30 hands out 108,000 labels per hour, but the picture only delivers 107,892.1 frames in a real hour. Count every frame and the label reading 01:00:00:00 arrives 3.6 seconds after the hour has actually passed. Over a two-hour programme the counter is 7.2 seconds behind the clock, and a broadcast slot is timed by the clock.

Drop-frame fixes the label, not the picture. At the top of each minute the counter jumps from ;59;29 to ;00;02, skipping the labels ;00;00 and ;00;01. That removes 2 labels a minute. But 2 × 60 = 120 labels an hour is too many — the real shortfall is 107.9 — so the rule exempts every tenth minute: minutes 00, 10, 20, 30, 40 and 50 start at ;00;00 as normal. That leaves 2 × 54 = 108 skipped labels an hour, and 108,000 − 108 = 107,892 labels for 107,892.1 real frames. The counter now finishes an hour 3.6 milliseconds early instead of 3.6 seconds late.

Every frame that was shot is still there, still numbered, still editable. The only thing that "drops" is a pair of numbers that would otherwise have been printed on the counter.

Why 29.97 exists at all

The rate is an inheritance. Black-and-white NTSC television ran at exactly 30 frames (60 fields) a second. When colour was added to the standard in 1953, the colour information had to share the signal with the existing sound carrier, and at exactly 30 fps the two interfered visibly. Lowering the rate by 0.1% — a factor of 1000/1001 — moved the interference out of the way, and 29.97 was born. Film transferred to that system ran at 24 × 1000/1001 = 23.976, and the 60-field-a-second interlaced signal became 59.94, which is where today's 59.94 progressive rate comes from.

None of this applies to PAL and SECAM countries, which run at 25 and 50 exactly, or to the 24 fps of cinema. That is why the drop-frame question only ever comes up on North American, Japanese and other former-NTSC delivery, and on cameras that still default to 29.97 or 59.94 because that is what those broadcasters take.

Drift per hour at every frame rate

The table is the whole argument in numbers. "Labels per hour" is what a counter with that timebase prints in an hour of non-drop counting; "an hour of counter lasts" is how long that many frames take to play at the exact rate. Every figure is computed from the exact rational rates — 24000/1001, 30000/1001 and 60000/1001, never the rounded decimals — which is the same arithmetic the timecode calculator runs. The drop-frame rule itself is defined by SMPTE ST 12-1, the time-and-control-code standard.

Frame rate Exact rate Timebase (frames field counts to) Drop-frame form? Labels skipped per minute (except minutes ending in 0) Non-drop: an hour of counter lasts Drop-frame: residual per hour
23.976 24000/1001 24 (00–23) No None — no drop-frame form exists 3603.6 s (3.6 s slow) Not applicable
24 24/1 24 (00–23) No None 3600.0 s (exact) Not applicable
25 25/1 25 (00–24) No None 3600.0 s (exact) Not applicable
29.97 30000/1001 30 (00–29) Yes — written with a semicolon 2 (labels ;00 and ;01) 3603.6 s (3.6 s slow) 3599.9964 s — 3.6 ms fast
30 30/1 30 (00–29) No None 3600.0 s (exact) Not applicable
50 50/1 50 (00–49) No None 3600.0 s (exact) Not applicable
59.94 60000/1001 60 (00–59) Yes — written with a semicolon 4 (labels ;00 to ;03) 3603.6 s (3.6 s slow) 3599.9964 s — 3.6 ms fast
60 60/1 60 (00–59) No None 3600.0 s (exact) Not applicable

Two things fall out of the table. First, 23.976 drifts exactly as much as 29.97 — 3.6 seconds an hour — and there is nothing to be done about it in the timecode itself, because 24 labels a second cannot be corrected by dropping whole numbers in the way 30 can. Film-rate projects live with the drift and time their deliveries by the counter, which is why film-rate material bound for a 29.97 broadcast is conformed to 29.97 with pulldown before delivery. Second, drop-frame over-corrects very slightly. It runs 3.6 milliseconds fast per hour, about 86 milliseconds across a full day of continuous counting, which is why the rule was accepted: nobody delivers a 24-hour programme, and a tenth of a frame per hour is invisible.

How to read the notation

The separator before the frames field is the convention that tells you which mode you are in:

  • 01:00:00:00 — colons throughout — is non-drop. Every label exists, and the counter is 3.6 seconds behind the clock by the time it reads this.
  • 01:00:00;00 — a semicolon before the frames — is drop-frame. The same digits name a different frame (108 frames earlier in the footage) and the reading is within a frame of a real hour.
  • 00:01:00;00 and 00:01:00;01 do not exist at 29.97 drop-frame. Minute 1 begins at 00:01:00;02. At 59.94 drop-frame, minute 1 begins at 00:01:00;04.
  • 00:10:00;00 does exist. Minutes ending in 0 are not dropped, so every tenth minute starts at frame zero.

The semicolon is a display convention, not a data format, and editing applications treat it loosely on input. Apple's Final Cut Pro guide notes that when you type a timecode you can use a period, comma, colon or semicolon as the separator and the application adds the real separators for you (checked September 2026, Navigate using timecode). What the separator cannot do is change the mode of the sequence: a semicolon typed into a non-drop sequence is just a colon. The mode comes from the sequence or source settings, and Adobe's After Effects documentation is explicit that the application reads it from the media — "source timecode is detected and used instead" — and that a single composition can contain both drop-frame and non-drop-frame timecode (checked September 2026, Timecode and time display units). That is the practical trap: a mixed timeline is legal, and a cut list that quotes numbers from both modes without saying which is the classic way a broadcast delivery comes back rejected by 108 frames.

Neither Adobe's Premiere timecode pages nor Apple's Final Cut Pro guide states the two-per-minute rule itself on the page (checked September 2026); the rule lives in the SMPTE standard and in every calculator that implements it correctly.

Drop-frame or non-drop: which to use

There is no taste involved. The mode follows the delivery and the source, in that order.

Situation Use Why
Broadcast or cable delivery at 29.97 or 59.94 (North America, Japan and other former-NTSC markets) Drop-frame The programme is slotted by the clock, and the delivery specification quotes durations as timecode. Non-drop would hand the network a two-hour master that runs 7.2 seconds long against its own counter.
Anything at 23.976, 24, 25, 30, 50 or 60 Non-drop — the only form that exists There are no drop-frame labels to skip at these rates. An application that offers the option at 24 or 25 is displaying a setting it will not honour.
YouTube, TikTok, Instagram, any web platform Match the source; the platform does not read timecode YouTube's upload guidance says content "should be encoded and uploaded in the same frame rate it was recorded", lists 24, 25, 30, 48, 50 and 60 as common rates, and asks for interlaced 1080i60 to be deinterlaced to 1080p30 before upload — it says nothing about drop-frame at all (checked September 2026, recommended upload encoding settings). Timecode never leaves your editor.
Captions and subtitle files Neither — SRT and VTT use milliseconds A subtitle timestamp is 00:00:01,000, real time to the millisecond, with no frame rate inside it. Drift appears only if the file was authored against a different rate than the video; the SRT guide covers the retime.
Music video, sync to a click or a lyric sheet Whatever the source camera reports, kept for the whole job Sync work is about frames from the start of the take, and both modes count those identically. Changing mode halfway through a job is what breaks sync, not the choice itself.
A cut made in PrismPoster's editor Non-drop, and you never see the question The editor's timeline runs on a 24 fps grid and every export preset renders at 24 fps, so there is no fractional rate and no drop-frame form to choose.

The rule that covers all of them: if the footage or the delivery spec says 29.97 or 59.94 and the number on the counter has to equal real elapsed time, you are in drop-frame. Otherwise you are not, and at most rates you cannot be.

Converting between drop-frame, non-drop and real time

The conversion is a frame count. Turn the timecode into a total number of frames, and the frame count into anything else.

Non-drop to frames is plain multiplication. 01:00:00:00 at a timebase of 30 is (1 × 3600) × 30 = 108,000 frames.

Drop-frame to frames subtracts the skipped labels. Count the whole minutes elapsed, subtract the minutes ending in 0, and remove two labels for each one that remains:

  • 01:00:00;00 at 29.97: 60 minutes elapsed, 6 of them exempt, 54 × 2 = 108 labels skipped. 108,000 − 108 = 107,892 frames.
  • 00:10:00;00 at 29.97: 10 minutes elapsed, minute 0 exempt (minute 10 is the one just starting, and its labels are not skipped), 9 × 2 = 18 skipped. 18,000 − 18 = 17,982 frames.
  • 00:01:00;02 at 29.97: 1 minute elapsed, 2 skipped. 1,800 + 2 − 2 = 1,800 frames — the first frame of minute 1, exactly where non-drop 00:01:00:00 points.

Frames to real time is the frame count divided by the exact rate. 107,892 frames ÷ (30000/1001) = 107,892 × 1001 ÷ 30000 = 3599.9964 seconds. 108,000 frames at the same rate = 3603.6 seconds. Use the rounded 29.97 instead of 30000/1001 and the one-hour answer is off by a tenth of a frame — harmless on its own, but the same shortcut usually comes with treating the rate as 30, which is the 108-frame error.

The rule of thumb when you only need the size of the gap: non-drop and drop-frame readings of the same footage differ by 18 frames every 10 minutes, 108 an hour, 216 across a two-hour master. The timecode calculator adds, subtracts and converts at all eight rates, refuses a label that drop-frame skips (typing 00:03:00;01 returns an error rather than a wrong answer), and shows the real duration next to the counter so you can see the 3.6-second gap directly.

Three mistakes that cause most timecode bugs

  1. Treating 29.97 as 30. The most common one, and the reason most free calculators are wrong: they take the timebase as the rate. A tool that does this gives correct answers for short durations and a wrong answer for anything long enough to matter. Check any calculator with 01:00:00:00 at 29.97 non-drop: the real duration must read 3603.6 seconds, not 3600.
  2. Mixing modes inside one job. A source logged in drop-frame, a sequence set to non-drop, and an edit decision list that quotes both without a flag. Everything lines up for the first minute and is a frame out by 00:01:00, two frames out by 00:02:00, and 108 frames out by the hour. Pick the mode from the delivery, set every sequence to it, and re-check any list somebody else typed.
  3. Typing a label that does not exist. 00:01:00;00 at 29.97 drop-frame is not a frame. What an application does with a label that does not exist is up to that application, and a cut that depends on its choice is a cut that will land differently on somebody else's system.

More on planning and finishing a video: adding captions to video with AI.

Frequently Asked Questions

Does drop-frame timecode remove frames from my video?

No. It skips frame numbers — two per minute at 29.97, four per minute at 59.94, never in a minute that ends in 0 — so the counter tracks the clock. Every frame that was recorded is still present and still counted; the labels ;00 and ;01 at the top of most minutes are simply never printed. The footage is identical in both modes; only the label on a given frame differs.

Which frame rates have a drop-frame version?

Only 29.97 (30000/1001) and 59.94 (60000/1001). The mechanism needs a timebase of 30 or 60 whose real rate is 1000/1001 slower, so that skipping whole labels can close the gap. 23.976 drifts by the same 3.6 seconds an hour but has no drop-frame form, because there is no whole number of labels per minute that corrects a timebase of 24. Exact rates — 24, 25, 30, 50 and 60 — do not drift, so there is nothing to correct.

How far off is non-drop timecode after an hour?

3.6 seconds at 29.97, 59.94 or 23.976 — 108 frames at a timebase of 30, 216 at a timebase of 60, 86.4 frames at 24. The counter reads 01:00:00:00 when 3603.6 seconds of real time have passed. Drop-frame at 29.97 or 59.94 closes that to 3.6 milliseconds an hour, running slightly fast rather than slow.

Should I use drop-frame for YouTube?

The choice does not reach YouTube. The platform asks for the video at the frame rate it was recorded and never reads editor timecode, so upload whatever your sequence is set to. Drop-frame only matters when a delivery is measured against the clock by its timecode — broadcast and cable at 29.97 or 59.94. For most web work at 24, 25, 30 or 60 there is no drop-frame form to choose in the first place.

How do I know whether a timecode is drop-frame?

Look at the separator before the frames field: a semicolon (01:00:00;00) marks drop-frame, colons throughout (01:00:00:00) mark non-drop. If the source has been re-typed and the separator cannot be trusted, look for the skipped labels — a drop-frame log never contains 00:01:00;00 or 00:01:00;01 at 29.97, while a non-drop log does. When in doubt, the sequence settings of the editing application are the authority, not the text.

Do the conversion in the browser

The timecode calculator works at 23.976, 24, 25, 29.97, 30, 50, 59.94 and 60, counts drop-frame correctly at the two rates that have it, converts frames to seconds and between frame rates, and needs no account. Nothing is uploaded; the arithmetic runs in the page.

AI Video Studio & Timeline Editor

Turn ideas into high-definition AI video clips & timeline cuts

Generate text-to-video and image-to-video in 360p up to 4K, extend scenes per second, and assemble complete multi-track videos with auto-captions and zero desktop install.

Text-to-video & image-to-video from 360p to 4K (16:9 and 9:16)
Multi-track timeline editor with auto-captions and extend-video
150 starter credits, no card — use them within 72 hours
✓ Instant access✓ No credit card required✓ Machine-readable AI provenance✓ No subscription, one-off credit packs

Keep reading