HOW-TO GUIDE

Why Is My Oscilloscope Frequency Reading Unstable?

An oscilloscope frequency reading is unstable, or shows "?" or "****", when the scope cannot find clean, repeatable edges to time: the trigger is not locking, noise near the measurement threshold is being counted as extra edges, the screen holds less than one cycle or so many cycles that each one gets only a few samples, or the measurement is pointed at the wrong channel. Once those are fixed, a small, steady wobble in the last digit is normal, and anything larger is often the signal itself drifting or being modulated. This guide shows how to tell which, with the arithmetic to judge how much variation is acceptable.

By the OhmSavvy Research Team ·

Keysight EDUX1052G two-channel oscilloscope with built-in generator
Some scopes add a dedicated frequency counter alongside waveform measurements. See how one compares in Keysight EDUX1052G vs Rigol DS1054Z.

How the Freq readout works

An automatic frequency measurement does not "listen" to the signal the way a radio does. In most scopes it takes the captured record, finds the points where the waveform crosses a reference level, usually 50% of the way between its top and base, measures the time between matching crossings to get the period T, and reports f = 1 ÷ T. Everything that makes those crossings unclear, inconsistent or too few makes the reading jump or turn into dashes. Some scopes also have a separate hardware counter that counts edges from the trigger circuit over a fixed gate time, which behaves a little differently and is covered at the end.

  1. 01

    Capture

    Trigger fires, record stored

  2. 02

    Find top and base

    Sets the 50% threshold

  3. 03

    Find crossings

    Rising edges at the threshold

  4. 04

    Time them

    Period T between crossings

  5. 05

    f = 1 ÷ T

    Shown, then the next capture

Because the period is what is measured, it helps to think in periods. Frequency and period are reciprocals: f = 1 ÷ T and T = 1 ÷ f. A 16 MHz clock has T = 1 ÷ 16,000,000 = 62.5 ns. A small relative error in T becomes the same relative error in f, so a 1 ns misjudged edge on that clock is 1 ÷ 62.5 = 1.6% of the period, and the reading moves from 16.0 MHz to 1 ÷ 61.5 ns ≈ 16.26 MHz. That is why fast signals at modest sample rates show the most jumpy readings.

Causes, checks and fixes

SymptomLikely causeHow to checkFix
Reading jumps and the trace slides sidewaysTrigger not lockingIs the trigger status Trig'd or Auto?Set source, level inside the signal, Normal mode
Reading roughly double, or random high valuesNoise causing extra threshold crossingsZoom in on an edge and look for wigglesNoise or HF reject, BW limit, larger signal, averaging
**** or ? instead of a numberLess than one full cycle on screenCount cycles across the 10 divisionsSlow the timebase until 2 to 10 cycles fit
Erratic reading with hundreds of cycles on screenToo few samples per cycle in the measured recordDivide displayed sample rate by signal frequencyFaster timebase so fewer cycles fit
Wrong or jumping value at slow time/div onlyLow sample rate, possible aliasingRead the sample rate on screenFaster timebase, deeper memory
Low-frequency reading drifts or vanishesAC coupling near its cutoffCheck channel couplingUse DC coupling
Plausible but wrong number, or noise-like valuesMeasurement on the wrong channelCheck the measurement's source labelSet the source to the probed channel
Small, steady wander that tracks temperature or loadThe signal really variesUse statistics: mean, min, max, std devJudge against the oscillator's tolerance

1Get a stable trigger first

A trace that slides or flickers sideways gives every capture a different set of edges, and some captures catch partial or misaligned cycles. Fix the picture before trusting any number. Set the trigger source to the channel you are measuring, put the level about halfway up the signal, choose a rising edge, and use Normal mode once the level is right so the scope only draws captures that actually triggered. If the trace still will not settle, work through how to stop a waveform drifting, and if the scope never triggers at all, see why an oscilloscope trigger is not working.

2Check the measurement is on the right source

Automatic measurements are attached to a source channel that you pick when you add them, and it does not follow the probe. If you move the probe from CH1 to CH2, the Freq readout may still be timing CH1, which is now an unconnected input producing noise and random values. Look at the label beside the reading (often "Freq(1)" or a colored channel tag) and set it to the probed channel. If a channel shows nothing at all, check why there is no signal on one channel. If the measurement is on a math trace, make sure the math output actually crosses its threshold.

3Put the right number of cycles on screen

With less than one complete cycle visible, there are not two matching crossings to time, so the scope shows dashes or a question mark. Go too far the other way and the reading can become erratic too: if the screen holds hundreds of cycles, each cycle is covered by very few points, especially on scopes that compute measurements from a reduced display record rather than the full memory. As an example, if a measurement worked from about 1,000 points and the screen held 500 cycles, each cycle would get only 1,000 ÷ 500 = 2 points, too few to place an edge.

0.6 cycleFreq ****4 cyclesstable60 cycleserratic
Left: under one cycle across the screen gives no complete period to time. Center: about four cycles, the sweet spot. Right: so many cycles that each is a few pixels wide and edges cannot be placed accurately. Illustrative screens.

Aim for roughly two to ten cycles across the ten divisions. For a signal of frequency f, time/div ≈ cycles wanted ÷ (10 × f). For four cycles of a 25 kHz signal: 4 ÷ (10 × 25,000) = 16 µs/div, so the nearest standard setting of 10 µs/div (2.5 cycles) or 20 µs/div (5 cycles) both work.

4Stop noise from double-counting edges

On a fast, clean edge the signal passes through the threshold once. On a slow edge with noise riding on it, the trace can cross the threshold several times in quick succession, and a scope without enough hysteresis counts each crossing as a new edge. The measured period then becomes a fraction of the real one and the frequency reads double, triple or randomly high.

1 count with hysteresisHysteresis bandThreshold (50% level)2 threshold crossings without hysteresis: one edge counted 2 times
A slow rising edge with noise. Every red dot is a separate crossing of the bare threshold; with a hysteresis band the measurement re-arms only after the signal leaves the band, so the edge is counted once. Illustrative.

You can estimate how wide the danger zone is. The slope of a sine wave at its zero crossing is 2π × f × A, where A is its peak amplitude. A 1 kHz sine with A = 0.5 V rises at 2π × 1,000 × 0.5 ≈ 3,140 V/s, or 3.14 mV per microsecond. With 20 mV of peak-to-peak noise on it, the trace sits within the noise of the threshold for about 20 ÷ 3.14 ≈ 6.4 µs on every edge, plenty of time for several false crossings. Double the amplitude and that window halves; a square wave's fast edges barely have one at all.

Fixes, roughly in order: make the signal fill more of the screen vertically so the scope's threshold logic has more resolution; turn on noise reject or HF reject in the trigger menu, which adds hysteresis or filtering to the trigger path; switch on the bandwidth limit if the signal is slow enough to pass through it; and add averaging. Shortening the probe ground and using a 10x probe also remove a lot of pickup, as explained in why an oscilloscope waveform looks noisy.

5Check the sample rate at slow timebases

The time resolution of a waveform measurement is set by the interval between samples. At 1 GSa/s samples are 1 ns apart; at 250 MSa/s they are 4 ns apart. Without interpolation, one sample of error on a single 1 µs period is 1 ÷ 1,000 = 0.1% at 1 GSa/s but 4 ÷ 1,000 = 0.4% at 250 MSa/s. Most scopes interpolate between samples, so real results are usually better, but the principle holds: fewer samples per period means a coarser, jumpier reading.

SignalPeriodSample intervalSamples per periodOne-sample error
10 kHz100 µs1 ns (1 GSa/s)100,0000.001%
1 MHz1 µs1 ns (1 GSa/s)1,0000.1%
1 MHz1 µs4 ns (250 MSa/s)2500.4%
16 MHz62.5 ns4 ns (250 MSa/s)15.66.4%
16 MHz62.5 ns1 ns (1 GSa/s)62.51.6%

Worst-case resolution for a single-period measurement with no interpolation; illustrative arithmetic, not any one scope's specification. Remember that at slow time/div settings a scope reduces its sample rate to fit the window into memory, and turning on more channels can divide the maximum rate on many models. If the reading only goes wrong at slow timebases, check the sample rate shown on screen; if it has fallen below about twice the signal frequency, the scope is measuring an alias. What GSa/s means covers the memory and sample-rate trade-off in more depth.

6Use DC coupling for low-frequency signals

AC coupling puts a capacitor in the input path, forming a high-pass filter whose cutoff is typically a few hertz to around 10 Hz, depending on the scope. Signals near that cutoff are attenuated and phase shifted, so the waveform drifts up and down as its content changes and its crossings of the 50% threshold wander. Pulse trains are affected even at higher frequencies: AC coupling centers the average on zero, so when the duty cycle changes, the whole trace moves and the measured edges move with it. For anything below a few hundred hertz, and for pulses whose duty cycle varies, switch the channel to DC coupling.

7Average the reading and use statistics

Once the setup is right, use the measurement statistics view (mean, minimum, maximum and standard deviation) instead of staring at a single live number. Averaging independent readings shrinks the random part of the spread by the square root of the number averaged. If single readings of a 10 kHz signal scatter with a standard deviation of 40 Hz (0.4%), the mean of 16 readings has a standard deviation of about 40 ÷ √16 = 10 Hz (0.1%), and of 100 readings about 40 ÷ 10 = 4 Hz (0.04%).

1 reading
±40 Hz (0.4%)
Mean of 4
40 ÷ √4 = ±20 Hz
Mean of 16
40 ÷ √16 = ±10 Hz
Mean of 64
40 ÷ √64 = ±5 Hz

Spread (one standard deviation) of a 10 kHz frequency reading as more readings are averaged, starting from an illustrative ±40 Hz. Measuring across several periods on one capture helps the same way: a 1 ns timing error spread over ten 1 µs periods is 1 ÷ 10,000 = 0.01% instead of 0.1%. Averaging only removes random scatter, not a systematic error such as double-counting or a wrong source, so fix those first.

Measuring frequency on mains-powered circuits

Frequency checks often lead people to the mains side of a power supply or motor controller. A bench scope's probe ground clip is connected to mains earth through its power cord, so clipping it to a mains-referenced or high-voltage point creates a short through the probe and the scope, which can destroy both and can hurt you. Never defeat the scope's earth to get around this. Use a rated differential probe or an isolated-input instrument, check the probe's voltage and CAT rating, and leave mains-side work to a qualified electrician if you are unsure. For checking the grid frequency itself, see how to measure mains frequency safely.

How much variation is normal?

After the setup is fixed, some movement may be the signal itself. Oscillators are only as stable as their timing element, and some signals are deliberately varied. Compare the spread you see with the typical tolerance of the source; the figures below are typical published ranges and vary by part, so check the datasheet for the exact component in your circuit.

Quartz crystal oscillator
±10–50 ppm (≤0.005%)
Spread-spectrum clock
often ~0.5% swept
Ceramic resonator
around ±0.5%
MCU internal RC oscillator
roughly ±1–2% or more
555 or RC oscillator
several %, drifts

Bars use a logarithmic scale: each step is ten times the last.

Typical frequency tolerance by oscillator type, in parts per million (log scale); upper end of each range shown. Worked examples: a 16 MHz crystal at ±50 ppm may sit anywhere within 16,000,000 × 50 ÷ 1,000,000 = ±800 Hz, so a reading of 16.0006 MHz is perfectly normal, while 16.3 MHz is not a crystal tolerance issue. A 16 MHz ceramic resonator at ±0.5% may be ±80 kHz off. A microcontroller's internal 8 MHz RC oscillator at ±2% may read anywhere from 7.84 to 8.16 MHz and drift as it warms up.

Signal typeVariation you may seeNormal?
Crystal-clocked MCU or logic clockLast one or two digits flickerYes, resolution flicker
Crystal clock reading off by several %Steady but wrongNo: wrong harmonic, wrong source or double-counting
Spread-spectrum clock (PCs, some SoCs)Reading wanders by a fraction of a percentYes, the clock is swept on purpose
RC oscillator, 555 timer, internal MCU clockDrift of a percent or more with temperature and supplyUsually yes
FM, FSK or PWM with ditheringLarge, regular jumpsYes, the signal is modulated
Mains-derived signalsSmall slow wander around 50 or 60 HzYes, grid frequency moves slightly with load

To see real variation edge by edge rather than as a jumpy number, trigger on one edge and watch a later edge spread with persistence on, or use period statistics; the method is in how to compare clock jitter. For crystals specifically, see how to check a crystal oscillator.

Hardware counter vs waveform measurement

A waveform-based Freq measurement times the crossings in one capture, so its resolution depends on the sample interval, the number of periods on screen and any interpolation. On a clean signal with several cycles visible it is commonly good to a fraction of a percent, which is plenty for checking that a PWM, a UART clock or an oscillator is in the right place.

Some scopes also include a hardware frequency counter that counts trigger events over a gate time, often displaying five or six digits. A counter that gates over 100,000 cycles of a 1 MHz signal sees a 0.1 s window, and a one-count uncertainty over that window is 1 ÷ 100,000 = 0.001%, far finer than one capture can resolve. Its absolute accuracy is then limited by the scope's own timebase reference, which on general-purpose scopes is commonly specified in tens of parts per million; check your model's datasheet for the exact figure. Because the counter works from the trigger comparator, it still needs a clean, stable trigger, and noise causes the same double-counting.

Waveform Freq measurementHardware counter
Works fromCrossings in one captured recordTrigger events over a gate time
Typical resolutionFraction of a percent, better with more cyclesFive or six digits on many scopes
Main limitSample interval, cycles on screen, noiseTimebase reference accuracy, often tens of ppm
Best forQuick checks while viewing the waveformTuning, calibration, small drifts

For the hand method of reading frequency from the graticule and cross-checking the automatic value, see how to measure frequency with an oscilloscope.

In short

Fix the trigger, confirm the source channel, and fit two to ten cycles on screen at a healthy sample rate with DC coupling. Then suppress noise near the 50% threshold and use statistics instead of the live digit. Remember Δf ÷ f ≈ ΔT ÷ T: a 1 ns timing error on a 62.5 ns period is 1.6%. Variation that remains and matches the oscillator's tolerance, such as ±50 ppm on a crystal, is the signal, not the scope.

Scopes with dedicated frequency counters or headroom for timing work

Keysight EDUX1052G oscilloscope
Keysight EDUX1052G

Two 50 MHz channels at 1 GSa/s on all channels, with a frequency counter and built-in 20 MHz generator.

Siglent SDS1102CML+ oscilloscope
Siglent SDS1102CML+

100 MHz, two channels, 1 GSa/s, with a 6-digit frequency counter; memory is shallow.

Rigol DS1054Z oscilloscope
Rigol DS1054Z

Four channels, 50 MHz, 1 GSa/s on one channel (250 MSa/s with three or four on). Hands-on tested by OhmSavvy.

As an Amazon Associate I earn from qualifying purchases. Prices and availability are shown on Amazon.

Frequently asked questions

What does **** or ? mean in an oscilloscope frequency measurement?

It means the scope could not calculate a valid value from the current capture. The usual reasons are less than one full cycle on screen, a signal too small or too far off-screen to find the threshold crossings, or a measurement pointed at a channel with nothing on it. Set the timebase so two to ten cycles fit on screen, fit the signal vertically, and check the measurement source.

Why does my oscilloscope show double the real frequency?

It is usually counting each edge twice. On a slow or noisy signal, noise makes the trace wiggle back and forth through the measurement threshold, so the scope sees two or more crossings per real edge. Turn on noise reject or HF reject, use a bandwidth limit for slow signals, raise the signal to fill more of the screen, or add averaging so stray crossings stop corrupting the period.

How accurate is an oscilloscope frequency measurement?

It depends on the method. Readings computed from the captured waveform are limited by sample interval and how many cycles are measured, and on a clean signal with several cycles on screen they are often good to well under 1%. A dedicated hardware counter, where fitted, typically shows five or six digits and is limited mainly by the scope's timebase reference, often specified in tens of parts per million.

Is it normal for the frequency reading to change in the last digit?

Yes. A displayed value flickering between 1.0002 kHz and 0.9998 kHz is a swing of about ±0.02%, which is normal resolution flicker for a waveform-based measurement. Use the statistics or averaging function to see the mean and spread. Variation of several percent is not resolution noise; it points to a trigger, noise or setup problem, or a signal that genuinely varies.

Should I use an oscilloscope or a frequency counter to measure frequency?

For checking that a clock, PWM or oscillator is roughly right, the scope's measurement is fine and lets you see the waveform at the same time. For calibrating an oscillator, tuning a crystal to parts per million or logging slow drift, a dedicated counter or a scope's built-in hardware counter with a good timebase reference is the better tool, because it gates over many cycles.

Why is my oscilloscope frequency reading unstable on mains or very low frequencies?

Low-frequency signals are easily affected by AC coupling, which attenuates and shifts anything near its cutoff of a few hertz, and by slow timebases, where the scope samples slowly and updates rarely. Use DC coupling, enough time per division to fit at least two cycles, and averaging. For mains-derived signals, line triggering also steadies the display.

Where to go next

More oscilloscope guides and reviews

Product reviews

View all 4 reviews →