dev101.io

Timecode Calculator

Convert SMPTE timecode ↔ frames ↔ seconds, and add or subtract timecodes.

Runs online in your browserNo installNo accountFree

Loading tool…

How to use Timecode Calculator

  1. Pick your frame rate (drop-frame rates are marked DF and use a semicolon).
  2. In "Convert timecode", type a timecode to get its frame number and real-time value.
  3. In "Add / subtract", enter two timecodes and choose + or − to get the combined timecode.

Timecode Calculator

SMPTE timecode labels every frame of video as HH:MM:SS:FF — hours, minutes, seconds, and a frame number within the second. This calculator converts between timecode, absolute frame count, and real elapsed time, and adds or subtracts two timecodes — with correct drop-frame handling for NTSC rates.

Two clocks, and why they disagree

The subtle part of timecode is that two different rates are in play:

  • The label rate — the integer frame rate used to count frames in the string (24, 25, 30, 60). At 30, the frame field runs 0029.
  • The actual rate — how fast those frames play in real seconds. NTSC rates are the label rate × 1000/1001: 23.976, 29.97, 59.94.

So 00:00:00:30... doesn't exist (frames only go to 29 at 30 fps), but 30 frames is exactly 1.000 s at 30 fps and ≈1.001 s at 29.97. That's why this tool reports both a frame number and a real-time value — on NTSC rates they drift apart, and mixing them up is the classic timecode bug.

Drop-frame, explained

Because 29.97 isn't 30, a plain 30-count timecode gains about 3.6 seconds per hour on the wall clock. Broadcast can't tolerate that, so drop-frame timecode skips 2 frame numbers every minute — except on every 10th minute — to stay locked to real time. Nothing is removed from the video; only the labels 00:MM:00;00 and 00:MM:00;01 are skipped at the start of most minutes.

Known checkpoints this tool matches exactly:

  • 00:01:00;02 at 29.97 DF = frame 1800 (the ;00/;01 labels for that minute are skipped).
  • 00:10:00;00 = frame 17982 — and 10 minutes of real NTSC time is 10 × 60 × 29.97 = 17982 frames. They line up, which is the whole point of drop-frame.

Written form: non-drop uses colons (00:00:00:00); drop-frame uses a semicolon before the frames (00:00:00;00). The tool emits the correct separator per rate.

When to use which: drop-frame for NTSC/broadcast deliverables (29.97, 59.94); non-drop for film (24), PAL (25), and most web/streaming work, where "exactly 30" or "exactly 60" is fine.

Adding and subtracting timecodes

Editorial math — trim handles, offset an edit, sum clip durations — is addition and subtraction in the frame domain. Enter two timecodes, pick + or , and the tool converts both to frames, does the arithmetic, carries frames into seconds correctly, and renders the result back as timecode. A subtraction that would go below 00:00:00:00 is flagged rather than silently wrapping.

Frame rates supported

23.976, 24, 25 (PAL), 29.97 (drop and non-drop), 30, 50, 59.94 (drop), and 60 — covering film, PAL, NTSC broadcast, and high-frame-rate web. Switch rates and the same timecode re-interprets against the new counting and real-time base.

For sizing the media those frames live in, see the Video Bitrate and Video File Size calculators; to keep a frame's dimensions in ratio, use the Aspect Ratio Calculator.

Frequently asked questions

How do I convert timecode to frames?

Multiply hours, minutes, and seconds out to seconds, multiply by the frame rate, and add the frame count — so at 30 fps, 00:00:10:00 is 10 × 30 = 300 frames. Drop-frame rates need an adjustment (skipped frame numbers), which this tool handles automatically.

What is drop-frame timecode and when do I use it?

NTSC video runs at 29.97 fps, not 30, so a 30-frame-per-second timecode drifts ahead of real time by ~3.6 seconds per hour. Drop-frame fixes this by skipping 2 frame *numbers* every minute (except every 10th minute) so the timecode stays aligned to wall-clock time. Use it for broadcast/NTSC deliverables; use non-drop for film, PAL, and most web work. No actual frames are dropped — only their labels.

Why is drop-frame written with a semicolon?

Convention. Non-drop timecode uses colons throughout (00:00:00:00); drop-frame puts a semicolon before the frames (00:00:00;00) so you can tell them apart at a glance. This tool outputs the right separator for the selected rate.

What's the difference between 29.97 and 30 fps here?

The frame *count* is the same (labels 0–29), but real time differs. 30 frames is exactly 1 second at 30 fps, but about 1.001 seconds at 29.97. That's why the tool reports both a frame number and a real-time value — they diverge on NTSC rates.

Can I add two timecodes together?

Yes. Enter two timecodes and choose + or −; the tool converts both to frames, does the math, and renders the result back as timecode (with frame carry). Subtracting to a negative result is flagged rather than wrapping.

Related tools