AAC → MP3
AAC to MP3 converter
AAC audio — either a raw ADTS stream or the AAC track from an M4A/MP4 — is decoded and re-encoded to MP3. Both codecs are lossy, so this costs one generation.
…or drag files and folders here. Add as many as you like — everything is processed on this device.
.aac .m4a .m4r .m4v .mp4
In one paragraph
A bare .aac file is an ADTS stream: AAC frames with no container, no duration field and no tags at all. Radio stream recorders, some CCTV and access-control systems, DAB capture tools and older broadcast software all produce them, and a surprising number of media players simply refuse to open one — there is no header telling them what to expect.
MP3 gives you a self-describing file instead: a duration in the header, ID3 tags for title and artist, and playback support on essentially everything. Sonic Batch decodes ADTS with its self-hosted engine rather than relying on the browser, which matters because Firefox in particular is unreliable with raw AAC, then writes a properly tagged MP3 with the metadata you supply.
Does this change the audio quality?
AAC is more efficient than MP3 at the same bitrate, so a straight number-for-number transcode loses a little quality. Encoding one step above the source bitrate keeps the result close to the original.
- Raw ADTS has no metadata, so the output MP3 starts with no tags. Use the metadata controls to add title and artist.
- HE-AAC (AAC+) streams decode correctly but are typically 32–64 kbps; do not expect a high-bitrate MP3 to improve them.
- ADTS streams sometimes begin mid-frame after a recording was cut, which can produce a short click at the start.
A worked example
Cleaning up a folder of recorded radio streams
- Drop the .aac captures in. Sonic Batch shows the detected sample rate, channel count and estimated bitrate for each.
- Set 192 kbps stereo, source sample rate.
- Fill in Artist and Album in the metadata controls and use Apply to all so the station name is on every file.
- Convert all and download the ZIP.
One step up from the source bitrate
A 128 kbps AAC deserves a 160–192 kbps MP3; a 256 kbps AAC deserves 256–320 kbps. AAC’s efficiency advantage is real — matching the number exactly means MP3 has fewer bits to represent the same audio and the artefacts become audible on cymbals and sibilance.
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 | What it is | Chrome | Firefox | Safari | iOS |
|---|---|---|---|---|---|
| AAC | Bare AAC frames with no MP4 wrapper — used by broadcast streams and some hardware. | Native | Partial | Native | Native |
| M4A | Apple’s default AAC container. Better quality than MP3 at the same bitrate. | Native | Native | Native | Native |
| MP4 | The standard video container. Its audio track is almost always AAC. | Native | Partial | Native | Native |
| M4R | An M4A file with a .m4r extension. iOS only lists it as a ringtone if it is ≤ 40 seconds. | Partial | Partial | Native | Native |
| Output | Encoder | Bitrates / depth | Sample rates | Tags |
|---|---|---|---|---|
| MP3 | libmp3lame | 32–320 kbps | 8–48 kHz | Yes + artwork |
- 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.
Troubleshooting
Firefox will not preview my .aac file.
Firefox’s support for raw ADTS is inconsistent. The engine decodes it independently of the browser, so conversion works even where the preview is greyed out.
The duration shown is wrong before conversion.
ADTS has no header duration. Sonic Batch estimates it from the file size and frame bitrate, then writes the exact duration into the finished MP3 based on the decoded sample count.
My file is .m4a rather than .aac — is this the right page?
It works here, and the engine detects the container correctly. If you specifically want lossless PCM instead of MP3, use the M4A to WAV page.
Frequently asked questions
Is AAC or MP3 better?
AAC is technically better at any given bitrate, particularly below 128 kbps. MP3 is better supported by old hardware. This conversion trades quality for compatibility.
What is the difference between .aac and .m4a?
The codec is the same. .m4a wraps it in an MP4 container with a duration, chapters, tags and artwork; .aac is a raw stream with none of that.
Can I convert MP3 to AAC here?
Yes, on the MP3 to AAC page, which writes an ADTS stream, or the MP3 to M4A page for the container version.
Does the conversion run on a server?
No. Decoding and encoding both happen in your browser tab using a WebAssembly engine served from this domain.