Convert AAC to OGG

Converting AAC to OGG gives a web player or an application a second source for clients that cannot decode AAC — a distribution-built Chromium, an open-source player shipping only free codecs. The Ogg written here holds an Opus stream, which every current browser reads, and the conversion runs in your own tab.

  • Where it runs In your browser. The file is never uploaded.
  • Lossy Some detail is traded for size. OGG cannot hold everything an AAC 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.

The Ogg produced on this page is an Opus stream

Ogg is a container and the registry lists three codecs it can hold — Vorbis, Opus and FLAC. Convention has attached `.ogg` to Vorbis for twenty-five years because that pairing came first, so a file with this extension is widely assumed to be Vorbis. This converter writes Opus, and a developer wiring up a fallback chain needs to know which one is arriving.

For the job on this page it is the better outcome. Opus was published as RFC 6716 in 2012 and outperforms Vorbis at every bitrate. The container is where the support question actually sits: Safari read nothing at all inside an Ogg wrapper until 18.4 in March 2025, so an `.ogg` source of either codec is a fallback for Chrome, Edge and Firefox rather than for everything. Among the clients that do open the container, Opus has the broader modern support of the two. What it will not satisfy is a build check or an ingest rule that names Vorbis specifically.

Which clients still cannot decode an AAC file

The gap is narrower than the folklore suggests and it has not closed. Chrome, Edge, Safari and released Firefox builds all decode AAC. What does not, reliably, is Chromium as packaged by several Linux distributions: those builds are compiled without the proprietary codec set for licensing reasons, and anything embedding an engine built the same way inherits the limitation.

The same reasoning produces open-source players and desktop applications that ship free codecs only. If your audience includes Linux desktops, self-hosted deployments or anyone running a distribution build, a second source costs one conversion and removes an entire class of silent failure. If your audience is phones and mainstream browsers, AAC alone is already sufficient and this page is solving a problem you do not have.

This is the same file as the .opus conversion

Worth stating rather than leaving to be discovered. The `ogg` and `opus` targets on this site both write an Opus stream in an Ogg container through the same encoder, so the audio produced by this page and by the AAC-to-OPUS page is identical. The extension is the entire difference.

Which one to pick is therefore a question about your tooling, not about the file. Asset pipelines, static-site plugins, upload forms and content-type checks frequently accept one name and not the other, and audio elements in the wild are more often written with `.ogg` because that convention is older. Pick whichever your build expects, and rename freely afterwards — the stream is legal under both.

Where a bare .aac asset came from, and what it lacks

A file with a `.aac` extension is an Audio Data Transport Stream: a run of AAC frames each carrying a short header, with no container around them. There is no index, no duration field and no metadata area. Files in this shape usually come out of a segmenter, a capture, an encoder configured for streaming, or a command-line tool asked for raw output.

That absence has one consequence for web work. Some players report the wrong length for an ADTS stream or refuse to seek in it, because the duration has to be estimated by scanning rather than read from a header. The Ogg produced here does carry that structure, which occasionally makes the fallback behave better than the primary — an argument for shipping the AAC in an M4A rather than raw, if you control the build.

Declaring the type so the fallback is chosen without a download

A browser picking between source elements uses the declared type to decide what to attempt, and it does so before fetching anything. The registry records `audio/ogg` for this extension, and that is what belongs in the type attribute and in the header your server sends.

Getting it wrong produces the failure this exercise was meant to prevent: a client downloads a file it cannot decode, fails, and either falls through slowly or not at all. Serve the Ogg with a correct content type, list it after the AAC source rather than before it so capable clients take the better-supported file first, and test with a build that genuinely lacks AAC rather than assuming from a codec table.

What the second encode costs a fallback asset

The AAC already discarded parts of the recording permanently, and Opus now discards a further helping using a different model — spending part of its budget faithfully reproducing the first encoder's artefacts rather than the original sound. That is the standard cost of any lossy-to-lossy conversion and no setting removes it.

For a fallback that a minority of users will ever hear, Balanced at 64 kbps is a defensible engineering decision and keeps the extra asset small. For anything that will be a primary source on some platforms, High quality at 128 kbps is the right call: Opus at that rate is generous, and the point of giving the second encoder room is that it then contributes almost nothing of its own.

Opus bitrates read low and are not

The three bands resolve inside the encoder: Small file writes 38 kbps, Balanced 64 and High quality 128. Anyone judging by MP3 numbers will read 64 kbps and expect something unpleasant. Opus at 64 kbps is a comfortable stereo music bitrate, and at 38 kbps speech is completely clear — the same codec runs messaging voice notes at 16 to 32.

For interface sounds, notification tones, short stingers and voice prompts, Small file is often correct rather than cheap, and on a page loading dozens of assets the difference is measurable in load time. For music beds and anything with sustained content, Balanced or High quality. The file sizes follow directly: a four-minute asset lands near 1.1 MB, 1.9 MB and 3.8 MB.

Tags, and why an ADTS source brings none

Ogg carries metadata as Vorbis-style comments — a plain list of uppercase keys with text values — and it is a perfectly good place to put a title, a licence or an attribution. The problem in this direction is upstream: a bare ADTS stream has no metadata area at all, so there is nothing to copy across and the result arrives with an empty comment header.

For build assets that is usually irrelevant, since the file name and the manifest carry the identity. Where it does matter — a downloadable clip, a Creative-Commons asset that must credit a source — the tags have to be written into the Ogg afterwards with a tagger, and doing it at this point in the chain is the right moment because they will then survive any further copying.

An asset folder in one drop, with nothing sent anywhere

Opus is the only audio target on this site that fetches no encoder, because every browser had to implement it for calls, and your machine already decodes AAC. A conversion starts the moment a file lands and the network stays idle throughout, which you can confirm in developer tools while a batch runs.

Files are capped at 100 MB each and a hundred can be dropped at once, coming back as a ZIP — which is the usual shape of this job, since fallbacks are generated for a whole asset directory rather than one file. For unreleased product audio, the fact that nothing is transmitted is worth more than the convenience.

How to produce an OGG fallback from an AAC file

  1. Drop your AAC assets onto this page, or click to choose them.
  2. Pick a band — Balanced writes 64 kbps Opus, High quality writes 128.
  3. Download the OGG files and list them as a second source with type audio/ogg.

AAC and OGG in a player: two codecs, two licence positions

AAC compared with OGG
AACOGG
Full nameAdvanced Audio CodingOgg Audio
File extension.aac.ogg, .oga
Media typeaudio/aacaudio/ogg
CompressionLossy — file size is bought with qualityLossy — file size is bought with quality
First published19972000
Published byMPEGXiph.Org
SpecificationISO/IEC 13818-7RFC 3533
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Audio channelsup to 48
Opens in a browserEvery browserCurrent browsers
Considered insteadMP3, OPUSMP3, OPUS

Opening the result

Current browsers read OGG; older ones do not. It is the less portable of the two, so it is worth being sure the program at the other end accepts it before sending one.

OGG is a container rather than a single format. What actually plays is the codec inside it — usually Vorbis, Opus and FLAC — which is why two files with the same extension can behave differently on the same device.

VLC reads both AAC and OGG, so there is a way to check the result against the original without a second tool.

What each format is for

AAC is MPEG's format, published in 1997. The specification is ISO/IEC 13818-7, and it is worth reading if the file has to outlive the tool that wrote it.

OGG comes from Xiph.Org and dates from 2000, specified as RFC 3533. Audacity, VLC and foobar2000 all read it.

AAC to OGG: fallbacks, MIME types and codecs

Does the OGG contain Vorbis or Opus?

Opus. This converter writes an Ogg container with an Opus stream inside, which is exactly what RFC 7845 specifies and a valid .ogg file — but it is not Vorbis. Chrome, Edge and Firefox have decoded Opus in Ogg for years and Safari has since 18.4, so as a fallback source it works on anything current. A tool or a test that checks for Vorbis by name will not accept it.

Which browsers actually need this fallback?

Fewer than they used to, and not none. Chrome, Edge, Safari and released Firefox builds all decode AAC. What can fail is Chromium as packaged by some Linux distributions, which is compiled without the proprietary codec set, and any application that embeds a browser engine built the same way. Opus in an Ogg container is decoded by all of them, and by Safari from 18.4 onwards, which is why it is the format to fall back to rather than the one to lead with.

Is this the same as converting AAC to OPUS?

It is the identical conversion. Both targets produce Opus in an Ogg container through the same encoder; only the file extension differs. Choose the .ogg page when your build tooling, upload form or type check wants that name, and the .opus one when it wants that. Nothing about the audio changes between them.

How much quality does the second encode cost?

Some, unavoidably. The AAC already discarded detail and Opus discards a further helping with different rules. For a fallback source that most listeners will never hear, Balanced at 64 kbps is sensible; for a primary asset, High quality at 128 kbps leaves the encoder enough room that it adds little of its own. Opus is efficient enough that 128 kbps is generous rather than marginal.

What should I set the MIME type to?

The registry records audio/ogg for the .ogg extension, and that is what a source element should declare. Browsers use the type hint to decide which source to attempt before downloading it, so declaring it correctly is the difference between a clean fallback and a player that fetches a file it cannot play. Serve it with the same header from your web server.

Do the assets get uploaded?

No. The AAC is decoded by your own machine and Opus is the one audio target that needs no encoder download, so the conversion begins immediately and contacts nothing. Files are capped at 100 MB each and a hundred can be dropped in one pass, which is the usual shape of an asset folder, and returned together as a ZIP.

More about these formats