Skip to content

Game Audio Format: WAV vs OGG, 48 kHz for Unity, Unreal & Godot

Written by the AudioForges teamPublished September 6, 2026

Game engines are forgiving about what you import and unforgiving about what it costs at runtime. A 96 kHz stereo WAV footstep will play fine in Unity, Unreal or Godot — it will also be resampled on every trigger, take ten times the memory it needs, and bloat the build. Getting the format right before import is a two-minute job that saves you from chasing audio pops and load stutter later.

The short answer

  • Sample rate: 48 kHz for everything. 44.1 kHz is fine too — just pick one and never mix them.
  • Bit depth: 16-bit. 24-bit buys nothing once the engine mixes to its output.
  • Short SFX (footsteps, UI, impacts, weapons): WAV, mono.
  • Music and long ambience: OGG Vorbis, stereo, quality 5–7 (roughly 160–224 kbps).
  • Voice / dialogue: OGG or engine-compressed, mono.
  • Trim silence from the start of every SFX. Leading silence is the number-one cause of “laggy” sounds.

Why 48 kHz, and why consistency matters more than the number

Almost every playback device — Windows, macOS, Android, iOS, consoles, HDMI — runs its audio output at 48 kHz. If your clips are 44.1 kHz the engine resamples every one of them at runtime. It's cheap, but it isn't free, and on a mobile target with dozens of simultaneous voices it adds up. 48 kHz sidesteps it entirely.

What actually causes trouble is mixingrates: a 44.1 kHz music track under 48 kHz effects, or one 22.05 kHz legacy clip in a 48 kHz project. Pick a project rate, put it in your import checklist, and convert anything that doesn't match before it goes into the assets folder.

WAV vs OGG: it's about decode cost, not quality

WAV is uncompressed, so the engine can play it the instant it's triggered. OGG has to be decoded, which costs a little CPU each time the clip starts. For a footstep that fires twenty times a second in a crowd scene, that matters. For a three-minute music loop that starts once, it doesn't — and the OGG is a tenth of the size.

Rule of thumb: under about ten seconds and played often → WAV. Over that, or played rarely → OGG. Engines add their own compression on top of this (see the table), so “WAV in the project” doesn't always mean “WAV in the build”.

Mono for anything positioned in 3D

A sound placed in the world — a gunshot, a door, an NPC line — should be mono. The engine spatialises it by panning and attenuating a single channel; a stereo source gets collapsed or, worse, plays wide no matter where it is. Keep stereo for music, UI stingers and non-diegetic ambience beds. Converting SFX to mono also halves their memory footprint. The Mono/Stereo Converter does this in one step.

Engine specifics

EngineImport formatsRecommended sourceNotes
UnityWAV, AIFF, OGG, MP3, FLAC48 kHz 16-bit WAV (SFX), OGG (music)Set short SFX to Decompress On Load + PCM/ADPCM; music to Streaming + Vorbis. Import settings override the source format.
Unreal EngineWAV (16-bit PCM), OGG, FLAC, AIFF48 kHz 16-bit WAV for everythingUnreal compresses on cook (Bink/ADPCM/Vorbis per platform). Importing 24-bit or 32-bit float WAV can fail on older versions — export 16-bit.
GodotWAV, OGG Vorbis, MP3WAV (SFX), OGG (music)WAV imports with optional IMA-ADPCM compression and a “Force mono” toggle. OGG supports loop points natively.
GameMakerWAV, OGG, MP3WAV (SFX), OGG (music)“Uncompressed” = WAV in memory; “Compressed – Streamed” for music.
Web (HTML5 / Phaser / Three.js)OGG, MP3, WAV, AACOGG + MP3 fallbackSafari historically lacked OGG; ship both and let the browser pick.

Batch-prepping a folder of sounds

  1. Trim leading silence on each SFX with the Audio Trimmer. Even 20 ms of silence reads as input lag.
  2. Mono for positional SFX via the Mono/Stereo Converter.
  3. Resample to 48 kHz, 16-bit with the Sample Rate Converter. Do this last so the earlier steps run on the original.
  4. Music and ambience to OGG with the Audio Converter. Keep a WAV master outside the project.
  5. Level-match with the Loudness Normalizerso you're not fighting volume sliders in the mixer — around −16 LUFS for music beds, −12 to −10 for SFX, peaks at −1 dBTP.

Common problems and the format fix

  • Clicks or pops at the start — the file doesn't start at a zero crossing, or the engine is resampling. Trim to a zero crossing and match the project rate.
  • Sound plays late — leading silence, or a compressed clip set to stream. Trim, and set short SFX to decompress on load.
  • Positional sound isn't panning — the source is stereo. Convert to mono.
  • Import fails in Unreal — 24/32-bit or float WAV. Export 16-bit PCM.
  • Build size exploded — music stored as WAV. Convert to OGG and set to streaming.
  • Loop has a gap — MP3 adds encoder padding; use OGG or WAV for loops.