Is your timecode actually in sync?

Timecode Compare measures offset and drift between your LTC sources — sample-accurately, in real time, on your Mac.

Coming soon to the Mac App Store

Requires macOS 14 Sonoma or later. Works with any Core Audio interface with 2+ inputs.

A precise meter for frame-accurate sync.

What the Delta & Drift panel shows Three Delta & Drift panels from the main window, one per compare channel. Their parts are labelled: sign, hours, minutes, seconds, frames and subframes in the timecode row, then Full Delta, Residual, the drift bar and the drift value. Hours Minutes Seconds Frames Subframes Sign + ahead − behind Full Delta absolute offset to master Residual remainder / frame length Delta & Drift Panel one per channel Drift bar 1 segment represents 0.01 ms Drift value accumulated since baseline

Check your devices before you shoot

All clocks drift, but not at the same rate. Compare your cameras and generators against a reference to figure out which one drifts too much.

Bring two setups together

Sooner or later another crew joins with its own timecode world, and locking to someone else's grandmaster is easy to assume and hard to see. Put their master next to yours and you can tell whether the two agree, before the material meets in post.

Measure latency through your chain

Every converter, embedder and recorder in the path adds a little delay. Tap the chain at several points at once and you see not just how much it adds, but where it happens.


High frame rates, read directly.

SMPTE 12M only defines frame rates up to 30 fps. Over the years that produced a range of different approaches to handling anything faster. The HFR button doesn’t just double the base frame rate: it shows the real calculated in-between frames. Frame numbers, subframes, residual and 24-hour projection follow automatically. You can even open a second Timecode Compare window to look and measure a standard and a high frame rate side by side.

Every feature

Screenshots

Main window with the signal popover open: user bits, binary group flags, dropout and error counters, audio device and buffer size
Click on the running timecode to reveal user bits and extra information.
A compare channel named Slate with its signal popover open, next to three offset tiles showing full delta, residual and drift
The same user bits and extra information for any compare channel.
Drift measurement popover showing drift since start, start value, the 24-hour projection and the last reset reason
Click on the drift bar to see long-term drift data and the 24-hour projection.
A 24 fps master reference above two 30 fps compare channels named SloMo Camera A and B, each marked with an FPS mismatch chip, with full delta, residual and drift measured across the different rates
Compare mixed frame rates.
General settings: master timecode source, audio buffer, sample rate and display options Appearance settings: light, system or dark theme and the colour thresholds for the offset tiles
Settings.
The window with a master reference and seven compare channels stacked in one column, each with its own offset tile
One master reference and seven compare channels in a single window.

Coming soon to the Mac App Store.

Solo

$39.99
one-time · price may vary by region
  • 2 channels: master reference + 1 compare channel
  • All functions included: offset, drift, cross-rate, PDF report, logs

Pro: in-app upgrade

+ $59.99
one-time · $99.98 in total
  • Raises the limit to 8 channels: master reference + 7 compare channels

FAQ

Short answers to the questions we get most.

What do I need to connect my sources?

Any Core Audio interface with two or more inputs.

Can I use a macOS Aggregate Device to combine two interfaces?

Yes. Build one in Audio MIDI Setup and Timecode Compare treats it like any other input device.
Be sure to activate Drift Correction; macOS then resamples them onto one common timebase.

That correction costs a little: it shows up in the drift reading as a few hundredths to tenths of a millisecond wandering back and forth, depending on the interfaces. For the most accurate measurement, use a single interface.

How accurate is the measurement?

Offsets are determined sample-accurately, at 48 kHz that is a resolution of about 0.02 ms. Drift is measured over time from the same data, with a trend and 24-hour projection.

Which frame rates are supported?

All common SMPTE rates: 23.98, 24, 25, 29.97 (DF/NDF), 30, plus HFR at 47.96, 48, 50, 59.94 and 60 fps.

How does HFR mode work, does it just double/skip the frames?

No. LTC only ever carries the base rate: shoot 47.96, 48, 50, 59.94 or 60 fps and two recorded frames share one timecode number. Some hardware marks that by doubling the frame number (1, 2, 3 becomes 2, 4, 6). Timecode Compare instead derives the in-between frame from the sample-accurate position of the LTC frame edge. The frame counter runs the full 0-59 at 60 fps, with no skipped numbers.

An offset of 00:00:00:01.47 at 30 fps reads 00:00:00:03.07 in HFR (same offset time 53.09 ms), counted in 16.67 ms frames. Subframes run 0-39 instead of 0-79, and the 24-hour drift projection is shown in the HFR rate. The measurement itself is untouched: offset and drift always come from raw sample positions and stay sub-frame accurate at any rate.

Delta and Drift panel before enabling HFR: offset +00:00:00:01.47, Full Delta 53.09 ms, Residual 19.76 of 33.33 ms Delta and Drift panel before enabling HFR: offset +00:00:00:01.47, Full Delta 53.09 ms, Residual 19.76 of 33.33 ms
HFR off
The same panel right after enabling HFR: offset +00:00:00:03.07, Full Delta still 53.09 ms, Residual 3.09 of 16.67 ms The same panel right after enabling HFR: offset +00:00:00:03.07, Full Delta still 53.09 ms, Residual 3.09 of 16.67 ms
HFR on
Can I compare sources running at different frame rates?

Yes. When the rates differ (say 25 vs 29.97), comparing frame numbers makes no sense. So the app compares points in time instead.

Every LTC frame carries a time stamp. The app turns it into plain seconds: at 25 fps, frame 12 means 480 ms — at 30 fps, frame 15 means 500 ms. Once everything is in seconds, the frame rates no longer matter. And because both signals come in through the same audio interface, the app also knows the exact moment each frame arrived — down to the sample.

The time difference between the two sources is the Full Delta, in milliseconds. From it the app calculates frames and subframes in the channel’s own rate. The channel is marked with an FPS ≠ chip, and drift keeps being measured across the rates.

What does MASTER, LOCK or UB mean?

Each channel shows these chips above its digits, always in this order, and only when they apply.

Channel name chip reading Timecode A
The channel name. A, B, C … in input order; double-click to rename.
Purple Master chip
The reference channel. All offsets are measured against it. Any channel can take that role, pick it in Settings.
Green Lock chip
Valid LTC is being decoded.
Pink FPS mismatch chip
This channel’s frame rate differs from the master’s. Delta and drift are measured as normal. Mixing rates is fine.
Yellow HFR chip
High Frame Rate activated.
Blue Paused chip
Display frozen. Measurement keeps running.
Red TC chip with a line struck through it
Audio is arriving, but it is not timecode.
Yellow Detecting chip
Signal found, working out the timecode.
Orange No Signal chip
Nothing usable on this input.
Yellow Unstable chip
The signal is unstable. Check your cabling.
Cyan UB chip
User bits are present. Click to read them.
Are there in-app purchases?

You buy the app once. That is the complete app with two channels (master reference plus one compare channel), including every measurement feature.

If you need more than two channels you can unlock up to 8 channels in one window with a single in-app purchase. It is the only in-app purchase there is, and the only thing it changes is the channel count. No subscription. Prices follow at launch.

How do payment and refunds work?

Purchases are handled entirely by Apple: the app never sees a payment. Refunds go through Apple’s standard process, from the receipt or via reportaproblem.apple.com.

Is the Pro upgrade covered by Family Sharing?

No. The in-app upgrade stays with the Apple Account that bought it. One purchase per user.

Does the app record audio? What about privacy?

No. Audio is analyzed in memory, in real time, purely to decode timecode: nothing is recorded, stored or transmitted. The app has no network access at all. The App Store privacy label truthfully says Data Not Collected. Details in the privacy policy.

How do I document the measurement for the production report?

The app writes CSV session logs in the background: per-channel timecode, offset and drift every 10 seconds, plus a run summary with every reset and its reason (device change, FPS change, …). Export via the File menu.

How do I get more help?

Write to support@timecodecompare.com, ideally with your macOS version, interface model and a session log.