Cookies for analytics and advertising
We use cookies for analytics and advertising, both sent to Google. Refusing changes nothing you can see.Read the privacy page
Converting OGG to AAC is what an asset pipeline does when the target platform decodes AAC in silicon and will not take Ogg. The file written here is a bare AAC stream rather than a container, so read the first section before choosing between this and the M4A route — the audio inside them is the same.
Up to 100 files at once. Mixed formats are fine.
They convert one after another and download together as a ZIP.
OGG to AAC
The `.aac` file produced here is Audio Data Transport Stream framing: AAC frames one after another, each with a short header repeating the sample rate and channel configuration, and nothing wrapped around them. No index, no duration, no metadata area. That shape exists so a stream can be cut anywhere and joined to anything, which is why segmenters and elementary-stream ingest want it.
If your platform documentation names ADTS or an elementary stream, this is the file. If it says "AAC" in ordinary language, or the audio has to be played by something with a play button and a length, the M4A route produces the same encoded audio inside an MP4 container that carries a duration, a seek table and tags. Delivering the wrong one of these two is the most common way this conversion fails.
Phones, consoles, televisions and set-top boxes carry a hardware decoder block for AAC. Decoding in silicon costs a fraction of the power and the CPU time that a software Vorbis or Opus decoder needs, and on a device rendering a game at sixty frames a second with a battery to protect, that difference is an engineering constraint rather than a preference.
Vorbis and Opus have no such block on most of that hardware, so they decode on the main processor and compete with everything else the application is doing. Middleware vendors and platform holders therefore standardise on what the silicon supports and document it as a requirement. There is no version of this argument that a converted file wins; complying is the whole job.
Ogg is a container and the registry lists three codecs it can hold. Vorbis is what game assets and older open-source projects contain. Opus is what current recorders, converters and messaging tools produce. FLAC in an Ogg is lossless, uncommon, and much larger than either.
Size settles it before you convert anything: four minutes is three to five megabytes for Vorbis or Opus and twenty to thirty for FLAC. From Vorbis or Opus, this is a second lossy generation and the Balanced band is defensible for effects and beds. From FLAC it is the first compression the audio has ever taken, and High quality is the only sensible setting — economising there means economising on a master.
The Quality control offers three bands — Small file, Balanced and High quality — and does not resolve them to a bitrate itself. Our code passes the band straight to the encoder library the browser provides, and that library decides the real bitrate; it can differ between browsers even for the same band, so this page cannot state a kbps number without guessing.
For a build, the sensible allocation is not one setting for everything. Dialogue and voice lines are intelligible at the Small band and there are usually thousands of them. Sound effects are short enough that the band barely affects the package size. Music beds and title themes are the long assets a listener actually attends to, and they earn High quality. Spending the budget where it is audible is a better strategy than one global setting.
Ogg carries metadata as Vorbis comments — an open list of uppercase keys with text values — and open-source assets frequently use them properly, recording a licence, an author and an attribution that the project is obliged to preserve. ADTS has no metadata area of any kind, so all of it is dropped at the boundary.
For assets inside a build that is usually harmless, because the manifest and the file path carry the identity and the credits file carries the attribution. Where the licence text was only ever in the file, copy it out before converting: a Creative-Commons asset whose attribution existed solely in a Vorbis comment quietly stops complying the moment it becomes a bare stream. Converting to M4A instead preserves the fields.
Looping audio is the case that breaks most often in an asset conversion. Every lossy encoder works in fixed blocks and has to pad the end of a file to fill the last one, so a loop that was sample-accurate in the source acquires a short run of silence and ticks audibly at the seam on every repetition.
The Ogg container records a pre-skip value that lets a good decoder rejoin the audio cleanly; ADTS records nothing, so nothing downstream can compensate. Where a loop must be seamless, the durable answers are to handle the loop in the engine with explicit loop points rather than relying on the file, or to keep a small amount of silence padding designed into the asset. Test one loop on the target platform before converting the set.
The rate the decoder reports is the rate the AAC gets; nothing here resamples. A Vorbis asset authored at 44,100 Hz produces a 44,100 Hz stream, and one at 22,050 Hz — still common for short effects, and a legitimate way to halve an asset — stays there.
The exception is an Ogg holding Opus. Opus runs on a fixed 48,000 Hz clock and a decoder reports 48 kHz regardless of what was encoded, so a converted asset arrives at 48 kHz even if the original material was 44.1. Engines that mix at a fixed rate will resample it at runtime, which costs a little CPU per voice. Where that matters across hundreds of simultaneous sounds, normalise the rates in the pipeline rather than at conversion time.
AAC handles far more channels than any asset in this pipeline is likely to use — the registry records 48 — so nothing has to be folded down and a stereo bed arrives as stereo. Mono assets stay mono, which is the outcome you want: a doubled voice line costs twice the bitrate to convey identical information in both channels.
Most game and application audio is deliberately mono at source, because positional audio is computed by the engine from a mono source rather than baked into a stereo file. Converting does not change that and should not. If a batch contains a mixture, it is worth checking that nothing upstream promoted mono files to stereo before they reached the Ogg, since that doubling then propagates into every converted asset.
Chrome, Edge and Safari expose an AAC encoder through WebCodecs and use it directly with no download. Firefox does not ship one, so the first AAC conversion there fetches a WebAssembly encoder once. Decoding the Ogg happens on your machine either way, and the audio itself never crosses the network.
Files are capped at 100 MB each and a hundred can be dropped in a single pass, returned together as a ZIP — which fits how this job actually arrives, as a directory rather than a file. For unreleased game or product audio, being able to confirm in the network tab that nothing was transmitted is worth more than an assurance in a footer.
| OGG | AAC | |
|---|---|---|
| Full name | Ogg Audio | Advanced Audio Coding |
| File extension | .ogg, .oga | .aac |
| Media type | audio/ogg | audio/aac |
| Compression | Lossy — file size is bought with quality | Lossy — file size is bought with quality |
| First published | 2000 | 1997 |
| Published by | Xiph.Org | MPEG |
| Specification | RFC 3533 | ISO/IEC 13818-7 |
| Licensing | Open standard | Open standard |
| Standing today | Current | Current |
| Audio channels | — | up to 48 |
| Opens in a browser | Current browsers | Every browser |
| Considered instead | MP3, OPUS | MP3, OPUS |
AAC opens in every current browser. OGG has narrower browser support than that. If the file is going onto a web page or into a form, that is usually the whole reason for the conversion.
VLC reads both OGG and AAC, so there is a way to check the result against the original without a second tool.
OGG is Xiph.Org's format, published in 2000. The specification is RFC 3533, and it is worth reading if the file has to outlive the tool that wrote it.
AAC comes from MPEG and dates from 1997, specified as ISO/IEC 13818-7. VLC, FFmpeg and iTunes all read it.
Read the platform documentation literally. Middleware and embedded players that ingest elementary streams want the bare .aac and will reject a container. Anything a person opens, or that needs a duration, a seek table or a title, wants the M4A — the audio inside is identical. When a requirement says only "AAC", the M4A is almost always the safer answer.
Because they decode it in silicon. Phones, consoles and set-top boxes have a hardware decoder block for AAC, which costs a fraction of the power and CPU that a software Vorbis or Opus decoder does. On a device running a game at sixty frames a second with a battery to protect, that is an engineering decision rather than a preference, and it is not one an asset pipeline can argue with.
Ogg is a container and holds Vorbis, Opus or FLAC. Game and open-source assets are usually Vorbis; files from a converter or a modern recorder are often Opus; an Ogg holding FLAC is lossless and much larger. Size gives it away — four minutes is three to five megabytes for Vorbis or Opus and twenty to thirty for FLAC — and the answer changes what quality band to pick.
Real but usually small if you leave room. Vorbis or Opus already discarded detail and AAC discards more with different rules, spending part of its budget on the first encoder's artefacts. At High quality — the top of the three bands the encoder offers — that is very hard to hear on dialogue, effects or music beds. From an Ogg holding FLAC this is the first lossy encode the audio has had, and High quality is not optional.
No. The file written here is a raw ADTS stream with no metadata area at all, so the Ogg's Vorbis comments and any embedded artwork are dropped. For build assets that is irrelevant, since the manifest and the file name carry the identity. If the tags matter, convert to M4A instead, which holds the same AAC audio in a container that has fields for them.
No. The Ogg is decoded by your own machine. Chrome, Edge and Safari have an AAC encoder built in; Firefox does not, so a WebAssembly encoder is fetched once on that browser. That package is the only thing that crosses the network. Files are capped at 100 MB each and a hundred can be dropped in one pass, which suits an asset directory.