Convert AMR to WEBA — Free Online Tool
Convert AMR voice recordings to WEBA format, transcoding the narrow-band AMR audio (encoded with libopencore_amrnb at bitrates as low as 4.75 kbps) into a web-optimized Opus stream inside a WebM container. This makes speech recordings originally captured on mobile devices directly playable in modern browsers without plugins.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your AMR file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
AMR (Adaptive Multi-Rate) is a codec purpose-built for compressing human speech at extremely low bitrates — typically 4.75 to 12.2 kbps — using techniques tuned for voice frequencies rather than full-range audio. WEBA is an audio-only WebM container that holds Opus or Vorbis audio, with Opus being the default and preferred choice for web delivery. During this conversion, FFmpeg fully decodes the AMR bitstream using the libopencore_amrnb decoder, producing raw PCM audio in memory, then re-encodes that PCM into an Opus stream at 128 kbps using libopus. This is a full transcode — not a remux — because AMR and Opus are entirely different codecs with no shared bitstream format. The Opus encoder at 128 kbps will reproduce the voice content with significantly more fidelity than the original AMR source, though the final perceptible quality is bounded by what the AMR encoding preserved. The resulting .weba file can be embedded in web pages using a standard HTML5 audio element.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg tool. In the browser-based version of this tool, this runs via FFmpeg.wasm compiled to WebAssembly, executing entirely in your browser with no server involvement. The same command runs identically on a local FFmpeg desktop installation. |
-i input.amr
|
Specifies the input file — an AMR audio file, typically containing narrow-band speech encoded with the libopencore_amrnb codec at one of the standard AMR-NB bitrates between 4.75 and 12.2 kbps. |
-c:a libopus
|
Selects the Opus encoder (libopus) for the audio stream. Opus is the standard codec for WEBA files and is the optimal choice for web delivery, offering excellent speech quality even at low bitrates and native support in all modern browsers. |
-b:a 128k
|
Sets the target audio bitrate to 128 kbps for the Opus output. This is substantially higher than the AMR source bitrate, ensuring no additional quality is lost in the transcode. For voice-only content, you can lower this to 24–32k if file size matters, since Opus is highly efficient for speech at low bitrates. |
-vn
|
Explicitly disables any video stream in the output. Since both AMR and WEBA are audio-only formats, this flag is a defensive measure that ensures FFmpeg does not attempt to pass through or encode a video track, keeping the output a clean audio-only WEBA file. |
output.weba
|
Specifies the output filename and tells FFmpeg to write a WebM-based audio container (.weba). FFmpeg infers from this extension that the container format should be WebM, which is the correct container for Opus audio intended for browser playback. |
Common Use Cases
- Embedding voicemail recordings or voice memos captured on older mobile phones into a web application or CMS that requires browser-native audio formats
- Preparing archived call center recordings stored as AMR files for playback in a browser-based customer support dashboard
- Converting field interview recordings made on feature phones into a web-compatible format for use in an online documentary or journalism project
- Serving voice annotation files — for example, audio comments attached to a document — in a web interface where AMR is not supported by the browser
- Transcoding mobile-originated voice notes into WEBA for use in a Progressive Web App (PWA) that relies on the Web Audio API for playback and processing
- Migrating a library of AMR speech samples from a telecom research project into a format suitable for browser-based annotation and review tools
Frequently Asked Questions
Not in terms of the original source content — AMR is a lossy codec, so any quality lost during the original recording cannot be recovered. However, the WEBA/Opus output at 128 kbps will not add significant further degradation; Opus at 128 kbps is actually overkill for narrow-band speech, meaning the re-encoded file will faithfully reproduce everything the AMR file contained. The conversion raises the ceiling for future processing but cannot restore frequencies the AMR encoder discarded.
AMR operates at bitrates between 4.75 and 12.2 kbps, which is extraordinarily low — it achieves this by discarding everything outside typical speech frequencies. Opus at the default 128 kbps stores far more audio information per second, which is why the file grows considerably. If file size is a concern, you can lower the Opus bitrate in the FFmpeg command using -b:a 32k or even -b:a 24k; Opus remains excellent for speech at those bitrates and will produce a much smaller file while still being browser-compatible.
WEBA with Opus audio is natively supported in Chrome, Firefox, Edge, and Opera. Safari added WebM/Opus support in version 15.4 (released 2022), so modern Safari on macOS and iOS will also play it. If you need to support older Safari versions, consider converting to an MP4/AAC file instead. For most current web deployments, WEBA with Opus is a safe and efficient choice.
AMR files carry minimal metadata — typically just the codec mode header and no embedded tags. WEBA/WebM supports metadata via Matroska-style tags, but since the source AMR file contains almost nothing to transfer, the output will generally have an empty or minimal tag block. If you have title, artist, or date information to attach, you can add it during conversion by appending flags like -metadata title='My Recording' to the FFmpeg command before the output filename.
Replace the -b:a 128k portion of the command with your desired bitrate. For voice content converted from AMR, Opus performs exceptionally well at low bitrates — try -b:a 32k for a compact file that still sounds clear for speech, or -b:a 24k for the smallest reasonable output. The full adjusted command would be: ffmpeg -i input.amr -c:a libopus -b:a 32k -vn output.weba. Dropping below 16k will introduce noticeable artifacts even for speech.
Yes. On Linux or macOS, you can run: for f in *.amr; do ffmpeg -i "$f" -c:a libopus -b:a 128k -vn "${f%.amr}.weba"; done in your terminal. On Windows Command Prompt, use: for %f in (*.amr) do ffmpeg -i "%f" -c:a libopus -b:a 128k -vn "%~nf.weba". This applies the same conversion settings to every AMR file in the current directory, which is practical for processing large archives of mobile voice recordings.
Technical Notes
AMR-NB (narrow-band), the default codec in AMR files, operates on 8 kHz sampled audio using Algebraic Code-Excited Linear Prediction (ACELP), making it highly specialized for the 300–3400 Hz frequency range of human voice. When FFmpeg decodes this through libopencore_amrnb, the output PCM is 8 kHz mono. libopus will internally upsample this to 48 kHz (its native sample rate) before encoding, which is technically lossless upsampling — no new audio information is invented, but the sample rate will reflect 48 kHz in the output container. The -vn flag is included as a safeguard to explicitly discard any video stream, which is appropriate here since AMR is audio-only and WEBA is an audio-only container. Opus supports variable bitrate (VBR) by default when invoked via libopus in FFmpeg, meaning the actual file size may vary slightly from what the target bitrate suggests — this is generally beneficial for speech content. There is no support for multiple audio tracks, subtitles, or chapter markers in either format.