How this instrument works
A timecode reading like 01:02:03:04 is really a compact way of writing a single large number: the count of frames that have played since the timeline started. To recover that number, convert every whole hour into its frame equivalent, add every whole minute's worth of frames, every whole second's worth of frames, and finally the leftover FF frames sitting in the current second — the reverse of how a deck or NLE builds the timecode display in the first place.
Getting this right depends entirely on using the correct frame rate for the footage. A frame rate mismatch is one of the most common sources of drift between two systems handling the same footage — a script that assumes 30 fps will compute the wrong absolute frame number for timecode captured at 25 fps or 23.976 fps, even though every digit in the timecode itself looks identical.
This absolute frame number is what editing tools, batch-processing scripts and edit decision lists actually operate on internally — trimming, offsetting or comparing two points on a timeline is arithmetic on frame numbers, with the human-readable timecode only reappearing at the display layer.
- Enter Hours (HH), Minutes (MM), Seconds (SS) and Frames (FF) from the timecode you're converting.
- Enter Frame rate (fps) to match the footage — the same timecode digits mean a different frame count at a different rate.
- Keep Minutes and Seconds between 0 and 59, and Frames below the frame rate — a value of 30 in the frames field at 30 fps isn't valid timecode.
- Read Total frame count — the single absolute frame number that timecode represents on this timeline.
Worked example — timecode 00:01:30:15 at 30 fps
Enter 0 hours, 1 minute, 30 seconds and 15 frames, with a frame rate of 30 fps — a cut point your editor's timeline shows as 00:01:30:15. Converting the clock portion to seconds gives 0 x 3600 + 1 x 60 + 30 = 90 seconds.
Multiplying 90 seconds by 30 fps gives 2,700 whole-second frames, and adding the leftover 15 frames brings Total frame count to 2,715. That single number, frame 2,715, is what a script or batch render job would use to locate this exact cut point, rather than working with four separate timecode fields.
Questions
How do I convert timecode to a frame number?
Convert the hours, minutes and seconds into total seconds, multiply by the frame rate to get whole-second frames, then add the leftover frames field. Timecode 00:01:30:15 at 30 fps converts to (0 x 3600 + 1 x 60 + 30) x 30 + 15 = 2,715 total frames.
Why do I need the frame rate to convert timecode?
Because timecode by itself only describes position within a second, not how many frames a second actually contains. The same digits, 00:01:30:15, represent frame 2,715 at 30 fps but a different absolute frame count entirely at 25 fps or 24 fps, since each frame rate packs a different number of frames into that 90-second span.
What's the maximum valid value for the frames field?
One less than the frame rate. At 30 fps, the frames field can only run from 0 to 29 — a value of 30 or higher isn't valid timecode at that rate, because frame 30 has already rolled over into the next second and should read 00 there instead.
Why would I need an absolute frame number instead of timecode?
Editing software, render engines and batch scripts generally work with a single frame number internally, because it's easier to add, subtract and compare than four separate HH:MM:SS:FF fields. Converting a timecode you can read on screen into that number is the first step in scripting a frame-accurate trim, offset or comparison.
Is this the inverse of a frames-to-timecode conversion?
Yes — this instrument exactly reverses the frames-to-timecode process. Feed 2,715 frames at 30 fps into a frames-to-timecode conversion and you get 00:01:30:15 back; feed that timecode and frame rate in here and you get 2,715 frames again, with no information lost in either direction.