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.3.tar.gz (105.4 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.3-py3-none-any.whl (84.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: m4bmaker-1.0.3.tar.gz
  • Upload date:
  • Size: 105.4 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.3.tar.gz
Algorithm Hash digest
SHA256 e1c600e1c6d2d94d7ac58195beeb43a53e3b6037a3fabf2f3d2ab5572c2afaf8
MD5 5385bc741296cb74e59c204c2b37d677
BLAKE2b-256 4de3dc330cfe786b6b450b0576ea45e7f92a1cb6216599ba0a7c07b4caff4297

See more details on using hashes here.

File details

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

File metadata

  • Download URL: m4bmaker-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 84.6 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 765917e17785a0df7825a858562340be381f46ca4427a4332bafe22f4585004f
MD5 2385d493a2aa725605244710fbabb594
BLAKE2b-256 3dda3b53d96e84d112dcf9afb6758b5110e941cfa901ac566e089d26a4180509

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