Voxbound / Convert M4B to MP3
How to convert an M4B audiobook to MP3 on Windows
You don't need a separate M4B to MP3 converter: FFmpeg, which is free, converts an M4B that isn't copy-protected with one command. Decide first what you want: one long MP3, which can keep the chapters as marks that some players show, or one MP3 per chapter, which players list as tracks, in order.
Before you start
The commands need FFmpeg, which includes ffprobe; our MP3 to M4B guide shows how to install it. Run them in Windows PowerShell, in the folder that holds the book, with the file name in place of book.m4b.
This page covers audiobooks that aren't copy-protected. Protected ones, such as Audible's .aax downloads, can't be converted with the commands here or with Voxbound.
To see what the book holds before you convert it, list its chapters:
ffprobe -v error -show_chapters -of compact "book.m4b"
Each chapter prints as one line with its start time, end time and title. No lines means the book has no chapters, and converting it to one MP3 is the only way that makes sense.
One MP3 that keeps the chapters
This makes one MP3 at 128 kbps with the book's title, author and album tags and its cover:
ffmpeg -i "book.m4b" -map 0:a -map 0:v? -c:a libmp3lame -b:a 128k -c:v copy -id3v2_version 3 "book.mp3"
FFmpeg also copies the chapters into the MP3 as chapter marks (ID3 chapter frames): running the check above on book.mp3 lists them. Whether you see them depends on the player. Audiobookshelf reads chapters with ffprobe, the same tool as the check; other players may not show chapter marks in an MP3, so try the file in yours before converting a whole library. Change 128k to 64k for a file about half the size.
One MP3 per chapter
This script reads the chapter list, then cuts each chapter to its own MP3, numbered in order and named after the chapter. Paste it into Windows PowerShell as one block:
[Console]::OutputEncoding = [Text.Encoding]::UTF8
$book = "book.m4b"
$chapters = (ffprobe -v error -show_chapters -of json $book | ConvertFrom-Json).chapters
$pad = [Math]::Max(2, "$($chapters.Count)".Length)
$n = 0
foreach ($c in $chapters) {
$n++
$title = if ($c.tags.title) { $c.tags.title } else { "Chapter $n" }
$name = ("{0:D$pad} {1}" -f $n, $title) -replace '[\\/:*?"<>|]', '_'
if ($PSVersionTable.PSVersion.Major -lt 7) { $title = $title -replace '"', '\"' }
ffmpeg -v error -ss $c.start_time -to $c.end_time -i $book -map 0:a -map 0:v? -c:a libmp3lame -b:a 128k -c:v copy -id3v2_version 3 -map_chapters -1 -metadata "title=$title" -metadata "track=$n/$($chapters.Count)" "$name.mp3"
}
Each file gets its chapter's title, or "Chapter 3" and so on when a chapter has none, and a track number such as 3/12. It keeps the book's author, album and cover, so a player lists the chapters in order. File names start with the number, padded so they sort in order: 01, 02, and 001 for a book with more than 99 chapters. Characters that Windows doesn't allow in file names, such as :, ? and ", become _ in the file name but stay in the title tag.
Two lines are there for Windows PowerShell: the first makes it read ffprobe's output as UTF-8, so accented titles come through intact, and the $PSVersionTable line escapes double quotes in a title, which Windows PowerShell would otherwise split into two arguments. Putting -ss before -i makes FFmpeg jump to each chapter instead of decoding the book from the start every time.
One MP3 with Voxbound
Voxbound makes one MP3 without typing commands:
- Drop the M4B onto the Voxbound window.
- Click Import tags in the Book card to fill in the title, author and other details from the file, or Look up to find them online.
- Click Change in the Output card, choose MP3 and a Quality: 64k, 128k, 192k or 256k.
- Click Merge files.
You get one MP3 with the book's details and the cover from the file. It has no chapters: Voxbound doesn't write chapters into MP3 files, so for chapters, use one of the FFmpeg ways above. The free trial covers one book; see the download page.
Which way to use
| Way | Files | Chapters | Details and cover |
|---|---|---|---|
| FFmpeg, one file | One MP3 | Kept as chapter marks; not every player shows them | Copied from the M4B |
| FFmpeg, one per chapter | One MP3 per chapter | Each chapter is its own file, listed as a track | Chapter title and track number on each, plus the book's author, album and cover |
| Voxbound | One MP3 | None | Details from the file with Import tags, or online with Look up; the cover from the file |
If your player handles M4B, there may be no need to convert at all: our guide to M4B, M4A and MP3 explains what each format does.
Questions
Short answers to what people ask most about converting an M4B.
Can you convert an M4B to MP3?
Yes, if the audiobook isn't copy-protected. One FFmpeg command turns it into one MP3, and a short script turns it into one MP3 per chapter.
How do I convert M4B to MP3 for free?
Use FFmpeg, which is free. The command and the script on this page are all you need; there's no separate M4B to MP3 converter to install.
Does converting M4B to MP3 keep the chapters?
FFmpeg writes the chapters into the MP3 as chapter marks. Audiobookshelf reads chapters with ffprobe, which lists them, but other players may not show them. To be sure of chapters in any player, make one MP3 per chapter.
How do I split an M4B into chapters?
Read the chapter list with ffprobe and cut each chapter to its own MP3 with FFmpeg. The script on this page does both, and names each file after its chapter.
Why won't my audiobook convert?
If it's copy-protected, such as an Audible .aax download, neither the commands on this page nor Voxbound can convert it.
Going the other way?
Voxbound combines MP3 files into one M4B with chapters, a cover and the right settings for your player.
Get Voxbound