Skip to content
RFrftools.io
General

Crystal PPM Tolerance & Frequency Error Calculator

Convert crystal tolerance in ppm to absolute frequency error in Hz. Stacks initial tolerance, temperature stability, and aging into worst-case and RSS budgets, with clock drift in seconds per day.

Loading calculator...

Formula

Δf=f0ppminit+ppmtemp+ppmaget106ppmRSS=ppminit2+ppmtemp2+(ppmaget)2\Delta f = f_0 \cdot \frac{\text{ppm}_{\text{init}} + \text{ppm}_{\text{temp}} + \text{ppm}_{\text{age}}\, t}{10^{6}} \qquad \text{ppm}_{\text{RSS}} = \sqrt{\text{ppm}_{\text{init}}^{2} + \text{ppm}_{\text{temp}}^{2} + (\text{ppm}_{\text{age}} t)^{2}}

Reference: IEEE 177 quartz resonator definitions; typical AT-cut crystal datasheet parameters

f₀Nominal frequency (Hz)
ΔfAbsolute frequency deviation (Hz)
ppm_initInitial calibration tolerance at 25 °C (ppm)
ppm_tempStability over the operating temperature range (ppm)
ppm_ageAging rate (ppm/year)
tService life (years)

How It Works

Parts per million is a fractional error: one ppm means one millionth, so Δf=f0×ppm/106\Delta f = f_0 \times \text{ppm} / 10^6. That single relationship is why the same crystal grade can be excellent in one design and unusable in another. At 32.768 kHz, ±20\pm 20 ppm is ±0.66\pm 0.66 Hz — invisible. At 25 MHz the same ±20\pm 20 ppm is ±500\pm 500 Hz, and at a 2.4 GHz carrier synthesised from that reference it becomes ±48\pm 48 kHz, comfortably enough to fail a channel-accuracy requirement.

A crystal datasheet does not give one tolerance number, it gives three, and they are specified independently. Initial or calibration tolerance is the trim accuracy at 25 °C — how close the part is to nominal on the day it ships. Frequency-versus-temperature stability describes how much it moves across the operating range; for an AT-cut crystal this is a cubic curve with an inflection near 25 °C, which is why the spec is quoted as a total excursion rather than a coefficient. Aging is irreversible long-term drift from stress relief in the mounting and mass transfer at the electrodes, quoted per year and largest during the first year.

The three combine in two different ways depending on what you need. The arithmetic sum ppminit+ppmtemp+ppmage\text{ppm}_{init} + \text{ppm}_{temp} + \text{ppm}_{age} is the guaranteed limit: no unit in any condition at any point in its life will exceed it. That is the number a protocol margin or a regulatory frequency-accuracy requirement must survive. The root-sum-square ppminit2+ppmtemp2+ppmage2\sqrt{\text{ppm}_{init}^2 + \text{ppm}_{temp}^2 + \text{ppm}_{age}^2} assumes the three mechanisms are uncorrelated, which they largely are, and describes the realistic spread across production. It is always the smaller of the two, and using it where a guaranteed limit was required is how designs pass qualification and fail in the field.

Because ppm is a fractional rate, it maps directly onto timekeeping without any extra physics. One ppm is one microsecond per second, 86.4 milliseconds per day, and 31.5 seconds per year. That conversion is what makes ppm the natural unit for real-time clocks: a ±20\pm 20 ppm RTC drifts up to ±1.73\pm 1.73 s/day and ±10.5\pm 10.5 minutes per year, which is why calendar-accurate products need either a ±2\pm 2 ppm TCXO or periodic network time correction.

Worked Example

Given: 25 MHz crystal, ±20\pm 20 ppm initial tolerance, ±15\pm 15 ppm temperature stability, ±3\pm 3 ppm/year aging, 3-year service life Step 1: Accumulate the aging term ppmage=3×3=9\text{ppm}_{age} = 3 \times 3 = 9 ppm

Linear accumulation is the conservative reading of a per-year specification. Real crystals age approximately logarithmically, so this over-estimates years two and three.

Step 2: Worst-case arithmetic sum ppmworst=20+15+9=44\text{ppm}_{worst} = 20 + 15 + 9 = 44 ppm Step 3: Realistic root-sum-square ppmRSS=202+152+92=400+225+81=706=26.570660511172846\text{ppm}_{RSS} = \sqrt{20^2 + 15^2 + 9^2} = \sqrt{400 + 225 + 81} = \sqrt{706} = 26.570660511172846 ppm

The statistical figure is 40 % smaller than the guaranteed limit — the gap between what you must design for and what you will typically measure.

Step 4: Absolute frequency error Δf=f0×ppmworst106=25×106×44106=1100\Delta f = f_0 \times \frac{\text{ppm}_{worst}}{10^6} = 25 \times 10^6 \times \frac{44}{10^6} = 1100 Hz Step 5: Frequency limits fmin=25,000,0001100=24,998,900f_{min} = 25{,}000{,}000 - 1100 = 24{,}998{,}900 Hz fmax=25,000,000+1100=25,001,100f_{max} = 25{,}000{,}000 + 1100 = 25{,}001{,}100 Hz

Total span between the extremes: 2×1100=22002 \times 1100 = 2200 Hz

Step 6: Timekeeping drift drift=86400×44106=3.8016\text{drift} = 86400 \times \frac{44}{10^6} = 3.8016 s/day

Over a year: 525600×44106=23.1264525600 \times \frac{44}{10^6} = 23.1264 minutes

Result: ±44\pm 44 ppm worst case, ±1100\pm 1100 Hz at 25 MHz, and up to 3.8 seconds of clock drift per day. Well inside the ±50\pm 50 ppm an Ethernet PHY allows, but far too loose for a product that must keep calendar time unaided.

Practical Tips

  • Size the crystal against the tightest consumer of the reference, not the average one. A single design may feed a UART that tolerates thousands of ppm and a radio synthesiser that tolerates ten
  • For real-time clocks, convert straight to seconds per day early in the design — plus or minus 20 ppm is 1.73 s/day, which most people find far easier to judge against a product requirement than a ppm figure
  • If the temperature stability term dominates, a TCXO is usually cheaper than tightening the initial tolerance. Initial trim is expensive to improve and temperature is normally the largest of the three terms in a wide-range design
  • Budget aging generously for sealed or inaccessible products. A device that can be re-synchronised over the network only needs to hold accuracy between syncs; one that cannot needs the full end-of-life number
  • Check the specified load capacitance before anything else. Getting CL wrong is the single most common cause of a crystal running out of tolerance, and it is a layout and component choice rather than a purchasing decision

Common Mistakes

  • Using only the initial tolerance from the datasheet headline — a part marked plus or minus 20 ppm usually means 20 ppm at 25 degrees C, with temperature and aging still to be added on top; the real end-of-life number is often two to three times the headline figure
  • Root-sum-squaring when a guaranteed limit is required — RSS describes the production spread, not the boundary. Protocol compliance, regulatory frequency accuracy, and worst-case link margin all need the arithmetic sum
  • Forgetting load capacitance mismatch — a crystal specified for 12 pF running against an actual 15 pF load is pulled by tens of ppm, frequently more than every datasheet term combined, and it appears in none of them
  • Applying a per-year aging figure linearly over ten or fifteen years — this is deliberately conservative and can over-estimate by 3 to 5 times, potentially driving you to an unnecessarily expensive part
  • Comparing two clocks and using only one crystal's tolerance — when two independent oscillators must stay in step, the relative error is the sum of both budgets, so two plus or minus 30 ppm parts can differ by 60 ppm

Frequently Asked Questions

One millionth of the nominal frequency. At 32.768 kHz that is 0.033 Hz, at 8 MHz it is 8 Hz, and at 25 MHz it is 25 Hz. The shortcut is that the frequency in MHz equals the Hz-per-ppm, so a 25 MHz part shifts 25 Hz for every ppm of error.
A day is 86,400 seconds, so 20 ppm gives 86,400 times 20e-6 = 1.73 seconds per day, or about 10.5 minutes per year. Products that must stay within a minute a year need roughly plus or minus 2 ppm, which means a TCXO or periodic network time sync.
Add them when you need a limit no unit may exceed: protocol compliance, regulatory frequency accuracy, worst-case link margin. Use RSS when estimating the real production spread, because the three mechanisms are independent and rarely all hit their limits in the same direction on the same part. RSS is always the smaller number.
An 8N1 UART samples the stop bit roughly 9.5 bit times after the start edge, so accumulated timing error must stay under half a bit — about 5 percent total between both ends. That budget is dominated by baud-rate divider rounding rather than the crystal; the 50 ppm figure exists to keep the crystal from eating into the divider allowance.
No, it is intentionally pessimistic. Crystal aging is approximately logarithmic, with most of the shift occurring in the first year and the rate declining afterwards. Ten years is typically closer to 2 to 3 times the first-year figure rather than 10 times. Linear accumulation is the conservative reading of a per-year specification and is what you want for a guaranteed limit.
Yes, and it is not included in this budget. A crystal specified for 12 pF running against 15 pF is pulled by tens of ppm, often larger than every datasheet term combined. Size the loading capacitors first with the crystal load capacitance calculator, then treat any residual mismatch as an additional tolerance term here.

Related Articles

Shop Components

As an Amazon Associate we earn from qualifying purchases.

Resistor Kit (1%, E24)

Precision 1% thin-film SMD resistor assortment, 0402 package

Ceramic Capacitor Kit

MLCC ceramic capacitor assortment in 0402 package

Solderless Breadboard

Full-size breadboard for circuit prototyping

Related Calculators