← Publish Kit

ACX audiobook requirements, and how to check your files before you upload

ACX is the platform that distributes audiobooks to Audible, Amazon and Apple Books. It rejects a submission at quality review when a file breaks one of its published audio rules. The rejection email arrives days later and names the rule, not the file. Here is every file-level rule in one table, with what the free checker does for each.

The rules

RuleWhat ACX asks forPublish Kit
FormatMP3Checked
Bitrate192 kbps or higher, constant bitrate (CBR)Checked. Every frame is read, so a VBR file is caught even without a VBR header
Sample rate44.1 kHzChecked
ChannelsAll files mono, or all files stereo, never mixedChecked across the set
File lengthOne chapter or section per file, at most 120 minutesChecked
CreditsOpening credits and closing credits, each in its own fileFlagged when no file name looks like credits
Retail sampleA separate 1–5 minute sampleFlagged when no file name contains "sample"
RMS loudnessBetween −23 dB and −18 dBMeasured on 16-bit WAV masters
Peak−3 dB or lowerMeasured on 16-bit WAV masters
Noise floor−60 dB RMS or lowerEstimated from the quietest half-second (your room tone) in WAV masters
Room tone0.5–1 s at the head and 1–5 s at the tail of each fileNot checked; listen for it
Cover artSquare, at least 2400 × 2400 px, JPEG, RGBChecked by publish-kit cover cover.jpg --for audiobook

ACX revises its requirements. These are as published when this page was written, so read ACX's own audio submission requirements before you submit.

Why measure loudness on the WAV, not the MP3

Encoding changes peaks slightly, but RMS and noise floor come through MP3 encoding almost unchanged. A WAV master is plain samples, so it can be measured exactly in the browser without decoding. Fix levels on the master, then encode. To measure an MP3 directly, FFmpeg prints RMS and peak with:

ffmpeg -i chapter-01.mp3 -af astats=metadata=0 -f null -

Encoding that passes

ffmpeg -i chapter-01.wav -ar 44100 -ac 1 -codec:a libmp3lame -b:a 192k chapter-01.mp3

-b:a with libmp3lame gives constant bitrate. -q:a gives VBR, the most common reason a file fails the bitrate rule.

From the command line

publish-kit audiobook check audio/*.mp3      # the file rules
publish-kit audiobook check masters/*.wav    # plus loudness
publish-kit audiobook m4b --run              # one chaptered .m4b for direct sale
publish-kit audiobook feed                   # a private podcast-style feed of the chapters

Each command takes --json and exits 1 when a rule fails, so an AI agent or a CI job can loop until the set passes. See the CLI.