EN FR Home

NTP Jitter Analysis

Thresholds, causes and measurement — with a browser-based live tester

1. What NTP jitter actually measures

NTP jitter is the statistical dispersion — typically the standard deviation or a smoothed variance — of successive offset measurements between a client and one of its time sources. It quantifies how noisy the path is, not how accurate the source is.

A client that polls a server eight times and sees offsets of -2, -3, -1, -2, -4, -2, -3, -2 milliseconds has low jitter (~1 ms). A client seeing -2, +18, -9, +24, -11, +6, -3, +15 ms has the same average but very high jitter — the individual measurements are unreliable, even if averaging them over time still yields a reasonable clock.

Why jitter matters for SEO-grade precision. NTP selects sources and applies exponential smoothing using jitter as an input. A source with high jitter receives less weight in the clock-filter algorithm — which is why poor-quality sources degrade accuracy even when they average to the correct offset.

2. Acceptable jitter by network type

Link / scenarioTypical jitterAction
Wired LAN, same datacentre< 1 msHealthy
Wired WAN, continental1–5 msHealthy
Consumer broadband, idle2–10 msAcceptable
Wi-Fi, normal activity10–30 msAcceptable for non-critical
Mobile LTE/5G15–50 msWatch, not for Stratum 2
Any path> 50 msInvestigate
Any path> 200 msSource unusable as reference

Financial-trading or telecom-synchronisation workloads operate in the sub-millisecond regime and require PTP/IEEE 1588, not NTP. Everyday enterprise workloads (AD, logs, TLS) tolerate 10–30 ms jitter without operational impact.

3. What causes high jitter

Four dominant causes, in rough order of frequency:

4. How to measure jitter — CLI and browser

From the browser (this site)

The live tester on the home page resamples the Stratum 1 GNSS reference every 10 seconds. The jitter is implicit in how much the displayed offset value changes between successive polls — load the page and watch the offset value for 1–2 minutes.

Linux — chrony

$ chronyc sourcestats -v
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
=======================================================================
ntp.rdem-systems.com       18  10  259   -0.012     0.034      -2ms    0.8ms
pool.ntp.org               16   9  245   +0.005     0.051      +4ms    2.1ms

The Std Dev column is the jitter estimate for the offset measurements. Target: below 2 ms for a Stratum 2 client.

Linux — classic ntpd / ntpsec

$ ntpq -pn
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.0.2.1       .GPS.            1 u   21   64  377   14.132   -1.842   0.421

The jitter column is in milliseconds. Target: < 1 ms on a selected Stratum 1 peer.

Windows

> w32tm /query /status
Root Dispersion: 0.0156257s
Source: ntp.rdem-systems.com,0x8
Poll Interval: 10 (1024s)

Windows does not expose per-source jitter directly; Root Dispersion is a conservative upper-bound on combined jitter across the time-sync tree.

5. Reducing high jitter

MetricWhat it measuresUnitTypical value
OffsetDifference between local clock and authoritative timems or µs< 100 ms excellent
JitterVariability of successive offset measurementsms< 1 ms on LAN
DriftRate at which local clock falls behind over timeppm (parts per million)±10 ppm typical crystal
Delay / RTDRound-trip time to sourcems< 50 ms continental

A stable clock has low jitter, low drift, and low offset. Diagnosing time-sync issues starts by isolating which of the three is degraded: see the live offset guide and the latency benchmark guide.

Run the Live Jitter Tester →

Beyond jitter? Use the right tool: