Tone Generator (Sine, Square, Triangle, Sawtooth)
MediaEverything runs locally in your browser — nothing is uploaded
Volume starts at 30% (full volume through headphones is startling); turn it up as needed. Sound begins only after you press Play — the browser requires the first sound to come from a user action.
⚠️ Sweeps are **exponential** by default: hearing is logarithmic in frequency, so an exponential glide sounds even while a linear one sounds slow at first and rushed later. The volume is faded in and out over 20–50 ms — a hard start would produce a click.
Synthesise a tone in the browser: pick a waveform, enter a frequency (in Hz or as a note name) and press Play. No audio file is involved. Three things are usually missed, and all three are handled here. First, the volume is faded: starting and stopping an oscillator abruptly produces a click, because the waveform is cut mid-cycle, so a 20–50 ms gain envelope removes it. Second, the sweep is exponential: hearing is logarithmic in frequency, so an exponential glide sounds even while a linear one sounds slow at first and rushed later — a difference that matters when checking headphones or hunting for a resonance. Third, the volume starts at 30%: a full-volume 440 Hz sine through headphones is startling. A frequency can be a number (`440`) or a note name (`A4`, `C#5`, `Db3`); the tool shows the corresponding hertz and the nearest note. Below 20 Hz or above 20 kHz it says the tone is inaudible, and below 20 Hz it also warns about woofers. The sound is synthesised by `AudioContext` on the spot — no audio files are loaded and no network requests are made.
Features
- Four waveforms: sine (purest), square, triangle and sawtooth
- Frequency as Hz or as a note name (440 or A4), with the nearest note shown
- Volume starts at 30% (safe through headphones) and can be adjusted live
- Left, right or both channels, handy for checking headphones and speakers
- Exponential sweep from a start to an end frequency, with a set duration
- Auto-stop after a number of seconds; 0 keeps playing until you stop it
- A 20–50 ms fade in and out, removing the click at the start and end
- Below 20 Hz or above 20 kHz it says the tone is inaudible; below 20 Hz it also warns about woofers
- Synthesised entirely in the browser: no audio files, no requests
How to use
- Pick a waveform and enter a frequency (440 or A4)
- Set the volume and channel
- Tick sweep if you want one, and set the start and end frequencies plus the duration
- Press Play; it stops on its own at the auto-stop time, or press Stop
FAQ
- Why fade the volume?
- Starting and stopping an oscillator abruptly makes the waveform jump from a non-zero value to zero (or back), and a speaker reproduces that discontinuity as a click. A fade of 20–50 ms removes it.
- Why is the sweep exponential by default?
- Because hearing is logarithmic in frequency. Sweeping 20 Hz to 20 kHz, an exponential sweep has its midpoint near 630 Hz (the geometric mean) while a linear one has it at 10 kHz (the arithmetic mean) — an order of magnitude apart. Exponential sounds like a steady climb; linear sounds slow at first and rushed later.
- Why start at 30% volume?
- A 440 Hz sine at full volume through headphones is startling and hard on your hearing. Start low and turn it up if you need to.
- Does it download audio or make requests?
- No. The tone is synthesised on the spot by an `AudioContext` oscillator; no audio file is loaded and no request is sent. It works offline.
- What about below 20 Hz or above 20 kHz?
- Both are marked as inaudible. Below 20 Hz in particular can also damage a woofer, so it asks you to lower the volume first.
Related tools
Music Player
WebTurn a few lines of audio URLs into a self-contained player: a native audio element plus a playlist, no dependencies or build step, paste it and it works.
Audio to WAV
MediaConvert MP3 / M4A / FLAC and more to WAV, with an optional sample rate (16k speech, 48k video), mono downmix and peak normalisation. All in the browser.
Trim Audio
MediaCut a section out of an audio file by start and end time, with optional fades to remove the click at the cut. Mark points while previewing, export as WAV.
Video to GIF
MediaTurn part of a video into a GIF with adjustable frame rate, width, colours and looping. Pick the range from the preview; nothing is uploaded.
Video Frame
MediaExport the exact frame at any moment, at the video's own resolution, as PNG, JPEG or WebP. Sharper than a screenshot: no controls, no display scaling.
Lottie Preview
MediaDrop a Lottie JSON to play it: adjustable speed, a scrubbable timeline, plus size, frame rate, duration and handoff checks. Nothing is uploaded.