Repository navigation
Converting to MP3
An audiobook you bought as one .m4b, or ripped to .ogg, plays here perfectly
well. What it cannot do is carry tags: this app writes metadata into MP3 only,
so those books sit in Needs tags for ever, however often you press Write into
MP3s.
Converting is the way out of that, and it is a first-class operation rather than a workaround: a chapter becomes a track, the result is a properly tagged book, and the files it came from are kept until you say otherwise.
Needs converting in the left column of the admin page lists every book whose
files are not MP3, with what they are — .m4b, .ogg, .m4a, .flac, .opus —
and how many files each has. That list is the answer to "why will this book not
leave Needs tags".
One book at a time is converted from the list, or with ⤳ Convert to MP3… in the menu on its cover (right-click it, or hold it on a phone). That item is only offered on a book that is not already MP3.
A bar at the bottom says which chapter it is on. Converting a long .m4b takes
minutes, and it happens on the server: you may close the page, walk away,
or open the app on another device, and it carries on. Come back and the page
picks the job up again and follows it to the end.
Convert to MP3… is refused on a book while a conversion is running, and says so rather than quietly starting a second one over the top of the first.
This is the part worth understanding, because it is what makes the result a better book than the one you started with.
An .m4b is usually one file with chapter marks inside it. Most players
treat that as a single two-hundred-megabyte track you scrub through. Converting
splits it on those marks:
- an
.m4bof 30 chapters becomes 30 MP3s - named
01 - <chapter>.mp3,02 - <chapter>.mp3, in order - each carrying its chapter name as its title and its number as its track number
So the player lists the chapters, the track pulldown jumps between them, and the progress bar means something. A file with no chapter marks at all becomes one MP3 — nothing is invented that was not in the file.
Cover art the source carried is written beside the audio as cover.jpg, which is
where both a scan and the tag writer look for one. Nothing is lost on the way.
After converting, the book is an ordinary MP3 book: Write into MP3s works on it, Find metadata can fill it in, and it leaves Needs tags like any other.
The files the book came from are moved, not removed: into a .converted
folder inside the same library folder, and listed under Converted in the left
column with what they were, how big they were, and when they were converted.
Check the result first — play a chapter, look at the length, see that the chapters came out as you expected. Then delete the originals from that list, one book at a time or all of them at once. A scan leaves the kept originals alone, so they never turn up as a second copy of the book.
Converting uses ffmpeg and ffprobe. They are part of the container image from version 2.3.0 on: nothing to install, nothing to upload, nothing to configure, and by definition the build that image is for.
Before 2.3.0 they had to be supplied by hand, which was a mistake and is gone. A container older than that says so plainly when you press the button — update it to the newest build.
Every refusal names a reason rather than failing quietly:
| What it says | What it means |
|---|---|
| ffmpeg is not in this container. It is part of the image from 2.3.0 on: update the container to the newest build. | exactly that — the image predates 2.3.0 |
ffprobe would not run (<code>): … |
it is in the image but the operating system refused it, and the code is there to say why |
| ffmpeg is in this container but said nothing when asked for its version. | it answered emptily, which is an incomplete image |
| Every file of that book is already an MP3. | there is nothing to convert |
| A book is being converted already. Wait for it to finish. | one at a time, on purpose |
| the file's name, then whatever ffprobe or ffmpeg said about it | the tool's own words, not this app's guess — usually a damaged file |
Two awkward cases it handles rather than choking on:
-
An
.oggwith an ID3 tag in front of it. Some taggers meant for MP3 write a tag ahead of the Ogg stream, which the Ogg reader will not look past: those books show a length of 0 and no tags, and used to refuse to convert with nothing but "ffprobe exited 1". The tag's own length is now read out of its header and skipped, and the book converts. - A file that cannot be read at all is reported on Broken on disk with the file named and the reason in words, instead of a book quietly arriving with no length.
- It never converts on its own. Every conversion is one you asked for, one book at a time.
- It does not convert to anything but MP3, and does not re-encode MP3s.
-
.aax(Audible's own format) is not read at all, so it cannot be converted here either.
![]()