M4A compression

M4A compressor

M4A files are made smaller by re-encoding the AAC audio at a lower bitrate, in mono, or at a lower sample rate. All of these discard audio; there is no lossless option for AAC.

M4AMP3Opus

…or drag files and folders here. Add as many as you like — everything is processed on this device.

.aac .caf .m4a .m4r .m4v .mov .mp4 .qt

The M4A files that most need compressing are iPhone recordings. Voice Memos in Lossless mode, GarageBand bounces and long QuickTime audio captures all produce files far larger than their content justifies — a two-hour lossless memo of one person talking can be over a gigabyte.

Because AAC is already efficient, the savings here come mostly from channel count and sample rate rather than heroic bitrate cuts. A stereo 44.1 kHz recording of a single microphone converted to mono at 22.05 kHz is a quarter of the data with no audible change to the speech.

Does this change the audio quality?

Re-encoding AAC to AAC is a second lossy generation. If the source was recorded in a lossless mode, this is a first-generation encode instead and the quality is considerably better — the file panel shows which you have.

  • This build uses the native FFmpeg AAC encoder, not Apple’s. At 96 kbps and above the difference is not audible; below that, Apple’s encoder is better and Opus is better still.
  • DRM-protected purchases cannot be decoded and are reported as unsupported.
  • Mono conversion is irreversible. Confirm the recording really is single-source before applying it.

A worked example

Shrinking an hour of iPhone lossless voice memos

  1. Export the memos from Voice Memos to Files, then drop them in.
  2. Set Channels to Mono and Sample rate to 22050 — plenty for speech.
  3. Set 64 kbps. The estimate shows the hour dropping from hundreds of megabytes to around 28 MB.
  4. Convert all and download the ZIP.

Mono and sample rate first, bitrate last

For spoken word, mono at 22.05 kHz already removes three quarters of the data before the bitrate control does anything. Then 64 kbps AAC is comfortable and 48 kbps is usable. For music, keep stereo at 44.1 kHz and step the bitrate down from 256 to 192 to 160 kbps. If your playback chain supports Opus, switching the output format to Opus at 48 kbps will beat any AAC setting at that size.

Supported formats, limits and browser notes

Sonic Batch decodes with the browser when it can (faster, no engine download) and falls back to the self-hosted WebAssembly engine when it cannot. Every combination below works in every listed browser; the column only tells you which decoder does the work.

Input formats accepted by this page
InputWhat it isChromeFirefoxSafariiOS
M4AApple’s default AAC container. Better quality than MP3 at the same bitrate.NativeNativeNativeNative
AACBare AAC frames with no MP4 wrapper — used by broadcast streams and some hardware.NativePartialNativeNative
MP4The standard video container. Its audio track is almost always AAC.NativePartialNativeNative
M4RAn M4A file with a .m4r extension. iOS only lists it as a ringtone if it is ≤ 40 seconds.PartialPartialNativeNative
MOVQuickTime video from iPhone and DSLR cameras. Audio is normally AAC or PCM.PartialEngineNativeNative
CAFApple container used by older iOS Voice Memos. Usually holds ALAC, IMA4 or raw PCM.EngineEnginePartialPartial
Output formats this page can write
OutputEncoderBitrates / depthSample ratesTags
M4Aaac32–320 kbps8–48 kHzYes + artwork
MP3libmp3lame32–320 kbps8–48 kHzYes + artwork
Opuslibopus16–256 kbps8–48 kHzYes
Max per file
400.0 MB
Max per queue
4.00 GB
Max duration
4:00:00
Max archive
1.50 GB

These are enforced ceilings, checked before any decoding starts, not measured maximums — a file over the limit is rejected rather than allowed to exhaust the tab’s memory. Real-world capacity is lower on older phones, which is why the scheduler runs one file at a time on iOS and Safari.

Where your audio goes

Nowhere. Your file is read from disk into this browser tab with the File API, decoded and encoded by code running in that same tab, and handed back to you as a download. It is never transmitted.

That is a structural property of the application, not a policy promise: there are no API routes, no server actions and no third-party processing services in this project, so there is nothing capable of receiving a file. The page’s Content-Security-Policy also restricts connections to this origin, and the automated test suite includes a browser test that fails if any network request during import, preview, conversion or download carries media bytes.

The trade-off, stated plainly:results live in your tab’s memory until you download them. Closing or reloading the page discards them. There is nothing on a server to recover, because nothing was ever put there.

Read the full privacy detail

Troubleshooting

The file was rejected as DRM protected.

FairPlay-encrypted purchases cannot be decoded by a local tool. Only unprotected recordings and your own encodes will process.

The output is barely smaller.

AAC is already efficient, so a small bitrate reduction saves little. The large wins come from mono and a lower sample rate.

Quality dropped more than I expected.

You are encoding AAC from AAC — a second generation. Try Opus as the output format instead; at the same size it handles a second generation better.

Frequently asked questions

Can M4A be compressed without losing quality?

No. AAC is lossy and any size reduction discards more audio. The only lossless saving would be stripping artwork and metadata, which is negligible.

Why is my iPhone recording so large?

Voice Memos has a Lossless mode that records ALAC. It is excellent and enormous. Switching the app to Compressed, or compressing here, both solve it.

Is Opus a better target than M4A?

For speech, clearly yes — at half the bitrate. Only choose M4A if the file must stay in the Apple ecosystem or play on older hardware.

Does this upload my recordings?

No. Everything runs in your browser tab, which is the point of using it for private recordings.