IEEE 1588 message intervals, SMPTE ST 2059-2 profile parameters and Synchronization Metadata, TAI/UTC conversion and ST 2059-1 frame alignment. Everything runs in your browser.
PTP intervals are expressed as the base-2 logarithm of seconds.
logSyncInterval = −3 means 2−3 = 0.125 s, i.e. 8 messages per second.
Bandwidth is an estimate for PTP over UDP/IPv4 on Ethernet: Sync and Follow_Up 44-byte payload, Announce 64-byte, Delay_Req 44-byte, Delay_Resp 54-byte, each plus 42 bytes of UDP/IP/Ethernet header and 20 bytes of preamble and inter-frame gap. Two-step operation assumed. Use it to size a link, not to certify one.
Select a profile to see its permitted ranges and defaults, and to check the values you entered above.
PTP counts seconds since the PTP epoch, 1 January 1970 00:00:00 TAI. TAI does not have leap seconds, so it is ahead of UTC by a whole number of seconds — currently 37.
37 s has been the value since 1 January 2017. The USNO has
announced that no leap second will be introduced at the end of
December 2026, so 37 remains valid. Always take the live value from
the currentUtcOffset field of the Announce message rather than
hard-coding it.
SMPTE ST 2059-1 aligns video frame boundaries to the PTP epoch. Frame 0 starts at the epoch, and every frame boundary after that is an exact multiple of the frame period. Exact integer arithmetic is used below, so there is no rounding drift.
Press Now in section 3 to fill the PTP seconds field with the current instant, then read where the next frame boundary falls.
The fields a ST 2059-2 grandmaster puts in the Announce message.
currentLocalOffset is the one that is most often wrong, because it is
measured from PTP time (TAI), not from UTC.
Field names and types follow SMPTE ST 2059-2:2021 Table 2.
timeOfNextJump, timeOfNextJam and
timeOfPreviousJam are 48-bit unsigned PTP seconds.
currentLocalOffset, jumpSeconds and
previousJamLocalOffset are signed 32-bit.
Built by Elettronica Mangione, Rome — broadcast synchronisation since 1984. Values verified against SMPTE ST 2059-2:2021 and USNO leap second bulletins. This tool computes; it does not certify. Always confirm against the published standard for your installation.
Precision Time Protocol (PTP, IEEE 1588) is how devices on a network agree on what time it is, to well under a microsecond. One device — the grandmaster — holds the reference, usually taken from GPS, and every other device measures how long its messages take to arrive so it can correct for the delay. In a broadcast plant this is what keeps cameras, audio, timecode and studio clocks on the same instant. This page does the arithmetic that configuring it requires.
PTP is not difficult to understand, but it is easy to misconfigure, and the mistakes are quiet: the network locks, every device reports a grandmaster, and the timing is wrong anyway. Four things account for most of it.
−3 means 0.125 seconds, or eight messages per second. Typing
3 instead gives you one message every eight seconds — the network
still locks, and the holdover does the rest.Every PTP interval is written as the base-2 logarithm of a number of seconds. The interval in seconds is 2 raised to that value, and the message rate is its reciprocal:
0 → 1 s → 1 message per second−1 → 0.5 s → 2 per second−3 → 0.125 s → 8 per second−4 → 0.0625 s → 16 per second−7 → 0.0078125 s → 128 per secondFaster is not automatically better. Sync messages are multicast and cost the same regardless of how many devices listen, but Delay_Req is sent by every slave and its Delay_Resp comes back individually. Two hundred devices at eight requests per second is 3,200 message pairs per second arriving at one grandmaster. The calculator above estimates that load so you can size it before you deploy it.
ST 2059-2 is the broadcast profile of IEEE 1588. It narrows the permitted ranges and adds the metadata that video needs. From the 2021 edition: domain 0 to 127 with a default of 127; logAnnounceInterval from −3 to +1 with a default of 0; logSyncInterval from −7 to −1 with a default of −3, which is eight Sync messages per second; announceReceiptTimeout from 2 to 10 with a default of 3; priority1 and priority2 from 0 to 255, both defaulting to 128. logMinDelayReqInterval initialises to the value of logSyncInterval and may be up to five steps slower.
The domain number deserves a note. The default of 127 is deliberate: it keeps a media network from colliding with a general-purpose PTP domain, which conventionally uses 0. If your grandmaster is on 127 and a device is looking at 0, they will never meet, and the device will report no grandmaster rather than a wrong one.
PTP counts from the PTP epoch — 1 January 1970 00:00:00 TAI —
and TAI has no leap seconds. UTC does, which is why the two have drifted apart by
37 seconds since the last leap second at the end of 2016. The
currentUtcOffset field in the Announce message carries that number,
and a receiver that ignores it will be 37 seconds fast.
The value to publish in currentLocalOffset is not your time zone.
It is your time zone minus the UTC offset: local time equals PTP time plus
currentLocalOffset. For Rome in summer that is 7200 − 37 = 7163 seconds.
Publishing 7200 leaves every clock in the building 37 seconds fast, and it is
exactly the kind of error that survives a commissioning test because everything
is consistently wrong.
SMPTE ST 2059-1 defines where video frames sit in time: frame 0 begins at the PTP epoch, and every boundary after that is an exact multiple of the frame period. For integer rates the pattern repeats every second. For 29.97 fps — that is 30000/1001 — it repeats every 1001 seconds, which is why two devices can agree on the time and still disagree on which frame it is if one of them rounds.
The calculator uses exact integer arithmetic for this, not floating point, so the frame index it gives you is the frame index your hardware should agree on.
ST 2059-2 attaches a metadata block to the Announce message carrying the things video needs and plain PTP does not: the system frame rate as a rational number, the grandmaster locking status, the local time offset, the timing of the next daylight saving change or leap second, and the times of the previous and next Daily Jam. The calculator produces all eleven fields from the plant details you enter, including the two that are most often wrong — currentLocalOffset and timeOfNextJam.
A calculator tells you what the numbers should be. Something still has to produce them, hold them when the GNSS antenna loses sky, and keep producing them at three in the morning. Our PTPMaster is a GNSS-disciplined PTP IEEE 1588 grandmaster with hardware timestamping, an integrated web dashboard, and support for the SMPTE ST 2059-2 and AES67 profiles — built in Rome, where we have been making broadcast timing equipment since 1984.
These tools are free because we build the equipment that does the same job in a control room, twenty-four hours a day, without a browser tab open.
Elettronica Mangione has been designing broadcast synchronisation systems in Rome since 1984, with over 1,000 installations in 15 countries. Talk to a timing engineer.
Both keep clocks in step over a network, but they are built for different jobs. NTP timestamps its packets in software and copes with the internet, which is why it runs everywhere and why it usually lands within a millisecond or so on a good local network. PTP timestamps in hardware, inside the network card and inside switches that understand it, and removes the queueing delay those switches introduce. That is what takes it below a microsecond, and often to tens of nanoseconds.
The practical difference in a broadcast plant: NTP is enough for wall clocks, logging and general IT. PTP is what SMPTE ST 2110 video and AES67 audio require, because essence has to be sample-aligned and a millisecond is far too coarse. Two more differences that catch people out — PTP counts in TAI while NTP counts in UTC, so the two are 37 seconds apart; and a PTP grandmaster sends eight Sync messages per second under the SMPTE profile, where an NTP client might poll once a minute.
The value is the base-2 logarithm of the interval in seconds. 2−3 is 0.125 seconds, so the grandmaster sends eight Sync messages per second. It is the default for the SMPTE ST 2059-2 profile.
PTP counts in TAI, which has no leap seconds. UTC has had 37 leap seconds added since TAI and UTC were aligned, the most recent at the end of 2016. The Announce message carries the current difference in the currentUtcOffset field. No leap second is scheduled for the end of 2026.
Your local UTC offset minus the TAI−UTC offset, because local time equals PTP time plus currentLocalOffset. In Rome in summer that is 7200 − 37 = 7163 seconds. Setting it to 7200 makes every clock 37 seconds fast.
SMPTE ST 2059-2 defaults to domain 127, which keeps media traffic separate from general-purpose PTP domains that conventionally use 0. Any value from 0 to 127 is permitted, but every device in the plant must use the same one.
ST 2059-1 defines how video and audio signals are aligned to the PTP epoch. ST 2059-2 defines the PTP profile itself — the permitted parameter ranges and the Synchronization Metadata carried in the Announce message.
Because 29.97 fps is exactly 30000/1001 frames per second. Exactly 30,000 frames fit into 1001 seconds, so the relationship between frame boundaries and second boundaries only returns to its starting point after 1001 seconds.
Not in practice. Its one Sync message per second is designed for industrial networks. Video timing needs the eight per second of the SMPTE profile, and the metadata that the default profile does not carry at all.
Yes, with no registration. Everything is computed in your browser and nothing you enter is sent anywhere.