Compress AMR Online — Free File Size Reducer
Compress AMR audio files by re-encoding them with the libopencore_amrnb codec at a lower bitrate, reducing file size while preserving the speech-optimized characteristics of the Adaptive Multi-Rate format. This is ideal for trimming voice recordings or telephony audio to the minimum bitrate your use case requires — down to 4750 bps.
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-to-AMR compression works by decoding the existing AMR bitstream and re-encoding it using the libopencore_amrnb codec at a specified target bitrate. Unlike a simple container remux, this is a full transcode: the audio is decoded to PCM and then re-encoded using one of AMR's fixed Mode Request (MR) bitrate levels. The default output bitrate in this tool is 12200 bps (AMR-NB's maximum), but you can lower it to values like 4750 or 5900 bps to significantly shrink file size. Because AMR is a lossy codec, re-encoding introduces a second generation of lossy compression — the lower the target bitrate, the more aggressive the speech compression artifacts will be. AMR-NB operates on 8 kHz mono audio, so any stereo or wideband content will be downmixed and resampled to match the format's constraints.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg command-line tool, which handles all decoding, encoding, and stream processing. In the browser version of this tool, FFmpeg runs via WebAssembly (ffmpeg.wasm) with no server upload required. |
-i input.amr
|
Specifies the input AMR file. FFmpeg detects the AMR container and automatically selects the appropriate decoder (libopencore_amrnb for AMR-NB or libopencore_amrwb for AMR-WB) based on the file's header magic bytes. |
-c:a libopencore_amrnb
|
Instructs FFmpeg to encode the audio stream using the libopencore_amrnb encoder, which implements the AMR Narrowband codec (3GPP TS 26.071). This produces an AMR-NB output constrained to 8 kHz mono audio. |
-b:a 12200
|
Sets the audio bitrate to 12200 bps, which corresponds to AMR-NB Mode 7 — the highest quality mode and the default for this tool. To compress the file more aggressively, replace this value with a lower AMR-NB mode bitrate such as 7950, 5900, or 4750. |
output.amr
|
Defines the output filename and tells FFmpeg to write an AMR container. The .amr extension signals the AMR file format, which wraps the re-encoded libopencore_amrnb bitstream in the standard 3GPP AMR storage format. |
Common Use Cases
- Reduce the size of voice memos recorded on older Nokia or feature phones before archiving them to cloud storage with tight space limits.
- Lower the bitrate of AMR voice clips to 4750 or 5150 bps for embedding in low-bandwidth IoT or telematics systems that transmit speech data over narrow channels.
- Standardize a batch of AMR recordings captured at different bitrate modes into a single uniform bitrate for consistent playback behavior in a telephony application.
- Compress court or field interview recordings stored in AMR format to reduce storage costs when archiving large volumes of speech-only audio.
- Re-encode AMR files at a lower mode to simulate the audio quality of a specific GSM network condition for voice codec testing or QA purposes.
- Trim down AMR audio attachments in messaging or IVR systems to the smallest acceptable bitrate before routing them through bandwidth-constrained pipelines.
Frequently Asked Questions
Yes — because AMR is already a lossy codec, re-encoding introduces a second generation of compression loss. The degree of degradation depends on the bitrate you target: dropping from 12200 bps to 7950 bps is often barely perceptible on speech, but going down to 4750 or 5150 bps can produce audible warbling and reduced intelligibility, especially for voices with higher frequencies or background noise. If quality is critical, avoid going below 5900 bps.
AMR-NB (Narrowband) operates at 8 kHz sample rate and supports bitrates from 4750 to 12200 bps — it is the classic GSM telephony codec. AMR-WB (Wideband), also known as G.722.2, operates at 16 kHz and supports higher bitrates, delivering noticeably better speech quality. This tool uses libopencore_amrnb, meaning it encodes AMR-NB output. If your input is an AMR-WB file, it will be downsampled to 8 kHz during re-encoding, which will reduce quality.
Replace the value after '-b:a' with one of the valid AMR-NB mode bitrates: 4750, 5150, 5900, 6700, 7400, 7950, 10200, or 12200 (all in bits per second). For example, to compress aggressively, use '-b:a 4750'. Note that AMR-NB only accepts these exact discrete values — FFmpeg will snap to the nearest valid mode if you provide a non-standard number, so it is best to use one of the eight defined values explicitly.
Yes. On Linux or macOS you can use a shell loop: 'for f in *.amr; do ffmpeg -i "$f" -c:a libopencore_amrnb -b:a 12200 "compressed_$f"; done'. On Windows Command Prompt, use: 'for %f in (*.amr) do ffmpeg -i "%f" -c:a libopencore_amrnb -b:a 12200 "compressed_%f"'. This applies the same bitrate compression to every AMR file in the current directory.
AMR files have very limited metadata support — the format does not carry ID3 tags, cover art, or rich metadata like MP3 or M4A does. Typically only basic properties like duration and codec mode are present. When re-encoding with FFmpeg using this command, any metadata that was embedded in the original AMR container will generally be preserved, but given AMR's minimal metadata spec, there is little to carry over in the first place.
AMR-NB is a fixed-mode codec — it does not support arbitrary or variable bitrates like MP3 or AAC do. The codec defines exactly eight operational modes, each with a specific bitrate. FFmpeg's libopencore_amrnb encoder will round your '-b:a' value to the nearest valid mode, so specifying 8000 would likely select the 7950 bps mode. To avoid ambiguity and ensure predictable output, always use one of the eight standard values: 4750, 5150, 5900, 6700, 7400, 7950, 10200, or 12200.
Technical Notes
AMR-NB is constrained by design: it is mono-only, limited to an 8 kHz sample rate, and supports only eight discrete bitrate modes ranging from 4750 to 12200 bps. The libopencore_amrnb codec in FFmpeg implements the 3GPP AMR-NB standard (TS 26.071) and is the most widely compatible open-source AMR encoder available. Because both input and output are AMR-NB in this workflow, the audio channel count and sample rate remain the same — but if the input was captured at a higher bitrate mode, downgrading it during re-encoding will permanently reduce quality since the discarded spectral data cannot be recovered. There is no lossless path within AMR. AMR files also do not support multiple audio tracks, chapters, subtitles, or transparency. One practical limitation to be aware of: some AMR files produced by Android voice recorders or VoIP systems may use the AMR-WB variant (identifiable by a different magic byte header), which this tool will decode with libopencore_amrwb but re-encode as AMR-NB, effectively downgrading the audio bandwidth. For files over 1 GB, the displayed FFmpeg command can be run locally on the desktop where memory and processing constraints are less restrictive.