Compress M4B Online — Free File Size Reducer

Compress an M4B audiobook file into a smaller M4B by re-encoding its AAC audio stream at a lower bitrate, while preserving chapter markers, bookmarks, and ID3 metadata. Ideal for reducing the storage footprint of long audiobooks without changing the format or losing compatibility with any M4B-aware player.

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

Because both the input and output are M4B containers, this tool focuses entirely on the audio stream — M4B carries no video. The existing AAC audio is decoded and then re-encoded at your chosen target bitrate (default 128k) using FFmpeg's native AAC encoder. This re-encoding is what produces the file size reduction: a 192k or 256k source audiobook encoded down to 128k or 96k will be proportionally smaller. Chapter metadata and bookmarking atoms embedded in the M4B container are passed through and written into the output file. The -movflags +faststart flag reorganizes the MP4/M4B atom structure so the file's index is placed at the beginning, which improves streaming and playback-start performance on apps that support progressive loading.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg program. In this browser-based tool, FFmpeg runs locally via WebAssembly (FFmpeg.wasm) — no data leaves your device.
-i input.m4b Specifies the source M4B audiobook file. FFmpeg reads the MPEG-4 container, identifies the AAC audio stream, and extracts chapter and metadata atoms for writing into the output.
-c:a aac Sets the audio codec to FFmpeg's native AAC encoder. The existing AAC audio is fully decoded and re-encoded — not copied — which is what allows a different (lower) bitrate to be applied and produces the file size reduction.
-b:a 128k Targets a constant audio bitrate of 128 kilobits per second for the re-encoded AAC stream. This is the default compression level; for spoken-word audiobook content, 96k or 64k can reduce file size further with minimal perceptible quality loss.
-movflags +faststart Rewrites the M4B container after encoding so the moov atom (the file's index and metadata) is placed at the start of the file rather than the end. This allows audiobook apps to begin playback and display chapter navigation before the entire file has loaded when streaming from a URL.
output.m4b The filename for the compressed M4B output. Using the .m4b extension ensures the file is recognized as an audiobook by Apple Books, BookPlayer, Bound, and other M4B-aware applications, with chapter and bookmarking support intact.

Common Use Cases

  • Shrinking a large audiobook purchased at high bitrate (192k–256k) to fit on a device with limited storage, such as an older iPod or a phone with a small SD card.
  • Reducing the file size of a long podcast series archived as M4B files before backing them up to cloud storage with limited free tier space.
  • Preparing M4B audiobooks for transfer over a slow or metered connection, such as syncing to a car's infotainment system via Bluetooth or USB at a lower quality that still sounds acceptable for spoken word.
  • Re-encoding a self-produced audiobook recorded at a high studio bitrate into a distribution-ready 64k or 96k M4B, which is more than sufficient for speech and dramatically reduces download size for listeners.
  • Compressing M4B files exported from audiobook creation software before uploading to ACX or a similar platform that enforces file size limits.
  • Archiving a large personal audiobook library at a lower bitrate to free up space while retaining chapter navigation and bookmarking so listening progress is preserved in apps like Bound or BookPlayer.

Frequently Asked Questions

Yes. Chapter markers and bookmarking data in an M4B file are stored as metadata atoms in the MP4 container, not in the audio stream itself. Since this tool re-encodes only the audio and rewrites the same M4B container, those atoms are preserved in the output file. Apps like Apple Books, Overcast, and BookPlayer will recognize chapters in the compressed file exactly as they did in the original.
The size reduction is roughly proportional to the bitrate reduction. For example, compressing a 256k M4B to 128k will roughly halve the audio data size. For a 10-hour audiobook at 256k, that could mean dropping from around 1.1GB to approximately 550MB. The exact saving depends on the source bitrate — if your source is already 128k, compressing to 128k will produce almost no size reduction since the audio is being decoded and re-encoded at the same rate.
For spoken-word content like audiobooks and podcasts, 64k AAC is generally considered the floor for acceptable quality — the human voice is far less demanding than music. At 64k, most listeners will not notice significant quality degradation on earbuds or car speakers. The 96k option is a comfortable middle ground that produces very clean speech with a meaningful file size reduction compared to 128k or higher.
Yes, this is a real consideration. Decoding a lossy AAC stream and then re-encoding it as AAC again is a generation loss — each encode cycle introduces additional artifacts. For spoken-word content the effect is subtle and often inaudible, especially when dropping only one bitrate step (e.g., 192k to 128k). However, if your source is already at 64k or 96k, re-encoding at the same bitrate will degrade quality without reducing file size, so it is best to only compress files whose source bitrate is meaningfully higher than your target.
Replace the value after -b:a in the command. For example, to target 64k for a very small spoken-word file use: ffmpeg -i input.m4b -c:a aac -b:a 64k -movflags +faststart output.m4b. Valid options are 64k, 96k, 128k, 192k, 256k, and 320k. For audiobooks, values between 64k and 128k typically strike the best balance between file size and speech clarity.
The single-file command shown on this page must be run once per file, but you can wrap it in a shell loop to batch process a folder. On Linux or macOS: for f in *.m4b; do ffmpeg -i "$f" -c:a aac -b:a 128k -movflags +faststart "compressed_$f"; done. On Windows PowerShell: Get-ChildItem *.m4b | ForEach-Object { ffmpeg -i $_.Name -c:a aac -b:a 128k -movflags +faststart ("compressed_" + $_.Name) }. This is especially useful for compressing an entire audiobook library in one session.

Technical Notes

M4B is a variant of the MPEG-4 container (MP4) differentiated primarily by its file extension and the presence of audiobook-specific atoms such as chapter markers (using the QuickTime chapter track convention) and the 'audi' brand in the compatible-brands box. Because M4B carries only audio — no video stream — compression here is entirely an audio re-encoding operation. FFmpeg's built-in AAC encoder (-c:a aac) is used rather than libfdk_aac, which produces slightly higher-quality output at equivalent bitrates but requires a separately compiled FFmpeg build. For audiobook content, the quality difference between these encoders is negligible at 96k and above. ID3-style tags (title, author, narrator, cover art embedded as an artwork track) are preserved by default when the container format does not change, but it is worth verifying cover art retention in your specific player after compression. The -movflags +faststart flag performs a second-pass atom rewrite to move the moov atom before the mdat atom; this is critical for streaming playback from a URL but has no effect on locally stored files. Files larger than 1GB should be processed using the FFmpeg command locally, as the browser-based tool supports files up to 1GB.

Related Tools