Cut texture memory with compressed GPU formats and mipmaps sized to actual display size; compress audio to a low-bitrate format like Ogg Vorbis and stream long tracks instead of loading them fully into memory. Then measure the actual build output, not just source asset sizes.
At a glance
| Fact | Value | Source |
|---|---|---|
| Godot 4.3+ web audio backend | Web Audio API | docs.godotengine.org |
| Unity WebGL calls JS via | .jslib plugin | docs.unity3d.com |
| Engines exporting to web | Unity, Godot, Construct 3, others | developer.mozilla.org |
Textures: use a compressed GPU texture format instead of raw PNG/TGA in the build, generate mipmaps only if the texture is actually seen at multiple distances, and cap texture size to what the sprite or model displays on screen rather than the source art resolution. Atlas small sprites into one texture to cut draw calls and file count. For audio, convert long music and ambience to a compressed format such as Ogg Vorbis at a low bitrate, and stream it rather than loading the whole clip into memory; keep short one-shot SFX uncompressed only if size allows, otherwise compress those too.
To see where the build size actually goes, run an analysis pass on the exported build rather than guessing from source files. The Playgama Unity Build Optimization Tool audits a Unity WebGL build’s textures, audio, meshes and shader memory use, flags heavy assets, and applies compression settings for the build output automatically.
Engine specifics: Unity WebGL exposes texture compression settings per-platform in the import inspector and calls out to browser JavaScript through a .jslib plugin when you need custom loading or download hooks. Godot, from version 4.3, plays audio on web through the Web Audio API; you can switch back to Godot’s own playback system in Audio > General > Default Playback Type.web if you hit compatibility issues. For JS calls from Godot 4 web exports, use the JavaScriptBridge singleton.
What to check after compressing assets
- Reload the build and compare total download size and first-paint time, not just individual file sizes.
- Check visual quality on the smallest texture size you shipped, at the actual in-game scale.
- Listen to compressed audio on real device speakers, not just studio headphones.
Sources
- Playgama wiki: Unity Build Optimization Tool
- Playgama wiki: Textures
- Playgama wiki: Audio
- Godot docs: exporting for the Web
- Unity manual: interacting with browser scripting
- MDN: Game development
Related questions
Does compressing textures hurt visual quality?
Some quality loss is possible with lossy GPU compression, but it’s usually invisible at normal viewing distance if you match texture resolution to actual on-screen size first.
Should I stream or preload audio in a web build?
Stream long music and ambience tracks to avoid loading them fully into memory; short SFX can be preloaded since they are small even uncompressed.
Last updated: 24 September 2026