Oscillator Frequency Drift Estimator
Estimate drift in ppm and Hz from temperature change, aging, supply variation, and load capacitance shifts.
How to Use
- Enter the oscillator’s nominal frequency and choose the unit.
- Enter drift sources you care about (temperature, aging, supply, load capacitance).
- Select a combination method: Worst-case (stack) or RSS (root-sum-square).
- Open Show Work for formulas and intermediate steps.
- Use Share Link to generate a restoreable URL (only on click).
This tool uses a practical linear approximation. Real crystals can be non-linear vs temperature (and TCXO/OCXO behavior varies by part).
Show Work (step-by-step)
Reference
- ppm to Hz: Δf(Hz) = f₀(Hz) × (ppm ÷ 1,000,000)
- Temp drift (linear): ppmT = (ppm/°C) × ΔT
- Aging: ppmA = (ppm/year) × years
- Supply: ppmV = (ppm/V) × ΔV
- Load cap: ppmCL = (ppm/pF) × ΔCL
- Worst-case combine: |ppm| = |ppmT| + |ppmA| + |ppmV| + |ppmCL|
- RSS combine: |ppm| = √(ppmT² + ppmA² + ppmV² + ppmCL²)
- Time error: error(seconds) ≈ elapsed(seconds) × (ppm ÷ 1,000,000)
For best accuracy, use the exact datasheet spec method (some use peak-to-peak, some use ±, some specify across temperature range).
FAQ
Worst-case vs RSS — which should I use?
Worst-case stacks absolute contributions and is conservative. RSS is often used when error sources are independent and random.
My crystal temperature drift isn’t linear. Is this wrong?
Many tuning-fork and AT-cut crystals have curved temperature behavior. This tool is an estimator—use a slope near your operating point, or treat this as a quick bound.
What does “time error” mean?
If a clock runs fast/slow by X ppm, it accumulates about X microseconds per second. Over long durations it adds up.
Tool Info
Last updated:
Updates may include new presets, tighter validation, and improved edge-case handling.