Home / Science / Engineering / Signal processing / Wavelet transform viewerTool #631

Wavelet transform online: Morlet scalogram (CWT) and Haar or Daubechies decomposition (DWT)

Paste or open a signal and see which frequencies are present at each moment with a continuous Morlet wavelet scalogram, and split it into detail and approximation levels with a Haar or Daubechies discrete wavelet transform. Matches PyWavelets; CSV downloads; nothing is uploaded.

Keep it one tap away for everyday use.

Bookmark Wavelet transform viewer?

Press Ctrl + D now. Your browser opens its own bookmark box, where you choose the name and folder.

  1. Signal
  2. Scalogram
  3. Levels
  4. Download
Nothing is uploadedWorks offline once open

Signal

Two columns (time in seconds, value) or one column of values with the sample rate. Samples must be evenly spaced. The example is made up: 8 Hz, then 25 Hz, with a click at 0.5 s. Up to 8,192 values.

Continuous wavelet transform (scalogram)

Each row is the signal compared with a Morlet wavelet (a short wave packet) stretched to one frequency; bright means that frequency is strong at that time. A larger bandwidth B gives sharper frequencies but blurrier times. Frequencies are spaced evenly on a log scale. The shaded edges are the cone of influence, where the wavelet runs off the end of the record and the values are less trustworthy.

Discrete wavelet decomposition

Each level splits the signal into a smooth half (approximation) and a detail half with a pair of filters, then splits the smooth half again. D1 holds the fastest changes (fs/4 to fs/2), each next level an octave lower; the last approximation holds the slow trend. Daubechies D4 is the 4-tap filter often called "Daubechies-4"; PyWavelets calls it db2. Its db4 has 8 taps.

Download

What it does

A Fourier spectrum tells you which frequencies a signal contains, but not when. Wavelets answer both. This viewer gives two views of a signal you paste or open:

  • A scalogram from the continuous wavelet transform (CWT) with a Morlet wavelet: time across, frequency up, brightness for how strong each frequency is at each moment. It shows a machine changing speed, a bird call sweeping up, a heartbeat speeding up or a short click hidden in a steady tone.
  • A multilevel discrete wavelet transform (DWT) with the Haar or Daubechies wavelets: the signal split into detail levels D1, D2, … (each an octave of frequencies, fastest first) and a final smooth approximation. This is the transform behind denoising, compression (JPEG 2000) and many feature-extraction methods.

Everything runs in your browser; the numbers match the PyWavelets library.

How to use it

  1. Paste or open your signal: time and value columns, or one column of values plus the sample rate. The samples must be evenly spaced.
  2. Scalogram: choose the wavelet and the frequency range. The complex Morlet wavelet gives a smooth picture of the strength (magnitude). Its bandwidth B trades time detail against frequency detail: B = 4 separates close frequencies better, B = 0.5 pins down short events better. The real Morlet (pywt “morl”) shows the oscillation itself, so the picture has stripes. Choose 32, 64 or 96 frequency rows, and magnitude or power (magnitude squared) for the colour.
  3. The cone of influence is shaded at both ends: there, the wavelet reaches past the start or end of the record, so values are lower than they should be.
  4. Decomposition: choose Haar (the simplest, a step), Daubechies D4 (4 taps, PyWavelets db2) or db4 (8 taps, smoother), how the edges are handled (mirror or wrap round), and the number of levels. The table gives each level’s frequency band, its number of coefficients and its share of the signal’s energy.
  5. Download the scalogram (CSV, one row per frequency), all the DWT coefficients (CSV), or the report as an image, PDF or Word file.

Worked example

The made-up example is 2 seconds sampled at 200 Hz: an 8 Hz wave for the first second, then a 25 Hz wave, with a short click at 0.5 s. The scalogram shows a bright band near 8 Hz that stops at 1 s, a band near 25 Hz after it, and the click as a thin vertical streak reaching up to high frequencies. The strongest point is at 7.69 Hz, 0.64 s (the nearest of the 64 frequency rows to 8 Hz). In the db4 decomposition with 5 levels, D3 (12.5 to 25 Hz) holds 34.6 % of the energy and D4 (6.25 to 12.5 Hz) 35.8 %, the click shows as a spike in D1 and D2, and the approximation A5 holds 18.7 %.

FAQ

Is “Daubechies-4” db2 or db4? Both names are used. Many textbooks call the 4-coefficient filter D4; PyWavelets and MATLAB call it db2 and use db4 for the 8-coefficient filter. Both are offered and labelled with their tap counts.

Do the numbers match PyWavelets? Yes. The CWT is computed the same way as pywt.cwt (integrated wavelet resampled for each scale, precision 2¹²), and the tests compare coefficients at several scales to 8 significant figures; the DWT matches pywt.wavedec in both edge modes.

Why do frequencies not land exactly on my tone? The rows are spaced on a log scale between your lowest and highest frequency. Narrow the range or add rows for finer steps.

How is scale linked to frequency? Frequency = centre frequency of the wavelet ÷ (scale × time step). The complex Morlet used here has a centre frequency of 1; the real Morlet 0.8125.

Where the numbers come from

  • Continuous wavelet transform with the Morlet wavelet and the cone of influence: Torrence and Compo (1998), A practical guide to wavelet analysis, Bulletin of the American Meteorological Society 79, 61 to 78. Discrete wavelet transform and the Daubechies filters: Daubechies (1992), Ten Lectures on Wavelets; Mallat (1989).
  • Computed the same way as the open-source PyWavelets library (MIT licence) and checked against PyWavelets 1.8 (pywt.cwt, central_frequency, wavedec, dwt_max_level), used only for testing; the filter coefficients are the wavelets' defining mathematical constants.
  • Colour scale: stops of the viridis colour map (matplotlib, CC0).
  • The example signal is made up by fibub.

Standard scientific values, such as constants, atomic weights and melting points, are facts found in every textbook; we name where ours were checked. If you are an author or publisher and want a value, a credit or a table changed or removed, tell us and we will act quickly.

Last updated 2026-11-09.

Related tools

Light curve period finder #48 Paste times and brightness measurements, even with gaps and uneven spacing, and find the period with a Lomb-Scargle periodogram, false alarm probabilities, alias checks and a folded light curve. FFT workbench #628 Paste or open a signal (time and value, or values and a sample rate) and get its amplitude or power spectrum with a Hann, Hamming, Blackman or no window, a list of peaks, and a simple FFT low-, high- or band-pass filter back to time. CSV downloads; nothing is uploaded. FIR/IIR filter designer #629 Design a low-pass, high-pass, band-pass or band-stop digital filter: FIR by the window method (Hamming, Hann, Blackman, Kaiser) or IIR Butterworth and Chebyshev type I by the bilinear transform. See the gain, phase and group delay, the poles and zeros, and copy the coefficients as C arrays, second-order sections or CSV. Sampling and aliasing explorer #630 Type a signal frequency and a sample rate and see what the samples really record: the apparent (alias) frequency, the Nyquist zone, the alias sine drawn through the samples, a folding diagram and the ideal sinc reconstruction. Includes the wagon-wheel effect and audio examples. 1D Schrödinger solver #923 Choose a textbook potential, type a formula or draw your own, and get the lowest energy levels and wavefunctions of the one-dimensional Schrödinger equation by the matrix (finite-difference) method, with the exact levels alongside for the box, harmonic oscillator, finite well, Morse, linear and Pöschl–Teller potentials. Adduct and neutral loss calculator #984 Type a formula or a neutral monoisotopic mass and get the m/z of 25 common electrospray adducts in positive and negative mode, the ions left after common neutral losses (water, ammonia, CO2, sugars, phosphate and your own), and match a list of observed m/z values within a ppm tolerance. With no molecule, it turns observed m/z values into candidate neutral masses.