XSB File Documentation
Summary
An XSB file is an XACT Sound Bank, a game-audio file created by Microsoft's XACT tool (part of DirectX and XNA Game Studio). It holds no actual audio: it stores only the sound and cue definitions — which sound plays, when, and with what volume, pitch and looping. The real audio lives in the matching wave bank, a .xwb file beside it. Its MIME type is application/octet-stream. There is nothing to "play" in an .xsb; tools like unxwb read the .xwb for audio and use the .xsb only to recover cue names.
Technical details
| Feature | Value |
|---|---|
| Full name | XACT Sound Bank |
| File extension | .xsb |
| MIME type | application/octet-stream |
| Format type | Binary audio-metadata bank (sound/cue definitions — NOT raw audio) |
| Developer | Microsoft (XACT — Cross-platform Audio Creation Tool) |
| Introduced | 2004, in DirectX 9.0c; later in XNA Game Studio |
| Toolchain role | Sound bank; pairs with a wave bank (.xwb) that holds the audio |
| Open standard | No — proprietary, undocumented header |
| Byte order | Little-endian |
| Header tag | ASCII XSB at offset 0 (exact bytes vary by XACT version) |
| Companion file | .xwb wave bank (starts WBND, holds the audio) |
| Contains | Cue table, sound definitions, wave-bank references, cue/sound names |
| Status | Legacy — unsupported since the Windows 8 SDK; XNA discontinued |
| Related extensions | .xwb, .xgs, .xap, .wav, .xma |
| Specification | Undocumented; see Wikipedia — XACT |
What is an XSB file?
XSB is the sound-bank file produced by XACT, the Cross-platform Audio Creation Tool, Microsoft's game-audio authoring system. XACT first shipped in DirectX 9.0c in 2004 and later came with XNA Game Studio. The key thing to understand about an .xsb is what it does not contain: it holds no audio. It stores only the definitions — the "cues" and "sounds" that tell a game engine which piece of audio to play, at what volume and pitch, whether it loops, how it varies, and what triggers it. The actual waveform data lives in a separate wave bank, a .xwb file that sits beside the .xsb in the game's files.
That split is why double-clicking an .xsb produces nothing playable, and why there is no meaningful standalone "XSB player". Anyone encountering these files today is almost always a modder or fan poking at an older PC or Xbox 360-era game — many XNA indie titles, and games built on Microsoft's audio middleware — rather than someone who created the file. The sections below explain the XACT model, what is actually inside the sound bank, and the only realistic way to get usable audio out.
The XACT model: banks, cues and the split from audio
XACT splits a game's audio across several files, and they only make sense together:
.xap XACT project — the editable source the developer authored
.xgs global settings — categories, RPC curves, shared settings
.xsb sound bank — cues + sound definitions (this file)
.xwb wave bank — the actual compressed/PCM audio samples
The wave bank (.xwb) holds the raw audio: the PCM or compressed samples. The sound bank (.xsb) holds only metadata that points into that wave bank. A game asks its engine to play a named cue — say Explosion or MenuClick — and the sound bank's definition for that cue decides which wave in the .xwb to play and with what settings. Separating the two lets one sound definition trigger different waves, apply variation, or reuse a single wave across many cues, without duplicating audio.
Inside the sound bank: the cue and sound tables
An .xsb begins with a header carrying the ASCII tag XSB and version markers, then a set of tables. The exact byte layout is undocumented and varies by XACT tool version, so the description below is structural rather than offset-by-offset:
- Cue table — the named cues the game triggers by name, each pointing at a sound definition.
- Sound definitions — per-sound settings: volume, pitch, looping, variation and the audio category the sound belongs to.
- Wave-bank references — indices that point into the companion
.xwb, saying which wave a sound uses. - Cue and sound name table — the human-readable names, unless they were stripped at build time to save space.
The name table is the part that matters to anyone extracting audio. A wave bank's entries are otherwise anonymous — wave 0, wave 1, wave 2 — and it is the sound bank that maps those indices to meaningful labels like FootstepGravel. So even though the .xsb has no audio, it is what lets you name the sounds you pull from the .xwb. When a game ships with the names stripped, extractors can still dump the audio but cannot recover the labels.
Getting audio out: extract from the wave bank
The only meaningful "conversion" for an .xsb is really an extraction from its companion file. Because the audio is in the .xwb, community tools such as unxwb, towav or xactbnk are pointed at the wave bank to dump WAV files, and the .xsb is read alongside only to supply the cue names. Without the matching .xwb, there is no audio to recover at all — an .xsb on its own is a description of sounds that live somewhere else. To reach MP3 or OGG, extract to WAV first and then encode with a normal audio tool such as ffmpeg or Audacity; the sound bank is never the source of the samples.
One thing is genuinely impossible: you cannot turn a sound bank into a wave bank. The .xsb and .xwb are two different halves of the same XACT project, both built from the original source audio; the wave bank is not derived from the sound bank, so no tool can produce one from the other.
Why XSB is legacy technology
Microsoft did not carry XACT forward. Support ended with the Windows 8 SDK, and XNA Game Studio itself was discontinued (the last release was XNA 4.0 in 2010, with framework support ending around 2013–2014). Modern engines and the open-source MonoGame project replaced it. MonoGame can still load and play XACT .xsb/.xwb content in code, through its SoundBank and WaveBank classes, specifically to keep old XNA games running — but new audio is authored with entirely different tools. The original XACT authoring application still exists in old DirectX/XNA SDK downloads and can open a .xap project and rebuild the banks, but installing it is only worthwhile for maintaining a genuinely old game. For everyone else, an .xsb is a read-only curiosity: metadata for audio that lives in the .xwb next to it.
References
- Wikipedia — Cross-platform Audio Creation Tool (XACT)
- MonoGame — content pipeline and XACT support
- Luigi Auriemma — game audio extraction tools (unxwb)
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.