Timecode Calculator

Label
Total
00:00:00;00
00:00:00:00
Advanced options

Use “Sum rounded clips” when each row is converted separately before combining clips.

Reverse the conversion?

Each row’s converted timecode becomes its new input, and the two rates exchange places. The runtime target is converted to the new Input Rate.

Converted values are rounded to whole frames. Totals or values may differ slightly when converted back. Undo restores the original entries.

Share a live runsheet

One person edits at a time. Viewers can chat and request editing control; the current editor approves each handoff.

Keep the editor link private. Links grant access to this runsheet; names in chat are self-reported. Only one browser tab can edit at a time. Updates normally appear within two seconds.

Move row

About Timecode Calculator

Timecode Calculator by The Postage · v2.1.3

Built by The Postage, this tool enables precise timecode math and conversion for post-production professionals—from building runsheets to checking program runtimes. It is optimized for speed, accuracy, and clarity in high-pressure workflows.

How to use it

Name your runsheet in the setup panel above the entries. Add an optional Target runtime beside the title; it uses Input Rate. The exact over/under difference appears beneath the input total. The title and target are included in saved runsheets, printed sheets, and live sharing; the title also becomes the saved runsheet filename.

  1. Choose Input Rate to match your source timecodes, including DF or NDF.
  2. Enter timecodes in full or as digits: 123412 becomes 00:12:34:12 when you leave the box.
  3. Add or subtract with each row’s + / − buttons. In labels or timecodes, Enter moves down and Shift-Enter moves up in the same column. Enter on the last row adds one. In timecodes, + or − also sets the next row’s operation. The heading buttons apply to every row.
  4. A complete, valid timecode in the last row automatically adds a blank row without moving your cursor. On touch devices, + Next and − Next appear beneath the active input to move to the next timecode and set its operation.
  5. Choose Convert Rate for side-by-side results. Simple hides the converted column; Dual brings it back.

Built for your runsheet

  • Label and style entries for acts, spots, versions, or notes. While editing a label, ⌘B toggles bold and ⌘I toggles italic on Mac; use Ctrl+B or Ctrl+I on Windows. The compact styling menu offers the same choices.
  • Tab moves from a label to its timecode input, then to the next row’s label. Shift-Tab reverses that path. With labels hidden, Tab moves to the next timecode input.
  • Add Row, beside Reset, appends a blank row. Uncheck rows to compare totals without deleting entries; × deletes a row. Drag or tap the handle to reorder complete rows. Reset clears the rows while keeping the title, target, and rate settings; Undo can restore the entries.
  • Save / Share offers Print / Save PDF, CSV export, and Save Runsheet. Send the saved runsheet file to someone using this calculator, or use Open Runsheet to continue later. Labels, row order, operations, inclusion, styles, and calculation settings are preserved. Opening a file can be undone.
  • Undo or redo edits and row actions with the toolbar arrows, ⌘Z / ⇧⌘Z on Mac, or Ctrl+Z / Ctrl+Shift+Z on Windows. History lasts until you reload.
  • Hide Labels switches to a simpler calculator view, hiding the labels, title, target, and over/under difference without deleting their values. Show Labels brings them back. Light / Dark changes the theme.
  • Local runsheets save automatically in this browser when storage is available. Live sessions use the shared runsheet instead and do not replace your local draft. Use Save Runsheet to keep a file copy. An already loaded calculator can calculate without a connection; the saved offline HTML can also be opened without internet access. Live sharing and chat require a connection.

Live sharing and chat

Choose Live Share, then Start sharing this runsheet. Send your team the viewer link and keep the editor link private. One person edits at a time; viewers see updates, normally within two seconds, and everyone can chat. In chat, enter your name and choose Request editing control. The editor can approve or decline without interrupting the conversation.

The button stays visible as green ● Sharing for the editor or ● Viewing for a viewer. The status strip beneath it shows connection and sync status. Editors can choose Chat, Share Links, or Stop sharing; clicking Sharing also reopens the links. Viewers can open Chat from the strip or Viewing button, but cannot edit the runsheet.

Yellow ● Reconnecting or ● Paused means the session needs attention; check the status message. Only one editor tab can edit at a time. Stop sharing disables both links while keeping the editor’s current entries.

What’s new in v2.1.3 — complete feature list

v2.1.3 — October 10, 2026

Reverse conversion. The ⇄ button moves each row’s converted timecode into Input and exchanges the rates. The runtime target follows the new input rate. Rounded row values can cause small total or round-trip differences; Undo restores the original entries. Invalid entries, including excluded rows, must be corrected before swapping.

v2.1.2 — October 10, 2026

  • Compact operation controls. Checkbox-sized + and − buttons and a narrower column leave more room for labels and timecodes, with matching header alignment.
  • Independent font and color. Toggle Bold and Italic separately or combine both. Normal font clears both while preserving color; Default color restores the standard text color while preserving font styling.
  • Formatting previews. The compact Aa control shows the selected font and color. Full names and checkmarks appear in its menu, with keyboard navigation and touch-friendly options.
  • Runsheet title formatting. Titles support the same font and color choices while retaining their larger size. Command-B and Command-I (Ctrl on Windows) toggle font styling for titles and row labels.
  • Four accent colors. Red, green, blue, and yellow. Light mode and print use darker inks for readability on white paper and in grayscale.
  • Formatting travels with the runsheet. Combined font styles, colors, and title formatting are saved in JSON and live sharing. Older runsheets remain readable.
  • Portrait printing with a light grid. Continuous horizontal and vertical rules distinguish rows and columns. Compact branding lets the runsheet title lead the page; target runtime and over/under appear beside the totals in the Label column. These layout changes apply only to printing.

v2.1.1 — editing control and chat

New: request editing control from chat. Enter your chat name, then request control. The current editor can approve or decline. Approval saves the latest timings and passes editing to the requester; the previous editor becomes a viewer. Chat stays active. Press Enter to send a message or Shift+Enter for a new line. Only one person edits at a time. Requests expire after one minute, and names are unverified display names.

  • Live sharing and chat. One editor, multiple viewers, shared timing updates, private editor/viewer links, and side chat.
  • Visible sharing status. Live Share stays in the toolbar, with connected and warning states. A compact status strip beneath it includes Chat, Share Links, and Stop sharing for the editor.
  • Runtime targets. An optional Input Rate target beside the runsheet title, with exact over/under results beneath the input total. Targets are saved, shared, exported, and printed.
  • Distinct runsheet setup. Title and target share a panel; Add Row and Reset sit outside it. Hide Labels also hides the title, target, and difference while retaining their values.
  • Better use of desktop space. Closer Input and Convert columns, protected label space in narrower windows, and horizontal sheet scrolling when needed.
  • Reliable print branding. Dedicated black print artwork avoids the white-logo and PDF mask problems in Preview.

v2.0.1 fixes

  • Restored desktop +/− navigation, including numeric keypad keys and blank inputs.
  • Restored automatic blank-row creation after a complete, valid timecode in the final row, without moving your cursor.
  • Added touch-only + Next / − Next buttons beneath the active input, with a requested number keypad.

v2.0 improvements over v1.9.1

Version 2.0 rebuilt the calculation engine and added a more complete runsheet workflow, while keeping the familiar desktop calculator layout.

More accurate calculations

  • Corrected drop-frame math. Fixed 29.97 DF and 59.94 DF results at minute, hour, and day boundaries, including conversion between rates.
  • More accurate fractional-rate conversion. Uses exact frame rates internally, correcting errors that could accumulate with large values and long durations.
  • Signed arithmetic. Subtraction can produce negative totals, and a minus operation on the first included row is honored.
  • Consistent long-duration handling. Totals can exceed 24 hours without wrapping at midnight; timecode boxes expand when needed.
  • Stricter validation. Invalid minutes, seconds, frame numbers, and skipped drop-frame labels are flagged. Included invalid entries block totals, CSV export, and printing until corrected; drafts can still be saved.
  • Clear conversion choices. Preserve Duration maintains runtime to the nearest target frame. Keep Frame Count retains the number of frames for a speed change, replacing the old ambiguous Preserve Timecode mode.
  • Explicit total rounding. Choose between converting the combined duration once and adding individually rounded converted clips.
  • 60 fps added. Available alongside the original nine selectable rates.
  • Consistent results after edits. Rows and totals refresh together, and reordering keeps each label, operation, inclusion setting, and timecode attached to its row.

New runsheet features

  • Named runsheets. Add a title that appears on the printed runsheet and becomes the saved JSON filename.
  • Save and reopen editable runsheets. JSON files preserve entries, order, labels, styling, operations, inclusion, and calculation settings. Share a file with another v2.1.3 user or reopen it later.
  • Automatic local saving. Local runsheets and preferences are retained in the same browser between visits when storage is available. Active live sessions do not overwrite the local draft.
  • Undo and redo. Toolbar buttons and Mac/Windows keyboard shortcuts cover edits, row actions, settings, and resets. Up to 100 steps are retained during the session; reloading clears undo history.
  • Save / Share menu. Print / Save PDF, Export CSV, Save Runsheet, and Open Runsheet are grouped in one place.

Faster keyboard workflow

  • Enter and Shift-Enter. Move down or up within the label or input-timecode column. Moving down from the final row creates a blank row.
  • Tab through editable fields. Label → same-row timecode → next-row label. Shift-Tab reverses that path. With labels hidden, Tab moves to the next timecode input.
  • Bold and italic shortcuts. Command-B and Command-I on Mac, or Control-B and Control-I on Windows, toggle the focused row label’s style. The compact styling menus remain available.
  • Automatic row creation and touch entry. Finishing a valid timecode in the final row adds a blank row without moving your cursor. Touch devices request a number keypad and show + Next / − Next beneath the active input for continuing with an operation.
  • More ways to reorder. Drag rows, use the handle’s move options, or press Alt with the up/down arrow keys while the handle is focused.

Improved desktop layout and output

  • Clearer column headings. Input Rate and Convert Rate sit beside their dropdowns and are centered over their timecode boxes. Redundant timecode headings were removed.
  • Aligned operation controls. Header +/− buttons align with the row controls and reflect whether all rows share an operation.
  • Compact timecode fields and clearer totals. Standard-length values use narrower boxes, with room for longer durations and more prominent totals.
  • Quieter advanced controls. Conversion, total rounding, and Remove Excluded Rows sit in Advanced Options beneath the converted total.
  • Cleaner printing. Rates print as text rather than dropdowns, the runsheet title appears at the top, and excess space between labels and timecode columns is reduced. Excluded rows are omitted.
  • More useful CSV exports. Exports now include operations, inclusion flags, rates, conversion and rounding settings, frame counts, validation, totals, and runtimes, with improved text escaping.
  • Updated About Timecode Calculator. A concise overview explains runsheets, keyboard entry, sharing, and the calculation conventions.
  • Calculator and runsheet views. Hide Labels hides labels, the title, the target, and its comparison on screen and in print while preserving their saved values.

Familiar features retained

Addition and subtraction, labels and styling menus, row inclusion, CSV export, printing, dark/light themes, Simple/Dual views, and row reordering remain part of the tool. The changes above describe additions and improvements rather than treating these existing features as new.

Calculation verification

The rebuilt engine passed 848,484 independent mathematical assertions across all ten supported rates, including drop-frame boundaries, conversions, signed results, and rounding. These checks verify the tested calculations; they are not a standards certification or a claim of testing on every device.

Accurate calculations, clear results

Whole-frame arithmetic, exact fractional rates, and drop-frame validation keep calculations consistent. Invalid included entries pause totals and export. Negative totals and durations longer than 24 hours are supported.

Preserve Duration is the default conversion. In Advanced options, Keep Frame Count retains frames while changing playback speed. Totals normally convert the combined duration once; Sum rounded clips adds individually rounded conversions instead.

Timecode conventions and rounding

Timecode uses HH:MM:SS:FF, with a semicolon before frames for DF. Supported rates: 23.976, 24, 25, 29.97 NDF/DF, 30, 50, 59.94 NDF/DF, and 60.

29.97 DF skips labels ;00 and ;01 at each minute except multiples of ten; full-frame 59.94 DF skips ;00 through ;03. No media frames are removed.

Conversions round to the nearest target frame; half-frame ties round away from zero. Summing rounded clips can differ from converting the combined duration.

Inputs represent durations from zero, with no midnight rollover. Across-midnight in/out subtraction needs a day offset. Changing Input Rate reinterprets existing entries; changing Convert Rate recalculates results using the selected conversion mode. The seconds beneath each total show actual runtime.

Rates above 30 count individual video frames here. For 59.94 interlaced fields, select 29.97. Counting reference: SMPTE ST 12-1.

Saved you some time? Buy me a coffee.