Convert OGG to AAC

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.

  • Where it runs In your browser. The file is never uploaded.
  • Lossy Some detail is traded for size. AAC cannot hold everything an OGG can.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Both formats are compressed, so this is a second round of compression on audio that has already lost detail. Pick the highest quality band if the result is going to be edited or converted again.

Up to 100 files at once. Mixed formats are fine.

This page writes a bare stream, and most readers want the container

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.

Hardware decoding is why the platform will not take your Ogg

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.

What is inside the Ogg decides how expensive this is

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.

Three quality bands against an asset budget

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.

Vorbis comments have nowhere to land in an ADTS stream

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.

Loop points and seams after a second encode

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.

Sample rate travels, and the 48 kHz question from an Opus source

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.

Channels pass through, and mono is worth keeping mono

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.

An asset directory in one drop, with the encoder question answered

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.

How to convert an OGG asset into an AAC stream

  1. Check whether the platform wants a bare .aac stream or an M4A — the audio is identical.
  2. Drop your OGG assets onto this page and pick a band; High quality is the top of the three.
  3. Download the AAC files, or take the whole asset directory back as a ZIP.

OGG and AAC in a build: a free container against a hardware codec

OGG compared with AAC
OGGAAC
Full nameOgg AudioAdvanced Audio Coding
File extension.ogg, .oga.aac
Media typeaudio/oggaudio/aac
CompressionLossy — file size is bought with qualityLossy — file size is bought with quality
First published20001997
Published byXiph.OrgMPEG
SpecificationRFC 3533ISO/IEC 13818-7
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Audio channelsup to 48
Opens in a browserCurrent browsersEvery browser
Considered insteadMP3, OPUSMP3, OPUS

Opening the result

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.

What each format is for

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.

OGG to AAC: platforms, containers and asset pipelines

Should I produce a .aac file or an .m4a?

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.

Why do platforms insist on AAC?

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.

What is actually inside my .ogg file?

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.

How much does the second encode cost?

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.

Do the tags survive?

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.

Are the assets uploaded?

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.

More about these formats