audiobook splitter

Welcome!

This tool helps you download audio from youtube and split the resulting file into individual tracks, based on the timestamps.

It requires minimal setup to work. Check the sidebar for more details!

info

This tool is a simple proof of concept. I created it to download audiobooks from youtube and split them into separate chapters.

You can use it to download and split any kind of audio content from youtube. The original goal was to make life easier for me, a parent, whose daughter finishes audiobooks at an unreasonable pace.

You can use the output of this tool with a Yoto, or any device that can play mp3 files.

Note: this tool only generates commands that you can use locally on your device. It does not automatically download content from youtube for you, and does not run anything on your device.

Make sure that you only use it with content that is legally available for you to download.

Check out the GitHub repo for more details.


requirements

You need two command‑line tools:

1. yt-dlp — downloads the audio

2. ffmpeg — splits the chapters

Both are free and open-source.

Install via package manager

If you do not have a package manager yet, install WinGet for Windows, or homebrew for macOS.

You can use these commands to install the required tools automatically:

Windows - WinGet

winget install -e --id yt-dlp.yt-dlp
winget install -e --id Gyan.FFmpeg

macOS - homebrew

brew install yt-dlp ffmpeg

install manually

→ yt-dlp installation guide→ ffmpeg downloads

finding the right ffmpeg package can be a bit tricky. for windows, download the latest release build directly from here: ffmpeg-release-essentials.zip

for macOS, check the stable release here: ffmpeg-X.Y.Z.zip

X.Y.Z. is going to be a version number.


how to use

steps

1. Install the required tools.

2. Paste a youtube url.

3. Paste timestamps (from youtube description/comments).

4. Optional: add a custom title.

5. Click generate to create the commands.

6. Run the generated commands in a terminal.

7. Your mp3 tracks should be ready in the output folder.

output scenarios

Single file download (no timestamps):

• With custom title: Creates your_custom_title.mp3

• Without custom title: Creates youtube_video_title.mp3


Download and split into chapters:

• With custom title: Creates your_custom_title.mp3, folder your_custom_title_timestamp, and tracks like 01_Chapter1.mp3

• Without custom title: Creates full_audio.mp3, folder output_<date-timestamp>, and tracks like 01_Chapter1.mp3


Audio splitting only (no URL):

• Only generates commands for splitting. Use this if you want to split an audio file you already downloaded.

• Creates a folder like output_<date-timestamp>, and tracks like 01_Chapter1.mp3

timestamp examples

This tool supports some common timestamp formats. Formatting is important, so make sure you check these examples.

Check the troubleshooting section if you encounter any issues.

Standard WEBVTT:

WEBVTT

00:00:00 --> 00:04:35

Title 1

00:04:35 --> 00:09:21

Title 2

00:09:21 --> 00:12:08

Title 3

See the WEBVTT specs for more info and examples.

Simple format, with start times only:

00:00 Title 1

04:35 Title 2

09:21 Title 3

Inverse simple format, with start times only:

Title 1 00:00

Title 2 04:35

Title 3 09:21


troubleshooting

• The tool checks if the format of the youtube URL you enter is valid or not, but it does not check if there is actual content behind a youtube URL that is otherwise valid.

• If you use a truncated youtube URL, yt-dlp will throw an error and ffmpeg will not find any files to split. In this scenario, the process will finish without any output.

• Youtube shorts are currently not supported.


The tool cleans up your input to help you avoid some common issues:

• missing chapter names or titles will automatically create Untitled files

• leading numbers and patterns like "1. ", "2: ", "3 - " are removed

• illegal filename characters, spaces, underscores, etc. are trimmed


If the filenames or audio lengths look weird in the output, check your input and the generated commands for incorrect timestamps.