Skip to main content

Convert a directory of audio files into a single .m4b audiobook with chapters, cover art, and metadata

Project description

m4Bookmaker icon

m4Bookmaker

Convert a folder of audio files into a clean M4B audiobook — in seconds.

PyPI License: GPL-3.0 macOS Windows Linux Python 3.11+

Watch this repo (Releases only) to get notified when a new version drops.

Website · Help & Docs · Report a Bug

Drag in a folder, adjust your chapters, hit Convert. m4Bookmaker handles the rest — chapters, cover art, metadata, and even repairs broken audio files automatically.

m4Bookmaker — main window

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
m4Bookmaker — chapter editor

Installation

Download

Get the signed, notarized macOS app or the Windows installer:

m4bookmaker.sageframe.net

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.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

m4bmaker-1.0.2.tar.gz (103.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

m4bmaker-1.0.2-py3-none-any.whl (84.0 kB view details)

Uploaded Python 3

File details

Details for the file m4bmaker-1.0.2.tar.gz.

File metadata

  • Download URL: m4bmaker-1.0.2.tar.gz
  • Upload date:
  • Size: 103.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for m4bmaker-1.0.2.tar.gz
Algorithm Hash digest
SHA256 a94c53c814ee44b20a6920c14da0d3473ecfa37bc4ed894798e2c6e3bac1dd0d
MD5 76c0e40b0a6324f9324015a37855111a
BLAKE2b-256 abbc48a8ed7a3e46caf5f77bd9e8a16a1ba559d60458312d8a38f5ed19883ef2

See more details on using hashes here.

File details

Details for the file m4bmaker-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: m4bmaker-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 84.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for m4bmaker-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4fd2c68e013c8e24c7ef4031fa7414fa18b82f22b4cfbaf848bdd82dc0db218b
MD5 bcc23eceea19635915fcf06a9324d5c9
BLAKE2b-256 5c7fc9a8f82370491c8cc06925798398bd145788f83cad6ead9b43ae8b6b8de8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page