Video Timecode Advanced Support


Love this software. Starting to use it for post-production supervising in film and I was wondering if there were any plans to spruce up timecode support? Right you have duration which does, HH:MM:SS, but it would be great to get HH:MM:SS:FF, and different framerate support as well. Would also be amazing to add, subtract, and convert these values to different framerates. Anyone know of another way of doing this? Was thinking about doing a bunch of formula fields to manually calculate, but I’m thinking I might just use my google sheets script to calculate everything out first.



I would like to amplify this feature request!

I’m an assistant editor in TV and am using Airtable to track VFX shots. The addition of frames to the Duration field would be a HUGE help to my workflow. Just like Sam said. HH:MM:SS:FF with a variety of framerate options.

Thank you!


Thirding this! Would help a tonne with post-production work, right now I’m also using the Google Sheets script but I like the ability to sort and view records in Airtable. I hope someday it’s added soon.



Adding timecode support will bring over so many more users. And just for clarity, timecode support means that a cell can be edited to support timecode in a specified frame rate (23.976, 24, 29.97, 30, etc.) so any duration and calculations on timecode yield proper results. A timecode cell needs to be in a HH:MM:SS:FF format under a frame rate system (as noted above).

Couldn’t find a Video Timecode Duration Calculator for Airtable either and am relatively new so created this rough template for one. Not perfect but functional for a few bases I’m currently using:

Relies on 19 hidden fields to break down timecode entered as text to HH MM SS FF to get frame counts against 24fps time base. The frame counts can be operated on (added subtracted) the results converted back to HH:MM:SS:FF display. Clunky but works for now. Hope someone can improve on it and share back.

Good luck to everyone on their projects.

Hi Reuben and welcome to the community!

Here’s an alternate way of getting there - it is a Script Block and requires only a few lines of code. A script like this could read from TC In and TC Out and write results to another [actual] field and all without the added 19 fields. Imagine logic wrapped around these functions that look at all records and perform computations for any result fields that are empty.

Frames to Timecode & Timecode to Frames

var framerate = 24

let t1 = "00:59:20:02";
let t2 = "13:05:16:23";

output.markdown("### T1: " + t1);
output.markdown("### T2: " + t2);

let thisFrames = timecode_to_frames(t2) - timecode_to_frames(t1);
output.markdown("### Frames: " + thisFrames);

let thisTimeCode = frames_to_timecode (timecode_to_frames(t2) - timecode_to_frames(t1));
output.markdown("### Timecode: " + thisTimeCode);

function timecode_set_framerate(rate) {
  framerate = rate;

function timecode_get_framerate() {
  return framerate;

function timecode_to_frames(timecode) {
    var a = timecode.split(':');
    return ((Number(a[0])*3600 + Number(a[1])*60 + Number(a[2]))*framerate + Number(a[3]));

function frames_to_timecode(frames) {
    return(Math.floor(frames / (3600 * framerate)).toString().padStart(2, '0') + ":" + Math.floor((frames / (60 * framerate)) % 60).toString().padStart(2, '0') + ":" + Math.floor((frames / framerate) % 60).toString().padStart(2, '0') + ":" + (frames % framerate).toString().padStart(2, '0'));
1 Like

Thanks Bill, will give this a try. Appreciate the quick reply on this!

Reuben - this is AMAZING! Thank you so much. I’ve been trying to work with timecode properly for years, and this is a really good building block. Without native support from Airtable this is a great workaround, albeit rather complex!

I tweaked it to have a field that chooses FPS (replacing all your "24"s in the formulas with a reference to a new dropdown field and then value formula field {FPS}) so now it works with 25 and 30, as well. And I’m now using this to deal with small edit change calculations for feature films of 2,000 shots.

Thank you!

Thanks great to hear, Tom. Look forward to seeing your version with the drop down frame selector. That was something I was hoping to implement later (probably in a less elegant way) but haven’t needed yet. I’m sure it will be helpful to a lot of folks.

Hi Bill, great script - how would you then adapt this script to add up the total durations of one column (perhaps more applicable if you already have duration values from an imported EDL) and present the overall total at the bottom of that column? Or would it only be displayed in the Run section of Scripting?

Many thanks

Hi Bill, I’m just coming back to this post and your script looks SUPER DUPER USEFUL…! I was wondering if I may, would you be able to bridge my knowledge gap to get data IN and OUT of the base itself, please? Ideally it would parse data OUT of fields {T1} and {T2}, and {Framerate}, then send results back into the fields {Frames} and {Timecodes}. This could be repeated on each record.

Would you be able to help with this addition to you code, please? Apologies for my coding noob question.
Thanks so much in advance!

Sorry for the delay - pretty swamped and unable to pull away recently.

My recommendation - find a script example that reads and writes fields for all records (this one perhaps). Then incorporate these functions to read -> modify -> write the fields for each record.