Convert CAF to J2B — Free Online Tool

Convert CAF audio files to J2B format using the LAME MP3 encoder, transcoding Apple's high-fidelity Core Audio Format into the ASYLUM-based module music container used by Jazz Jackrabbit 2. This tool runs entirely in your browser — no uploads, no server, completely free for files up to 1GB.

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

CAF files store audio in a variety of codecs — commonly PCM, AAC, FLAC, or Opus — inside Apple's extensible container. Since J2B is a game-specific audio format built around the ASYLUM Music Format with a custom header, and its only supported codec is MP3 (via the LAME encoder), this conversion always involves a full audio transcode. The raw audio stream is decoded from whatever codec it uses in the CAF container, then re-encoded to MP3 at 128kbps by default using libmp3lame, and finally wrapped in the J2B container structure. If your source CAF contains lossless PCM or FLAC audio, this will be the first lossy encoding step, so some audio fidelity will be lost. If it already contains AAC or Opus, you are performing a lossy-to-lossy transcode, which compounds generation loss.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg command-line tool. This is the same underlying engine that powers the browser-based conversion via FFmpeg.wasm compiled to WebAssembly.
-i input.caf Specifies the input file as a CAF (Core Audio Format) container. FFmpeg will detect the audio codec inside the CAF — which could be PCM, AAC, FLAC, Opus, or others — and decode it for re-encoding.
-c:a libmp3lame Selects the LAME MP3 encoder for the audio stream. This is required because J2B only supports MP3 audio, and libmp3lame is FFmpeg's standard, high-quality implementation of the LAME encoder for producing MP3 output.
-b:a 128k Sets the MP3 audio bitrate to 128 kilobits per second. This is the default quality setting, providing a reasonable balance of file size and audio quality for game audio use in the J2B format. You can increase this to 320k for better fidelity or reduce it to 64k for smaller files.
output.j2b Defines the output filename with the .j2b extension. FFmpeg uses this extension to mux the encoded MP3 stream into the J2B container format, which wraps the audio in the ASYLUM Music Format header structure expected by Jazz Jackrabbit 2.

Common Use Cases

  • Preparing custom music tracks recorded or exported on macOS (as CAF) for use as replacement audio in Jazz Jackrabbit 2 modding or fan projects
  • Converting high-quality PCM or FLAC-encoded CAF recordings to a compact MP3-based J2B file to meet the file format requirements of JJ2 level editors like JCS (Jazz Creation Station)
  • Archiving or cataloguing Jazz Jackrabbit 2 audio assets by converting existing CAF production files to the native J2B game format for distribution
  • Testing custom composed music — exported from GarageBand or Logic Pro as CAF — in the J2B format before embedding it in a JJ2 custom episode
  • Batch-converting a library of CAF audio stems from an Apple-ecosystem workflow into J2B files for a retro-game audio project targeting the JJ2 engine

Frequently Asked Questions

Yes. J2B only supports MP3 audio via the LAME encoder, which is a lossy format. Even if your CAF file contains uncompressed PCM (pcm_s16le, pcm_s24le, etc.) or lossless FLAC audio, the transcode to libmp3lame will permanently discard audio data that MP3 compression cannot represent. At 128kbps the result is generally acceptable for game audio use, but it will not be bit-for-bit identical to the source. If fidelity matters, choose the highest bitrate option (320kbps) before converting.
J2B wraps MP3 data, and MP3 itself supports stereo audio, so a stereo CAF file will produce a stereo J2B output. However, the ASYLUM Music Format origin of J2B means that actual Jazz Jackrabbit 2 game engine behavior with stereo tracks may vary depending on the version and context in which the file is played. If you're targeting in-game playback, mono or simple stereo MP3 at moderate bitrates is the safest choice.
Yes. AAC is a lossy codec, and transcoding it to MP3 via libmp3lame means the audio is decoded from AAC (already with some loss) and then re-encoded as MP3 (introducing additional loss). This 'generation loss' can result in audible artifacts, particularly at lower bitrates. If you have access to the original uncompressed or lossless source, it is strongly recommended to export a PCM or FLAC CAF from it first, then convert that to J2B to minimize accumulated quality degradation.
No. J2B is a highly specialized game audio container derived from the ASYLUM Music Format, and it does not have a standard metadata tagging structure equivalent to ID3 tags or Vorbis comments. Any title, artist, album, or other metadata embedded in your CAF file will not carry over to the J2B output. If metadata preservation is important, consider keeping the original CAF file as your archival copy.
Replace the value after '-b:a' in the command. For example, to encode at 320kbps for higher quality, use '-b:a 320k'; for a smaller file at lower quality, use '-b:a 64k'. The full command would look like: ffmpeg -i input.caf -c:a libmp3lame -b:a 320k output.j2b. Keep in mind that J2B is designed for game audio, so extremely high bitrates offer diminishing returns for in-game playback compared to a lossless format.
The single-file command shown here processes one file at a time. To batch convert on the command line, you can use a shell loop. On Linux or macOS: for f in *.caf; do ffmpeg -i "$f" -c:a libmp3lame -b:a 128k "${f%.caf}.j2b"; done. On Windows (PowerShell): Get-ChildItem *.caf | ForEach-Object { ffmpeg -i $_.FullName -c:a libmp3lame -b:a 128k ($_.BaseName + '.j2b') }. The browser-based tool processes files individually, so the FFmpeg command is especially useful when dealing with large batches or files over 1GB.

Technical Notes

CAF (Core Audio Format) is a flexible Apple container that can carry audio in a wide range of codecs — from uncompressed PCM variants (s16le, s24le, s32le, f32le) to lossy formats like AAC and Opus, and even lossless FLAC. J2B, by contrast, is a narrow, game-specific format developed for Jazz Jackrabbit 2 that wraps ASYLUM Music Format data with a simple proprietary header, and it exclusively uses MP3 audio encoded via the LAME encoder (libmp3lame). This means every CAF-to-J2B conversion is a full re-encode with no possibility of stream copying. High-resolution CAF sources (24-bit or 32-bit PCM) will be downsampled and compressed to MP3, with the default 128kbps bitrate targeting a balance between file size and perceptual quality suitable for game audio. CAF's support for large files and multi-channel audio does not translate to J2B — any surround or multichannel audio in the CAF source will be downmixed to stereo or mono during the MP3 encoding stage. There is no subtitle, chapter, or secondary audio track support in either format. FFmpeg's libmp3lame implementation is mature and well-tested, so encoding reliability is high, but the fundamental limitations of the J2B container mean this format is only appropriate for its intended use case: retro game audio playback in the Jazz Jackrabbit 2 engine.

Related Tools