Record audio from microphone directly in browser. Real-time waveform visualization, pause/resume, and export to multiple formats (MP3, WAV, OGG). No software installation required.
Record audio straight from your microphone in the browser. Hit record, speak or play, and stop when you are done. The recording saves locally and you can download it as MP3, WAV, or OGG. No software installation, no cloud, just a simple, private recorder.
Initializing in your browser…
Generate beautiful waveform visualizations from audio files. Choose from bars, mirror, line, or circular styles. Customize colors and export as PNG.
Convert text to speech using browser Web Speech API. Choose from multiple voices, adjust speed and pitch, and play audio directly.
Generate pure audio tones with sine, square, sawtooth, and triangle waveforms. Create multiple oscillators, binaural beats, and export as WAV.
You need to capture a quick microphone note and download it as a file, no app.
Input
Microphone · record 0:38 · stop
Output
recording.webm/wav, 0:38, ready to download
Capture uses the browser’s microphone API and writes the audio locally for download, nothing is streamed to a server. It is the fastest path from "I need to record this" to a usable file.
Record audio straight from your microphone in the browser. Hit record, speak or play, and stop when you are done. The recording saves locally and you can download it as MP3, WAV, or OGG. No software installation, no cloud, just a simple, private recorder.
Pick your microphone in Recording Settings, optionally arm the 3-second countdown, hit Start, and speak. Stop, set Output Format to MP3, and download a libmp3lame file re-encoded from the WebM capture entirely in your browser.
Record a take, open Trim Recording, drag the start/end sliders (0.01s resolution) around the part you want, Apply Trim, then download as WAV to feed a clean 16-bit PCM clip into a BPM or transcription tool.
The Audio Recorder captures your microphone through the browser's getUserMedia API and records with MediaRecorder using the audio/webm;codecs=opus profile (falling back to plain audio/webm if Opus isn't supported, checked via MediaRecorder.isTypeSupported), collecting data in 100 ms chunks (mediaRecorder.start(100)) so pause and resume work cleanly. While you record, an AnalyserNode with an fftSize of 256 drives a live 32-bar waveform (the first 32 frequency bins) plus a volume meter that turns green below 30%, yellow up to 70%, and red at or above 70% so you can watch your input level before a take. The Recording Settings panel lets you pick a specific input from the devices returned by enumerateDevices, arm a 3, 5, or 10 second countdown before capture starts, and set a maximum duration with a slider that runs from 0 (Unlimited) to 300 seconds in 10 second steps, after which recording stops automatically with a toast.
Because browsers can only record Opus-in-WebM natively (they cannot encode MP3 or WAV directly), the MP3, WAV, and OGG download options are produced by re-encoding the captured WebM in your browser with FFmpeg compiled to WebAssembly (the convertAudioFormat helper). That conversion runs a plain ffmpeg -i input output command, letting FFmpeg pick the default encoder and bitrate for the chosen container (libmp3lame for .mp3, libvorbis for .ogg, and pcm_s16le 16-bit PCM for .wav) rather than forcing a specific rate. If a recording is tiny (under 100 bytes) or the conversion throws or returns an empty file, the tool falls back to handing you the original WebM rather than an empty file, and every download filename is timestamped from the current ISO time. The optional trim step also runs through FFmpeg (the trimAudio helper): it re-encodes the selected start-to-end region back to an intermediate WebM with libopus at 128 kbps so it can still be converted to your chosen format on download, with the trim sliders stepping at 0.01 second resolution.
Everything from capture to encoding happens on-device; the audio never leaves your machine, and FFmpeg loads from local WebAssembly files under /ffmpeg (with an unpkg CDN fallback) rather than a server upload. One practical consequence of the WebM source is that MediaRecorder files frequently report an Infinity duration, so the player and trim range fall back to a duration computed from the recording's own start/pause timestamps (Date.now() minus start minus total paused time). The tool only records the microphone selected through getUserMedia, so it cannot capture system or tab audio without an OS-level loopback device, and a denied permission or missing microphone surfaces a specific NotAllowedError or NotFoundError toast instead of failing silently.
Entirely in your browser. Nothing is uploaded. The file exists only on your device until you close the page or download it.
Browser security restricts direct system audio capture. You can record system audio if your OS supports a loopback device that appears as a microphone input.
Audio is decoded and processed locally with the Web Audio API. Your files are never uploaded to a server.