m4Bookmaker
Convert a folder of audio files into a clean M4B audiobook — in seconds.
⭐ Watch this repo (Releases only) to get notified when a new version drops.
Drag in a folder, adjust your chapters, hit Convert. m4Bookmaker handles the rest — chapters, cover art, metadata, and even repairs broken audio files automatically.
Website · Help & Docs · Report a Bug
Development Process: This project was built using the Ho System, a structured methodology for human-AI collaborative development. The human makes every design decision. The AI implements under direction. There is verification at every step.
What it does
- Automatic chapters from filenames — track numbers and prefixes stripped
- Chapter editor — rename, reorder, merge, split, adjust timestamps inline
- Built-in audio player — scrub through source audio, seek to any chapter boundary
- Edit existing M4Bs — rename chapters and adjust timestamps without re-encoding
- Batch queue — stage multiple books and process them sequentially
- Audio repair — fixes corrupted MP3 frames, missing headers, inconsistent streams
- Automatic cover art — largest image in the directory is used
- Multiple windows — each encoding in parallel
- Full CLI — everything in the GUI is scriptable from the command line
Installation
Download
Get the signed, notarized macOS app or the Windows installer:
ffmpeg is bundled — nothing else to install.
From PyPI
Works on macOS, Windows, and Linux. Requires Python 3.11+ and ffmpeg.
pip install m4bmaker
Or with the optional GUI:
pip install m4bmaker[gui]
Install ffmpeg if you don't have it:
# macOS
brew install ffmpeg
# Ubuntu / Debian
sudo apt install ffmpeg
# Windows (winget)
winget install ffmpeg
From source
Requires Python 3.11+ and ffmpeg.
git clone https://github.com/sageframe-no-kaji/m4bmaker.git
cd m4bmaker
pip install -e .
Launch the GUI:
python -m m4bmaker.gui.app
Or use the CLI:
m4bmaker ./MyBook --title "Dune" --author "Frank Herbert"
CLI reference
m4bmaker <folder> [options]
| Flag | Description |
|---|---|
--title |
Book title |
--author |
Author name |
--narrator |
Narrator name |
--cover |
Path to cover image |
--output |
Output directory |
--bitrate |
AAC bitrate (default: matches source) |
--stereo |
Force stereo output |
--no-prompt |
Skip interactive prompts |
Supported formats
Input: mp3 · m4a · aac · flac · wav · ogg — formats can be mixed in the same folder.
Output: .m4b (AAC in MP4 container with chapter metadata)
Privacy & network activity
m4Bookmaker is fully local — it never uploads your audio files or metadata.
Update checker: On startup, the GUI makes a single outbound request to the GitHub Releases API to check whether a newer version is available:
GET https://api.github.com/repos/sageframe-no-kaji/m4bmaker/releases/latest
User-Agent: m4bmaker/<version>
This sends your IP address and the installed version number to GitHub's API. No other data is transmitted. The check runs silently in the background and fails silently if you are offline. The CLI (m4bmaker command) makes no network calls at all.
Contributing
See CONTRIBUTING.md.
License
GPL-3.0 · © 2026 Andrew T. Marcus
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE for details.
Website · Help Docs · Report a Bug
Made by Sageframe
Metadata
Release files for m4bmaker 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| m4bmaker-1.1.1.tar.gz | 131.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| m4bmaker-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 234.0 kB
Release files / m4bmaker-1.1.1.tar.gz
| Download URL | m4bmaker-1.1.1.tar.gz |
|---|---|
| Size | 131.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2df852ee47fda5fdc18059215f8029aa4c9c61db5a7c15a5caadc93496336de8
|
|
BLAKE2b-256 checksum How to use checksums |
78853e2dfc0168b50e40bed3a5a5e8d7631b34361ddfb1444dbe93eb2ef296d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / m4bmaker-1.1.1-py3-none-any.whl
| Download URL | m4bmaker-1.1.1-py3-none-any.whl |
|---|---|
| Size | 102.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5fe5321b2f706d0c94ef392ed10d059b7c1ae00ddcdd35b162874b8a32345e31
|
|
BLAKE2b-256 checksum How to use checksums |
670dbd64f708e087eefd59e067eb8b910aa379b959ec2d052d4274d0b2f286ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|