Trim AMR — Free Online Tool
Trim AMR audio files directly in your browser, cutting speech recordings or mobile voice clips to exact start and end points using stream copying — no re-encoding, no quality loss. Built on the libopencore_amrnb codec, this tool preserves the original AMR bitrate and speech-optimized encoding while extracting only the segment you need.
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) stores audio as a sequence of independently decodable frames, each typically 20ms long. When trimming, FFmpeg uses the '-c copy' stream copy mode, meaning it reads the AMR bitstream and extracts the frames that fall within your specified time range without decoding or re-encoding the audio. Because AMR is a frame-based format without complex container overhead or keyframe dependencies like video codecs, stream copying is straightforward and lossless relative to the original — the output file contains exactly the same compressed speech frames as the input, just for the selected duration. The seek point (-ss) and end point (-to) will align to the nearest AMR frame boundary, which at 20ms per frame means trim accuracy is very precise.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary. In this browser-based 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 desktop FFmpeg installation. |
-i input.amr
|
Specifies the input AMR file. FFmpeg reads the AMR magic header to detect whether this is an AMR-NB (libopencore_amrnb) or AMR-WB (libopencore_amrwb) stream before processing the frame sequence. |
-ss 00:00:00
|
Sets the trim start point at 0 seconds (the very beginning of the file). Change this timestamp to skip an intro or silence — for example, '-ss 00:00:05' to start trimming from 5 seconds in. FFmpeg seeks to the nearest AMR frame at or after this position. |
-to 00:00:10
|
Sets the trim end point at 10 seconds. FFmpeg will include all AMR frames up to the nearest frame boundary at or before this timestamp. Replace this value with your desired clip end time, such as '-to 00:01:30' for a 90-second clip (when combined with the default -ss of 00:00:00). |
-c copy
|
Instructs FFmpeg to copy the AMR audio stream directly without decoding or re-encoding. The compressed speech frames are passed through unchanged, preserving the original bitrate (up to 12,200 bps for AMR-NB) and avoiding any second-generation lossy compression artifacts. |
output.amr
|
The output filename. FFmpeg writes the extracted AMR frames with the correct AMR magic header, producing a fully valid AMR file containing only the trimmed segment, playable on any device or application that supports the AMR format. |
Common Use Cases
- Trim a long voice memo recorded on a mobile phone to remove silence at the start and end before sharing via messaging apps that handle AMR natively
- Extract a specific spoken segment from a mobile call recording stored in AMR format for use as evidence or reference in a transcription workflow
- Cut a customer voicemail (delivered as an AMR attachment) down to the relevant message portion before archiving or forwarding
- Isolate individual spoken phrases from an AMR language-learning recording to create flashcard audio clips at the original low-bitrate encoding
- Trim silence or dead air from AMR voice recordings captured by IoT or embedded devices before uploading to a speech-to-text API to reduce processing time
- Split a long AMR field interview recording into shorter segments for separate review without any transcoding overhead
Frequently Asked Questions
No. Because the command uses '-c copy', the AMR audio frames are extracted directly from the bitstream without decoding or re-encoding. The speech data in the output is bit-for-bit identical to the corresponding segment of the input. AMR is a lossy format, so quality was already fixed at the time of the original recording — trimming does not introduce any additional lossy compression.
AMR encodes audio in fixed 20-millisecond frames (for AMR-NB) or 20ms frames (for AMR-WB). The trim start and end points will snap to the nearest AMR frame boundary, giving you precision within 20ms. This is typically more than sufficient for speech content, where the natural pauses between words are much longer than a single frame.
AMR-NB (Narrowband), encoded by libopencore_amrnb, samples audio at 8kHz and supports bitrates from 4,750 to 12,200 bps — optimized for telephone-quality speech. AMR-WB (Wideband), encoded by libopencore_amrwb, samples at 16kHz and offers higher speech intelligibility. Both variants use the same '-c copy' stream copy approach for trimming, so the process and accuracy are identical regardless of which variant your file uses. The output will automatically match the variant of the input.
With '-c copy', no re-encoding occurs, so the '-b:a' bitrate parameter has no effect — the output inherits the bitrate of the input file. If you need to change the AMR bitrate while trimming, remove '-c copy' and add '-b:a 7950' (or another supported AMR-NB value: 4750, 5150, 5900, 6700, 7400, 7950, 10200, or 12200) to force re-encoding at your chosen rate. Note that re-encoding will apply a second generation of lossy compression to the already-compressed speech.
Yes. You can wrap the command in a shell loop to process multiple files. For example, in bash: 'for f in *.amr; do ffmpeg -i "$f" -ss 00:00:05 -to 00:00:30 -c copy "trimmed_$f"; done'. This applies the same trim window to every AMR file in the current directory. Adjust the -ss and -to values to match the segment you want to extract from each file.
Yes. Stream copying preserves the original AMR container structure and codec framing, so the output file remains fully compliant with the AMR format as used in mobile telephony. Devices and apps that could play the original — including Android voice recorders, Nokia handsets, and any app using the 3GPP AMR specification — will play the trimmed output without issue. The file size will be proportionally smaller, reflecting only the frames in the selected time range.
Technical Notes
AMR files use a simple byte-stream container with a magic header ('!AMR\n' for NB or '!AMR-WB\n' for WB) followed by a sequence of independently-decodable frames, each prefixed by a single header byte indicating the codec mode and frame type. This frame-autonomous structure makes AMR highly amenable to stream-copy trimming — unlike formats requiring keyframe alignment (such as H.264 video), every AMR frame is an entry point. However, the AMR format does not support metadata tags (no ID3, no Vorbis comment blocks), so there is no title, artist, or timestamp metadata to preserve or lose. The format also carries only a single mono audio track; stereo is not supported by the AMR specification. At the lowest AMR-NB bitrate of 4,750 bps, a one-minute clip occupies roughly 35KB, making trimmed AMR files extremely compact for speech archival. One known limitation is that FFmpeg's AMR muxer does not support seeking to millisecond precision beyond the 20ms frame boundary, but this is inherent to the format specification, not a tool limitation.