DropFrameGlobal Timecode · Developers
Status  ← Generator app
Free · keyless · open

Lock to the Global Timecode in two lines.

A public, always-on, UTC-disciplined running timecode anyone can lock to — so productions stay in sync across locations (a GoPro rig, a coast-to-coast crew). Free, keyless, read-only; nothing leaves the client.

--:--:--:--
connecting…  ·  dispersion  ·  edge  ·  UTC 29.97 DF

↑ live, running in your browser right now via the SDK below.

Quick start

<script type="module">
  import { DropFrame } from "https://dropframe.app/dropframe.js";
  const df = await DropFrame.connect();
  setInterval(() => console.log(df.timecode("29.97df")), 100);  // live SMPTE time-of-day
</script>

That's it — df stays locked to the global timecode; read it whenever you render. It keeps itself in sync in the background and falls back to the device clock if offline, automatically. Get dropframe.js (MIT — drop it in your project).

SDK reference

Time

MethodReturns
df.now()Global time, ms since the Unix epoch (UTC).
df.date()The same instant as a Date.
df.timecode(rate?, opts?)SMPTE time-of-day string, e.g. "13:45:09;12". Default "29.97df", UTC.
df.frame(rate?, opts?){ h, m, s, f, fps, df, utc, label } for programmatic use.

rate23.976 · 24 · 25 · 29.97 · 29.97df · 30 (drop-frame → ;, non-drop → :). opts: { utc: false } uses the device's local wall clock.

Status (live, read-only)

PropertyMeaning
df.state"locking""global" (locked) or "fallback" (on device clock)
df.dispersion± uncertainty in ms; null on fallback
df.offsetms added to the device clock to reach global time
df.edgewhich edge served (transparency), e.g. "SJC"
df.onChange(cb)subscribe to {state, dispersion, offset, edge}; returns an unsubscribe fn
df.stop() / df.start() / df.readypause / resume / first-sync promise
Show your users df.dispersion (± ms). It's a network time reference (~ms accuracy) — great for keeping devices aligned across locations, not a substitute for sample-accurate genlock.