An oscilloscope shows electrical signals (here: audio samples) plotted against time, with controllable horizontal and vertical scaling. As a browser oscilloscope, it runs entirely in the Web Audio API with no plugins or installs required — making it a convenient oscilloscope online for students, hobbyists, and audio engineers alike. The two cornerstone controls are time/div (seconds per horizontal division — sets how much time fits on the screen) and volts/div (amplitude units per vertical division — sets how loud you can see before the trace runs off the top). The standard grid is 10 horizontal × 8 vertical divisions (so a screen at 2 ms/div + 0.5 V/div spans 20 ms wide and ±2 V tall). Each new capture is called a waveform acquisition: the tool fills a buffer of audio samples at the browser's native sample rate (typically 44.1 kHz or 48 kHz) and then renders it to the screen at the chosen time/div scale. The Nyquist limit — half the sample rate — defines the highest frequency the display can represent: at 48 kHz that ceiling is 24 kHz, safely above the top of human hearing. To generate a known test tone and see how it looks on this display, try the online tone generator alongside this tool.
Triggering — why your sine wave stops scrolling
Without a trigger, each new frame starts at an arbitrary point in the signal so a steady tone appears to "scroll" sideways. Edge triggering — the standard mode — locks the display to a specific signal event, freezing the waveform so you can read it:
- Rising / Falling edge — capture starts when the signal crosses your trigger level in the chosen direction
- Auto — try to trigger; if no trigger found within a frame, free-run anyway. The display always updates, but a repetitive signal may scroll if no trigger ever fires.
- Normal — only update the display when the trigger fires. If the signal stops, the display freezes on the last triggered frame.
- Single — like Normal but freezes after one trigger; press the Single button again to re-arm. Ideal for capturing transients or one-off sounds.
Volts / div and the "V" here
This is an audio oscilloscope. The "voltage" axis really shows normalized digital sample value (−1.0 to +1.0 from your audio API). For a real-world voltage measurement you'd need a calibrated audio interface with known gain. The V/div control still functions correctly — it sets how many sample-value units one division of the screen represents. 1.0 V/div with 4 divisions vertical capacity = full-scale visible. The frequency estimate shown in the stats row uses a zero-crossing detection approach: it finds consecutive upward crossings of the trigger level and computes the average period, then takes its reciprocal. For pure tones this is very accurate; for complex signals with multiple harmonics, the pitch detector uses autocorrelation and gives a more reliable fundamental frequency reading.
XY mode (Lissajous figures)
XY mode plots CH1 on the horizontal axis instead of time, and CH2 on the vertical axis. The shape that emerges is a Lissajous figure — a visual map of the phase and frequency relationship between the two signals. Examples:
- Same frequency, in phase — 45° straight line through origin (top-right to bottom-left)
- Same frequency, 90° phase shift — circle
- Same frequency, 180° (anti-phase) — 45° straight line in the other direction
- Different frequencies — closed loops; the number of "lobes" along each axis reveals the integer frequency ratio (3:2 ratio = 3 lobes wide / 2 tall, etc.)
- Random or unrelated — fuzzy noise; no Lissajous pattern
XY mode is the classic way audio engineers check stereo phase coherence: a healthy stereo mix forms a tall vertical ellipse, a mono signal collapses to a 45° line, and a phase-inverted signal becomes a horizontal line. If you suspect a cable polarity swap or a phase cancellation problem in a stereo recording chain, plugging the output into your sound card line-in and watching the XY display is a quick first diagnostic.
Cursors and measurements
The cursor system places two vertical lines (X1, X2) and/or two horizontal lines (Y1, Y2) on the screen. The tool reads out the delta-time (Δt) between the X cursors and the delta-voltage (Δv) between the Y cursors — letting you measure period (place X cursors on consecutive peaks, then period = Δt and frequency = 1/Δt), pulse width, amplitude, overshoot, and more. Click anywhere on the screen to place the nearest unset cursor; subsequent clicks cycle through the four cursors.
How is this different from the Waveform Visualizer?
The Waveform Visualizer is a friendly single-channel viewer with file-mode and basic trigger. This Oscilloscope is the instrument-style version: two channels overlaid, XY Lissajous mode for phase analysis, time/div + volts/div + cursor system + Normal/Single trigger modes, all matching what you'd find on a Tektronix or Rigol scope. Use the visualizer for casual viewing; use this for measurement and stereo-phase work.
Why are CH1 and CH2 showing the same signal?
Your microphone is mono. Most laptop built-in mics and USB headsets are single-channel. The audio API up-mixes mono input to stereo by duplicating the signal — so both CH1 and CH2 see the same data, and the XY plot collapses to a 45° diagonal line. To get two truly independent channels you need a stereo audio interface or a USB input where left and right carry different signals (a stereo line-in cable from another device, for instance).
Why is the trigger not catching anything?
Three common reasons. (1) The trigger source is the wrong channel — check Trigger Source = CH1 or CH2 to match the channel that has signal. (2) The trigger level is set higher than your signal's peak — lower it toward 0 or set it to where you can see the signal actually crosses. (3) Trigger Slope is rising but your signal only crosses your level going down (or vice versa). Switch slope or set trigger mode to Auto so the display keeps refreshing even without a valid trigger.
What's a Lissajous figure?
A Lissajous figure is the closed curve traced when one sinusoidal signal drives the X axis and another drives the Y axis. For two signals at the same frequency, the shape depends on their phase difference: 0° = diagonal line, 90° = circle, 45° = ellipse, 180° = opposite-direction diagonal. For different frequencies the figure is a closed loop with a number of lobes equal to the frequency ratio (a:b frequency ratio gives a lobes along Y, b lobes along X). Named after Jules Antoine Lissajous (1857). Stereo audio mixing engineers use Lissajous patterns as a phase-coherence check.
How accurate is the frequency estimate?
The on-screen frequency estimate uses the trigger-period method: the time between consecutive trigger events (or between zero-crossings in Auto mode) gives the signal period; reciprocal = frequency. Accuracy is roughly ±1 sample period (~21 µs at 48 kHz), giving fractional accuracy that improves at lower frequencies (e.g., ±0.04% at 1 kHz). For complex multi-tone signals this method picks the lowest dominant frequency. Use the dedicated Pitch Detector or Frequency Detector tools for autocorrelation-grade pitch tracking.
Can I use cursors in XY mode?
In XY mode the X axis is CH1 voltage (not time), so the "Δt" cursors become "ΔX-voltage" (CH1 amplitude difference). The Y cursors still read voltage (CH2 amplitude difference). The Δt readout reflects the CH1 voltage difference instead — the tool's cursor labels stay the same so the math is consistent, just interpret accordingly. Useful for measuring Lissajous ellipse axes.
Why is "voltage" in quotes?
The Web Audio API returns audio samples as floats in the range [−1.0, +1.0] representing normalized digital amplitude — not real volts. A microphone with low gain reading speech might give samples around ±0.05; the same speech with high gain might give ±0.5. The "V/div" control still scales the display correctly relative to those normalized units, so all measurements (Δv, peak-to-peak, RMS) are valid relative numbers, just not calibrated to physical voltage. To get real volts you'd need a known audio interface gain and a hardware preamp calibration.
What sample rate does the browser oscilloscope use, and what is the highest frequency it can display?
The tool uses whatever sample rate the Web Audio API negotiates with your audio hardware — typically 44,100 Hz or 48,000 Hz. The Nyquist limit is half the sample rate, which means at 48 kHz the highest representable frequency is 24 kHz — safely above human hearing. In practice, microphone capsules and USB interfaces often roll off well before 20 kHz, so the real upper limit is set by your hardware, not the browser. At the fastest time/div (0.5 ms/div = 5 ms total window), you can comfortably visualize waveforms up to about 2–3 kHz per cycle on screen; zoom out with slower time/div values to see very low frequencies.
How do I measure the period and frequency of a waveform using the cursors?
Set Cursors to “Time (vertical Δt)”, then click once on the scope screen to place the first vertical cursor (X1) on a peak or a rising zero-crossing. Click again to place X2 on the next identical point exactly one cycle later. The cursor readout shows Δt — that value is the waveform period in milliseconds. Frequency = 1 ÷ period: for example, Δt = 2 ms means 500 Hz. For a steadier result, use Normal trigger mode with a well-set trigger level so the waveform is locked and not drifting between clicks.
Can I use XY mode to check for stereo phase or polarity problems in an audio cable or interface?
Yes — XY (Lissajous) mode is one of the fastest ways to diagnose a stereo phase or polarity issue. Feed a mono signal (speech or a sine tone) into both channels of a stereo interface. If both channels are in phase and polarity-correct, the Lissajous display shows a 45° line from bottom-left to top-right. If one channel has reversed polarity (a wiring swap), the line flips to bottom-right to top-left (180°). A partial phase shift — from cable capacitance, a mis-aligned track splice, or a DAW routing error — shows as an ellipse or circle. This is the same diagnostic technique used in broadcast and live-sound to catch accidental phase inversions before they cause cancellation.
What is the practical difference between Auto, Normal, and Single trigger modes?
Auto mode is the most forgiving: the display refreshes even when no trigger fires, so you always see something moving — good for exploring an unknown signal or when the signal is intermittent. Normal mode only draws a new frame when the trigger conditions are met; if no trigger fires the screen holds its last frame, making it ideal for watching a steady repetitive signal without any distracting re-locks. Single mode arms for exactly one trigger event and then freezes — use it to capture a transient, a single drum hit, or a one-off event you want to examine without the display being overwritten. Press the Single button again (or re-arm via the arming button) to wait for the next event.