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 WAV to OGG gives you the royalty-free container game engines and Linux toolchains ask for, at a fraction of the size of the WAV. The Ogg file written here carries an Opus stream rather than Vorbis, which is worth checking against your engine before you convert a whole asset folder. Nothing is uploaded.
Up to 100 files at once. Mixed formats are fine.
They convert one after another and download together as a ZIP.
WAV to OGG
Ogg is a container, not a codec. Over its life it has carried Vorbis, Opus, FLAC and Speex, and the extension .ogg says nothing about which of them is inside. For most of the last twenty years the honest expansion of ".ogg" was "Vorbis", and a great many tutorials, engine docs and forum answers still assume exactly that.
The file this page produces holds Opus. That is the better codec by a wide margin at every bitrate a game would use, and it is the one every current decoder supports. It is also not Vorbis, so if your target is an older engine, a piece of middleware or a loader somebody wrote by hand against a Vorbis library, convert one file and load it in the real build before you convert four hundred.
Almost nobody converting to OGG chose it on the merits. It is required because the engine documentation names it, because the project has a rule against patent-encumbered formats, or because the distribution channel or the Linux packaging guidelines said so. The reason is licensing policy, and it is a perfectly good reason.
That shapes what this page should tell you. The interesting questions are not about listening; they are whether the file loads, whether it loops, whether it seeks, and how much of the download budget it costs. Fidelity at these bitrates is not where a game audio pipeline goes wrong.
The check that matters takes two minutes and is not the one people run. Playing the converted file in a desktop media player proves only that the desktop player has an Opus decoder, which it certainly does. The question is whether your engine, on your target platform, in a build rather than in the editor, will load it.
Convert one representative asset — ideally the one with a loop in it — import it, and run the build. Mobile and console targets are where a format assumption fails, and they fail at import or at first play, not subtly. Discovering that after converting an entire library is an avoidable afternoon.
Every lossy encoder has to prime itself, so the first samples out of a decoder are not the first samples that went in. Ogg Opus handles this properly: the stream header records the pre-skip, and a decoder that honours it discards exactly that much and starts where it should.
The failure is on the playback side. A loader that ignores the pre-skip prefixes a few milliseconds of silence to every clip, which nobody notices on a one-shot sound effect and everybody notices on a two-bar loop, where it becomes an audible gap once per repetition. If a loop is critical and the engine gets it wrong, the answer is to keep that particular asset uncompressed and compress everything else.
Opus is unusually good at low rates, which is what makes it worth the pipeline change. Dialogue in mono sits comfortably around 48 kbps and stays intelligible far below that. Ambient loops and music want more, and the balanced band is a safe default for anything with instruments in it.
Short effects are the odd case. A 200-millisecond impact is dominated by per-file overhead rather than by bitrate, so encoding it hard saves nothing measurable while risking a softened transient. Spend the bitrate where the seconds are — music and dialogue — and leave the effects alone.
Ogg divides the stream into pages, each carrying a position marker, which is what makes seeking possible without reading the file from the beginning and what lets a player report an accurate duration before playback starts. It also carries a block of named text fields, so a file can describe itself.
For an asset pipeline the position markers are the part that matters. Anything that scrubs, jumps to a cue point, or reports progress needs them, and a bare compressed stream cannot provide them. It is a small amount of structure that removes a whole class of problems.
Opus is in every browser already, because every browser needed it for WebRTC voice calls. There is no extension package to fetch and no WebAssembly build involved — the encoder is native code that shipped with the browser, which makes this pair both fast and unusually light.
Compare that with MP3, which no browser can encode at all and which requires a WebAssembly LAME build to be downloaded first. The practical effect is that a folder of two hundred sound effects starts converting immediately here, with nothing fetched and nothing uploaded.
An Ogg file can carry named text fields — title, artist, or a key you invent for your own tooling. The problem is the source: WAV metadata is an optional chunk that most recorders, editors and export dialogues never write, so there is generally nothing to copy across.
Which means filenames remain the identifier, as they were before. That is normally fine for a pipeline, where assets are addressed by path rather than by tag, and it is worth knowing so that nobody spends an hour looking for the tag data the conversion supposedly lost.
The batch limit is a hundred files per drop and 100 MB per file, and each converts separately before the set comes back as a ZIP. Sound effects are small enough that both ceilings are irrelevant; a WAV long enough to hit 100 MB is nearly ten minutes of stereo.
Because nothing is transmitted, a large batch costs no bandwidth and joins no queue, which for game audio matters more than it sounds. Asset folders are re-exported constantly, and a conversion step that requires uploading a hundred files every time is a step people quietly stop performing.
| WAV | OGG | |
|---|---|---|
| Full name | Waveform Audio | Ogg Audio |
| File extension | .wav, .wave | .ogg, .oga |
| Media type | audio/wav | audio/ogg |
| Compression | Uncompressed | Lossy — file size is bought with quality |
| First published | 1991 | 2000 |
| Published by | Microsoft | Xiph.Org |
| Specification | RIFF WAVE | RFC 3533 |
| Licensing | Published, not standardised | Open standard |
| Standing today | Current | Current |
| Bit depth | 32 | — |
| Audio channels | up to 65,535 | — |
| Opens in a browser | Every browser | Current browsers |
| Considered instead | FLAC, AIFF | MP3, AAC, OPUS |
document properties can cross over — both WAV and OGG have somewhere to store it.
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.
Audacity reads both WAV and OGG, so there is a way to check the result against the original without a second tool.
The two are aimed at different work: WAV at editing and archiving, OGG at the web and handing a finished file over. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.
WAV is Microsoft's format, published in 1991. It records 32 bits per channel.
OGG comes from Xiph.Org and dates from 2000, specified as RFC 3533. Audacity, VLC and foobar2000 all read it.
Opus. Ogg is a container and has carried several codecs over its life; the file written here holds an Opus stream. That matters if your target is an older engine or library that implements Vorbis and nothing else, so it is worth loading one converted file into the real project before converting a whole asset folder.
Current ones generally will — Opus in Ogg is widely supported and has been for years. Older engines, older middleware and hand-rolled loaders written against a Vorbis decoder are the exceptions. There is no way to answer this from the outside: test one file in the actual build target rather than trusting a support table.
Dramatically. A minute of CD-quality WAV is about 10 MB; the same minute as Opus at 128 kbps is under 1 MB, and dialogue at 48 kbps is closer to 350 KB. For a project shipping hundreds of clips, that is usually the difference between a download people accept and one they abandon.
It depends on the player, not the file. The Ogg Opus header records the encoder’s pre-skip so a decoder that honours it begins at the right sample; a decoder that ignores it prefixes a few milliseconds of silence, which is audible as a tick at the loop point. Test a looping asset specifically — it is the one case where the encode itself can be fine and the result still wrong.
It can hold arbitrary named text fields, so a name, a version or a custom key of your own is possible. Your WAV almost certainly has none to bring across, since WAV metadata is an optional chunk most tools never write, and no custom marker survives a conversion between two formats that describe them differently.
No, and this pair downloads nothing extra either. Every browser already ships an Opus encoder — it is what WebRTC uses for voice — so the conversion runs on code that is already there, inside the tab, with the audio never transmitted.