The short answer
To convert M4B to MP3, re-encode the AAC audio as MP3, either as one MP3 with chapter marks or as one MP3 per chapter, which every player can step through. Our free tool does both in your browser; ffmpeg does it on any computer.1,2 Renaming the file to .mp3 doesn’t convert it. These steps are for DRM-free files only.
- Easiest
- In your browser
- Most compatible
- One MP3 per chapter
- Rename to .mp3?
- Doesn’t work
- DRM files
- Not supported
In your browser (no install)
Open the M4B to MP3 tool
It converts in your browser, so the book is never uploaded.
Drop the M4B
Its chapters, cover and details are read straight away.
Choose one file or one per chapter
One MP3 keeps the chapter marks inside it; one per chapter makes numbered files any player can step through.
Pick a quality and convert
Match or exceed the source’s bitrate; 64 kbps is fine for a 64 kbps audiobook. Download the MP3 or a ZIP of chapters.
With ffmpeg (Windows, Mac, Linux)
One MP3, keeping the chapters and cover
ffmpeg writes an ID3v2 tag with the cover as an attached picture.1 When the M4B has chapters, it also writes one ID3 chapter frame per chapter plus a table of contents (tested with ffmpeg 6.1). Drop -map 0:v and the two -metadata:s:v options if the M4B has no cover.
ffmpeg -i book.m4b -map 0:a -map 0:v -c:a libmp3lame -b:a 64k -c:v copy \
-id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" book.mp3One MP3 per chapter
This script reads the chapter times and titles with ffprobe and cuts each chapter to its own numbered MP3, titled and track-numbered. It handles commas and quotes in chapter titles, and -map_chapters -1 stops every file inheriting the full chapter list.2 -q:a 4 is LAME’s default quality, which ffmpeg’s guide calls close to perceptual transparency; use -b:a 64k for small speech files.3
#!/usr/bin/env bash
# Usage: ./split.sh book.m4b -> split/NN - Title.mp3, one per chapter
in="$1"; mkdir -p split
count=$(ffprobe -v error -show_entries chapter=id -of csv=p=0 "$in" | wc -l)
for ((i=0; i<count; i++)); do
start=$(ffprobe -v error -show_entries chapter=start_time -of csv=p=0 "$in" | sed -n "$((i+1))p")
end=$(ffprobe -v error -show_entries chapter=end_time -of csv=p=0 "$in" | sed -n "$((i+1))p")
title=$(ffprobe -v error -show_entries chapter_tags=title -of default=nw=1:nk=1 "$in" | sed -n "$((i+1))p")
n=$(printf '%02d' $((i+1)))
ffmpeg -nostdin -hide_banner -loglevel error -y -i "$in" -ss "$start" -to "$end" \
-map 0:a -map_chapters -1 -c:a libmp3lame -q:a 4 \
-metadata title="$title" -metadata track="$((i+1))/$count" \
"split/$n - ${title//[\/\\:*?\"<>|]/}.mp3"
doneJust one stretch
ffmpeg -i book.m4b -ss 00:10:00 -to 00:25:30 -map 0:a -c:a libmp3lame -b:a 64k ch02.mp3Other ways
- VLC: Media, Convert/Save, then an MP3 audio profile. It converts the whole file to one MP3, without chapters.8
- Audacity: imports M4A and M4B once its optional FFmpeg library is installed, then exports MP3; chapters are not carried over.7
- Apple Music or iTunes: can convert tracks between formats, but Apple notes that converting between compressed formats can reduce quality.5
Why renaming doesn’t work
An M4B is AAC audio inside an MPEG-4 container. Changing the extension to .mp3 leaves the same bytes behind: a renamed file still reads as MPEG-4 AAC (we checked with ffprobe). Some players look inside and play it anyway; MP3-only devices reject it. Renaming to .m4a, on the other hand, is harmless, because M4A and M4B are the same format.
Audiobook File InspectorNot sure what a file really is? See its true format, codec, bitrate and chapters.Open the tool