Convert AAC to J2B — Free Online Tool

Convert AAC audio files to J2B format, the music container used by Jazz Jackrabbit 2, by re-encoding through the libmp3lame MP3 encoder. This tool handles the full transcoding process in your browser — useful for anyone working with JJ2 game audio or the ASYLUM Music Format wrapper.

FFmpeg Command

Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg

Free — no uploads, no signups. Your files never leave your browser.

Estimated output:

Conversion Complete!

Download

How It Works

AAC and J2B are both lossy formats but use entirely different codecs and structures. AAC stores audio using the Advanced Audio Coding codec (aac or libfdk_aac), which is optimized for streaming and modern device playback. J2B is a game-specific container used by Jazz Jackrabbit 2 that wraps MP3 audio (encoded via libmp3lame) inside an ASYLUM Music Format header. During this conversion, the AAC audio stream is fully decoded and then re-encoded as MP3 at the target bitrate — there is no stream-copy shortcut available here since the codecs are incompatible. The resulting file has the .j2b extension and carries the MP3 audio payload expected by the JJ2 engine.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary, the open-source multimedia processing engine that handles all decoding, encoding, and container operations in this conversion. In the browser version, this runs via FFmpeg.wasm compiled to WebAssembly.
-i input.aac Specifies the input AAC file. FFmpeg will use the AAC decoder (native aac or libfdk_aac) to fully decode the compressed audio stream into raw PCM before re-encoding it as MP3.
-c:a libmp3lame Selects the LAME MP3 encoder for the audio output stream. Since J2B wraps MP3 audio, libmp3lame is the required encoder — it produces the MP3 payload that the Jazz Jackrabbit 2 engine reads from inside the .j2b container.
-b:a 128k Sets the MP3 audio bitrate to 128 kilobits per second for the J2B output. This is the default and a common choice for game audio, but increasing it to 192k or 256k will reduce the perceptual quality loss that comes from transcoding between two lossy codecs.
output.j2b Defines the output filename with the .j2b extension, which is the container format expected by Jazz Jackrabbit 2. FFmpeg writes the libmp3lame-encoded audio into this file, producing the MP3-inside-ASYLUM-wrapper structure the game uses for music playback.

Common Use Cases

  • Preparing custom background music tracks for Jazz Jackrabbit 2 levels or mods by converting modern AAC recordings into the J2B format the game engine reads
  • Replacing or updating existing JJ2 music assets with higher-quality AAC source material that you then transcode down to the MP3-based J2B format
  • Testing how a composed or produced audio track sounds within JJ2's audio pipeline before committing to a final game asset
  • Converting AAC podcast or field recordings into J2B as part of a retro game audio project or demoscene-style music pack
  • Archiving or distributing custom JJ2 level music in the correct container so the game can load it without additional conversion steps on the end user's side

Frequently Asked Questions

Yes, some quality loss is unavoidable because this conversion involves two lossy codecs — your AAC source is decoded and then re-encoded as MP3 via libmp3lame. Each re-encode introduces generation loss. To minimize degradation, use the highest bitrate your source material supports (256k or 320k) rather than the default 128k, especially if your AAC file was originally encoded at a high bitrate.
J2B files produced here contain MP3 audio encoded with libmp3lame wrapped in a file with the .j2b extension, which matches the structure the JJ2 engine expects. However, the ASYLUM Music Format header details may vary between implementations, so compatibility with specific JJ2 versions or modding tools should be tested. The conversion follows the same codec path (libmp3lame) used by standard JJ2 audio tooling.
J2B is not a distinct audio codec — it is a container format specific to Jazz Jackrabbit 2 that wraps MP3 audio data. FFmpeg does not have a dedicated J2B muxer, so the output is produced by encoding the audio with libmp3lame (the standard LAME-based MP3 encoder) and writing it with a .j2b extension. The underlying audio stream is valid MP3, which is what the JJ2 engine actually decodes.
Modify the -b:a flag in the command. For example, replacing -b:a 128k with -b:a 320k produces higher-quality MP3 audio inside the J2B file, while -b:a 64k reduces file size at the cost of audio fidelity. For game audio use cases, 128k to 192k is typically a reasonable balance between quality and file size within a JJ2 level package.
Metadata preservation is very limited in this conversion. AAC files can carry ID3 or iTunes-style tags (title, artist, album), but J2B's ASYLUM Music Format wrapper has no standardized metadata fields for this kind of information. FFmpeg may attempt to pass some basic tags through libmp3lame's ID3 support, but game engines like JJ2 ignore this data entirely and it should not be relied upon.
The command shown processes a single file, but you can adapt it for batch conversion in a shell script. On Linux or macOS, use: for f in *.aac; do ffmpeg -i "$f" -c:a libmp3lame -b:a 128k "${f%.aac}.j2b"; done. On Windows Command Prompt: for %f in (*.aac) do ffmpeg -i "%f" -c:a libmp3lame -b:a 128k "%~nf.j2b". This is especially practical for large collections of game audio assets that exceed the browser tool's 1GB limit or need to be processed in bulk.

Technical Notes

The J2B format originates from the ASYLUM Music Format used in Jazz Jackrabbit 2 and is not widely supported outside that game's ecosystem. FFmpeg treats the .j2b output as an MP3-wrapped file because there is no dedicated J2B muxer in the FFmpeg codebase — the format relies on MP3 as its underlying codec, which libmp3lame produces reliably. The AAC-to-MP3 transcode path involves a full decode-encode cycle, meaning both the AAC decoder and the LAME MP3 encoder introduce their own quantization artifacts. At 128k, AAC generally outperforms MP3 in perceptual quality, so transcoding a 128k AAC to 128k MP3 will produce a file that sounds slightly worse than the original; using a higher output bitrate like 192k or 256k compensates for some of this. Neither format supports video, subtitles, chapters, or multiple audio tracks, so no stream-selection logic is needed. The .j2b extension is the key identifier for JJ2 compatibility — the audio payload is standard MP3 and can be remuxed or inspected with standard MP3 tools if the extension is changed.

Related Tools