All Tools View Categories About Contact Privacy

Timecode to Frame Calculator

Convert a timecode to a frame number.

Runs entirely in your browser — no data is uploaded or stored.

Use the same fps as your editing project so frame numbers line up with cuts.

About this tool & how to use it
  • Comma or dot milliseconds: The Timecode field accepts both the SubRip comma form 00:01:23,500 and the WebVTT dot form 00:01:23.500, so you can paste directly from either kind of file without editing the separator.
  • Exact fractional rates: Frame rate (fps) is used as the real number you type, so 23.976 and 29.97 give a genuinely different answer from 24 and 30 rather than being silently rounded.
  • Rounded to the nearest frame: The result is a whole frame number rounded from the underlying calculation, which is what an editor's playhead actually needs rather than a fractional position.
  • Defaults to 25 fps: Leaving Frame rate (fps) empty applies 25 fps, the PAL and European broadcast standard, so a common case needs only one field filled in.
  • Explicit format guidance: An unparseable timecode produces a message naming the expected HH:MM:SS,mmm form instead of a misleading numeric answer.
  • Round-trips with frame-to-timecode work: Converting a timestamp to a frame and back again returns you to the same position, which makes it easy to verify a cue against an edit list in either direction.
  • Immediate and private: Everything is calculated in the page with no server call, so answers are instant and nothing about your programme is transmitted.
  1. Copy the timestamp you want to locate from your subtitle file, taking either the start or the end time from the cue's timing line.
  2. Paste it into the Timecode field in HH:MM:SS,mmm form; a dot before the milliseconds is accepted just as readily as a comma.
  3. Enter the timeline's true rate in Frame rate (fps), remembering that leaving it blank applies 25 fps, which will be wrong for a 23.976 or 29.97 project.
  4. Click Run and read the answer on the line beginning Frame: in the result panel.
  5. Type that frame number into your editor's timecode or frame entry box to jump the playhead exactly there, and check whether the caption sits clear of the nearest shot change.
  6. Convert the cue's end time the same way if you need the full frame range that a caption occupies.
  7. Copy the figure into your QC notes, or save it with the download button as a .txt file to keep alongside the subtitle deliverable.

Example 1 - locating a cue in a PAL edit. A subtitle starts at 00:01:23,500 and the assistant editor needs the frame number on a 25 fps timeline.

Timecode:   00:01:23,500
Frame rate: 25

Frame: 2088

Example 2 - a WebVTT timestamp on an NTSC master. The dot separator is accepted unchanged, and the 29.97 rate produces a very different frame count from the same instant in time.

Timecode:   00:01:23.500
Frame rate: 29.97

Frame: 2503

Those two answers describe the same moment on different masters, which is why a frame number is only meaningful alongside the rate it was calculated at - always record both in your notes.

About Timecode to Frame Calculator

Timecode to Frame Calculator runs the opposite way to a frame converter: give it a subtitle timestamp and a frame rate and it returns the frame that timestamp falls on. Type a value such as 00:01:23,500 into the Timecode field, set Frame rate (fps), and the result panel answers with a line reading Frame: N.

Subtitlers work in timestamps while editors and QC staff work in frames, and the two meet whenever a caption must align to a cut. Turning an SRT start time into a frame number lets you park an NLE playhead on the exact frame, confirm a caption clears a shot change, or answer a technical note written in frames. Broadcast QC teams, conform assistants and vendors reconciling a file against a delivery report need this constantly.

The parser is forgiving about the millisecond separator: SubRip writes 00:01:23,500 with a comma, WebVTT and many editors write 00:01:23.500 with a dot, and both are read correctly. The timestamp becomes a total in milliseconds, is divided by 1000 for seconds, multiplied by the rate you entered and rounded to the nearest whole frame. Fractional rates such as 23.976 and 29.97 are used exactly as typed, and an empty Frame rate (fps) assumes 25. The result is a non-drop-frame count from the start of the programme.

An unparseable timecode produces a message naming the expected HH:MM:SS,mmm shape rather than a guess, and the conversion runs locally with no upload.

Features

  • Comma or dot milliseconds: The Timecode field accepts both the SubRip comma form 00:01:23,500 and the WebVTT dot form 00:01:23.500, so you can paste directly from either kind of file without editing the separator.
  • Exact fractional rates: Frame rate (fps) is used as the real number you type, so 23.976 and 29.97 give a genuinely different answer from 24 and 30 rather than being silently rounded.
  • Rounded to the nearest frame: The result is a whole frame number rounded from the underlying calculation, which is what an editor's playhead actually needs rather than a fractional position.
  • Defaults to 25 fps: Leaving Frame rate (fps) empty applies 25 fps, the PAL and European broadcast standard, so a common case needs only one field filled in.
  • Explicit format guidance: An unparseable timecode produces a message naming the expected HH:MM:SS,mmm form instead of a misleading numeric answer.
  • Round-trips with frame-to-timecode work: Converting a timestamp to a frame and back again returns you to the same position, which makes it easy to verify a cue against an edit list in either direction.
  • Immediate and private: Everything is calculated in the page with no server call, so answers are instant and nothing about your programme is transmitted.

How to Use

  1. Copy the timestamp you want to locate from your subtitle file, taking either the start or the end time from the cue's timing line.
  2. Paste it into the Timecode field in HH:MM:SS,mmm form; a dot before the milliseconds is accepted just as readily as a comma.
  3. Enter the timeline's true rate in Frame rate (fps), remembering that leaving it blank applies 25 fps, which will be wrong for a 23.976 or 29.97 project.
  4. Click Run and read the answer on the line beginning Frame: in the result panel.
  5. Type that frame number into your editor's timecode or frame entry box to jump the playhead exactly there, and check whether the caption sits clear of the nearest shot change.
  6. Convert the cue's end time the same way if you need the full frame range that a caption occupies.
  7. Copy the figure into your QC notes, or save it with the download button as a .txt file to keep alongside the subtitle deliverable.

Examples

Example 1 - locating a cue in a PAL edit. A subtitle starts at 00:01:23,500 and the assistant editor needs the frame number on a 25 fps timeline.

Timecode:   00:01:23,500
Frame rate: 25

Frame: 2088

Example 2 - a WebVTT timestamp on an NTSC master. The dot separator is accepted unchanged, and the 29.97 rate produces a very different frame count from the same instant in time.

Timecode:   00:01:23.500
Frame rate: 29.97

Frame: 2503

Those two answers describe the same moment on different masters, which is why a frame number is only meaningful alongside the rate it was calculated at - always record both in your notes.

Benefits

  • Speaks your editor's language: Turning subtitle timestamps into frame numbers lets you place the playhead precisely in an NLE and settle timing arguments against the picture rather than the file.
  • Cleaner shot-change handling: Knowing the exact frame a caption starts on makes it simple to confirm it does not straddle a cut, a requirement in many broadcaster style guides.
  • Faster QC responses: Notes that arrive expressed in frames can be traced back to the offending cue in seconds, so corrections go out the same day instead of after a round of clarification.
  • Right answer for every standard: Because the rate you type is used exactly, 23.976 film-rate masters and 29.97 NTSC deliverables are handled as accurately as a straightforward 25 fps job.
  • No conversion tables: One field and a rate replace a spreadsheet of pre-computed values that goes stale the moment the project frame rate changes.
  • Private by design: The calculation never leaves your browser, so timecodes from unreleased or embargoed programmes are not sent to any service.

Frequently Asked Questions

What timecode format?
HH:MM:SS,mmm (comma) or HH:MM:SS.mmm (dot) — both are accepted.
Which fps?
Match your project; 23.976, 24, 25, 29.97, 30, 50, 60 all work.
Why convert to frames?
To align subtitles with frame-accurate cut points in editing software.
Is my file uploaded?
No, calculation is local.