Convert J2B to CAF — Free Online Tool
Convert J2B game audio files from Jazz Jackrabbit 2 into CAF (Core Audio Format) for use in Apple environments. This tool decodes the ASYLUM Music Format wrapped inside the J2B header and outputs uncompressed PCM audio in a CAF container, giving you a lossless, high-fidelity representation of the original game soundtrack.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your J2B file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
J2B files are essentially ASYLUM Music Format (AMF) module files wrapped in a simple proprietary header used by Jazz Jackrabbit 2. FFmpeg first strips the J2B header and interprets the underlying AMF module data — which encodes music as a sequence of pattern-based instrument and note events rather than raw audio. FFmpeg's module tracker decoder synthesizes this structured data into a raw audio stream (decoded via the libmp3lame pipeline from the original MP3-based encoding). That synthesized audio is then re-encoded using the PCM S16 LE codec (16-bit signed little-endian pulse-code modulation) and wrapped into Apple's CAF container. Because CAF is designed to overcome AIFF and WAV limitations, it handles the resulting uncompressed audio cleanly and is fully compatible with macOS and iOS audio toolchains.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary — the open-source multimedia processing engine that handles J2B header parsing, ASYLUM Music Format synthesis, and CAF container writing in a single pipeline. |
-i input.j2b
|
Specifies the input J2B file. FFmpeg detects the J2B wrapper, strips the proprietary Jazz Jackrabbit 2 header, and passes the underlying ASYLUM Music Format data to its tracker decoder for synthesis. |
-c:a pcm_s16le
|
Sets the audio codec to 16-bit signed little-endian PCM. This produces uncompressed audio in the CAF container, ensuring no additional lossy encoding is applied on top of the tracker synthesis already performed during J2B decoding. |
-b:a 128k
|
Specifies a target audio bitrate of 128 kbps. For PCM codecs like pcm_s16le, bitrate is determined by sample rate and bit depth rather than this flag, so this parameter has no meaningful effect in this specific command — the actual output bitrate is governed by the PCM format parameters. |
output.caf
|
Defines the output file as a CAF (Core Audio Format) file. FFmpeg infers the CAF container from the .caf extension and packages the synthesized PCM audio into Apple's chunk-based container, ready for use with macOS and iOS Core Audio APIs. |
Common Use Cases
- Extracting Jazz Jackrabbit 2 in-game music for use in macOS-based audio editing projects in Logic Pro or GarageBand, which natively support CAF files
- Archiving retro game soundtracks from J2B files as uncompressed PCM audio in CAF for long-term preservation without additional lossy compression artifacts
- Preparing J2B game audio for use in iOS or macOS app development, where CAF is the preferred container for audio assets handled by Core Audio APIs
- Sampling or remixing Jazz Jackrabbit 2 music by converting J2B tracks to CAF so they can be imported as high-quality audio into DAWs running on Apple Silicon Macs
- Testing Apple platform audio pipelines using retro game audio content by converting niche J2B files into a format Core Audio can process without additional plugins
Frequently Asked Questions
The J2B format stores music as synthesized tracker data (ASYLUM Music Format), so the audio you hear is generated by a software synthesizer at decode time. FFmpeg synthesizes this into PCM audio, and the CAF output uses pcm_s16le — 16-bit uncompressed PCM — which introduces no additional lossy compression. The main quality factor is how accurately FFmpeg's AMF decoder reproduces the original playback, not the CAF container or codec itself.
CAF supports a wide range of codecs including AAC, FLAC, Opus, and various PCM formats, but pcm_s16le is chosen as the default because it is uncompressed and universally readable across all Core Audio-compatible tools on macOS and iOS. Since J2B audio is already synthesized from tracker data (not a high-bitrate source), using uncompressed PCM avoids introducing any additional lossy encoding artifacts on top of the synthesis process.
Yes. To use FLAC for lossless compression, replace '-c:a pcm_s16le' with '-c:a flac'. To use AAC for a smaller lossy output, replace it with '-c:a aac' and optionally adjust bitrate with '-b:a 192k'. Both FLAC and AAC are supported inside the CAF container. FLAC is a good choice if you want to reduce file size without sacrificing audio fidelity, while AAC is better if you need smaller files for streaming or app delivery.
On macOS or Linux, you can run a shell loop: 'for f in *.j2b; do ffmpeg -i "$f" -c:a pcm_s16le "${f%.j2b}.caf"; done'. On Windows Command Prompt, use: 'for %f in (*.j2b) do ffmpeg -i "%f" -c:a pcm_s16le "%~nf.caf"'. This processes every J2B file in the current directory and outputs a matching CAF file. Batch processing on the desktop is especially practical for full Jazz Jackrabbit 2 soundtrack exports that exceed the browser tool's 1GB limit.
J2B files carry very minimal metadata — primarily what is embedded in the underlying ASYLUM Music Format header, such as a module title or tracker signature. FFmpeg may pass through whatever text metadata it can extract, but CAF's metadata model (based on Apple's chunk-based structure) is quite different from tracker file headers. In practice, you should expect little to no meaningful metadata in the output CAF file, and any track or artist information would need to be added manually after conversion using a tool like afinfo or a metadata editor.
J2B files are tiny because they store music as structured tracker instructions — note events, instrument samples, and patterns — rather than raw audio data, similar to MIDI. When FFmpeg synthesizes and decodes this into pcm_s16le audio, it produces a full uncompressed waveform at the decoded sample rate and duration. A 30-second piece of music that fits in a few hundred kilobytes as a J2B module can easily expand to several megabytes as uncompressed PCM in CAF. Switching the output codec to FLAC ('-c:a flac') can significantly reduce file size while keeping the audio lossless.
Technical Notes
J2B is a format exclusive to Jazz Jackrabbit 2, wrapping an ASYLUM Music Format (AMF) module inside a custom binary header. AMF is itself a compact tracker format where music is represented as sequences of pattern data and sampled instruments rather than pre-rendered audio. FFmpeg decodes AMF using its internal module tracker engine, synthesizing the output into a PCM stream. The quality and accuracy of this synthesis depends on FFmpeg's AMF decoder implementation, which may not perfectly replicate the original game's audio hardware or software mixer behavior. The CAF output uses pcm_s16le by default — 16-bit signed little-endian PCM — which is compatible with Core Audio on macOS 10.4+ and iOS, and is directly importable into Logic Pro, GarageBand, and Xcode audio asset pipelines. CAF's design removes the 4GB file size ceiling present in WAV and AIFF, though for typical J2B-derived audio this limit is irrelevant. If you need smaller CAF files, FLAC encoding ('-c:a flac') is a lossless alternative that CAF supports natively. AAC ('-c:a aac') is appropriate for delivery use cases but introduces lossy compression on top of an already synthesized source. No subtitle, chapter, or multiple audio track features are relevant to this conversion, as J2B is a single-track audio-only format.