AAC, M4A & the licensing catch
The MP3 EXPORT tab offers M4A/AAC alongside WAV, FLAC, Opus and Ogg Vorbis — but AAC is the one format with an asterisk. Here is what AAC and the M4A container actually are, why an MP3 → AAC conversion is a second lossy pass, and the patent-licensing reason a free, in-browser converter cannot simply ship the best AAC encoder in existence.
AAC is a codec; M4A is a container
AAC — Advanced Audio Coding, standardised in MPEG-2 Part 7 (1997) and extended in MPEG-4 Part 3 (1999) — is the lossy audio codec Apple, YouTube and broadcast built on. It was designed as MP3's successor and is genuinely better per bit, especially below 128 kbps, thanks to a longer filter bank, better joint-stereo, temporal noise shaping and (in the HE-AAC profiles) spectral band replication.
M4A is not a codec at all — it is a filename convention for an MP4 container (ISO Base Media File Format, ISO/IEC 14496-12) that happens to hold only audio. The very same bytes renamed .mp4 would play identically. So “M4A/AAC” is really “AAC audio wrapped in an MP4 box tree,” the way “MP3” is “MPEG audio in a raw frame stream.”
Rule of thumb. .aac = raw AAC frames (ADTS). .m4a / .mp4 = AAC (or ALAC) inside an MP4 container with an index, so players can seek and read metadata without scanning. OmniViewer exports the container form (.m4a) because that is what phones and music apps expect.
Inside an .m4a: the box tree
Where an MP3 is a flat run of self-describing frames, an MP4/M4A is a tree of length-prefixed boxes (also called “atoms”). Each box is [4-byte big-endian size][4-char type][payload], and boxes nest. A minimal audio file:
┌─ ftyp ─ file type & brand ──────────── "M4A ", "isom", "mp42"
├─ moov ─ movie metadata (the index) ───
│ ├─ mvhd movie header (timescale, duration)
│ ├─ trak one audio track
│ │ └─ mdia → minf → stbl ← the sample tables
│ │ ├─ stsd sample description
│ │ │ └─ mp4a → esds ← "this is AAC-LC, N channels, R Hz"
│ │ ├─ stts sample → duration
│ │ ├─ stsc / stsz / stco where each sample lives in mdat
│ │ └─ …
│ └─ udta → meta → ilst ← iTunes-style tags (©nam ©ART ©alb covr…)
└─ mdat ─ the actual coded AAC audio ─── (the bytes the boxes above index)
The critical leaf is mp4a and its child esds (Elementary Stream Descriptor): that is where the object type — AAC-LC (Low Complexity) is the common one — the sample rate and the channel count are declared. The tags live under moov/udta/meta/ilst using Apple's four-character keys (©nam title, ©ART artist, ©alb album, covr cover art) — which is why the title and artist you edit in the METADATA tab can ride across into an exported M4A.
One consequence of putting the index (moov) in its own box: a muxer has to know the whole stream before it can finalise the tables. FFmpeg either writes moov at the end, or — with -movflags +faststart — rewrites the file to move it to the front for progressive playback. In a one-shot local convert, either is fine.
MP3 → AAC is a second lossy pass
This matters more than the container details. An MP3 has already thrown away everything a psychoacoustic model judged inaudible. Re-encoding to AAC runs a different psychoacoustic model over what's left and throws some more away — generation loss. AAC cannot recover detail the MP3 already discarded; at best it preserves what remains, at a similar or smaller size.
- Converting MP3 → AAC to save space is reasonable (AAC is efficient), but expect it to sound at best like the source, never better.
- Converting for quality is a mistake — you would keep the original MP3.
- Converting to edit losslessly is a mistake too — decode to WAV or FLAC instead, which carry the MP3's decoded audio without a further lossy step.
This is exactly why the EXPORT tab does not offer MP3 as a target. Re-encoding MP3 → MP3 only adds loss, and a true no-loss copy — keeping the original frames, changing only the tag — is what the METADATA tab's “Download tagged copy” already does.
The licensing catch
Here is the asterisk. Unlike MP3 — whose patents expired in 2017, making it free to implement — AAC is still patent-encumbered. A pool (historically Via Licensing, now managed under Dolby) licenses the AAC patent families, and commercial products that encode or decode AAC are expected to hold a licence.
That directly shapes which encoder a project can use:
| Encoder | Quality | Can a free web tool ship it? |
|---|---|---|
FDK-AAC (Fraunhofer, libfdk_aac) | Best-in-class, especially at low bitrate / HE-AAC | No. Its licence (a Fraunhofer copyright licence) is not GPL-compatible and does not grant the underlying patent rights — so FFmpeg builds that include it are non-redistributable. It is deliberately absent from this build. |
FFmpeg native (aac) | Good at ≥128 kbps; clean-room, no third-party patented code bundled | Yes — it is part of FFmpeg's own source. That is what we use. |
Browser WebCodecs AudioEncoder | Uses the OS/hardware AAC encoder (often excellent) | Only where the browser supports it, and support/quality vary — so not a dependable single answer. |
(The patent question is separate from any encoder's copyright licence, and none of this is legal advice — it is why the engineering choice looks the way it does.)
What OmniViewer ships, and why
The EXPORT tab runs a vendored, single-threaded build of FFmpeg compiled to WebAssembly, entirely in your browser — no upload, no server. For AAC it uses FFmpeg's native aac encoder, not libfdk_aac. Practically:
- We can transcode your MP3 to a standards-compliant AAC-LC
.m4alocally, carry your edited tags across, and let you pick a bitrate. - We cannot match FDK-AAC's efficiency at the low end (roughly ≤96 kbps or HE-AAC territory), because shipping that encoder in a free tool isn't licensable. At 192 kbps the difference is small for most listeners; at 64 kbps it is audible.
- We won't pretend a second lossy pass improves anything — see above.
So which format should you actually pick?
| You want… | Pick | Why |
|---|---|---|
| To edit or archive with zero further loss | FLAC (or WAV) | Lossless container for the MP3's decoded audio; no new generation loss. |
| The smallest good-sounding file for the web/phone | Opus | Best modern size-to-quality ratio, and fully free to implement. |
| Maximum compatibility, especially Apple apps | M4A / AAC | Plays everywhere Apple does; accept the licensing asterisk above. |
| An open-format lossy file | Ogg Vorbis | Patent-free lossy option, though Opus generally beats it. |