YTWAV is a lightweight macOS-only tool for downloading YouTube audio and converting it to lossless WAV/PCM. It offers a simple GUI (Tkinter) and a flexible CLI, uses yt-dlp for retrieval, and ffmpeg for audio conversion.
- macOS-only
- GUI (Tkinter) + CLI
- Minimal dependencies:
yt-dlpand systemffmpeg
- Download audio and convert to WAV/PCM (via FFmpeg)
- Resilient retries to handle errors (e.g., 403/429)
- Batch mode via URL list file
- Configurable audio settings: sample rate, channels, bit depth
- Safe filename handling
- Optional maintenance/diagnostics script
python3(3.11+ recommended)- Homebrew
ffmpeginstalled via Homebrew
If your system is fresh and Homebrew is not installed:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Then verify python3 and pip3. If they are missing or not working, install Python:
brew install python- Clone the repository:
git clone https://github.com/Atomcio/YouTube-WAV-downloader-MAC.git cd YouTube-WAV-downloader-MAC - Install Python dependencies:
pip3 install -r requirements.txt
- Install FFmpeg:
brew install ffmpeg
- Make macOS launch scripts executable (optional but convenient):
chmod +x macos/run_gui.command macos/run_cli.sh
- Launch the GUI:
./macos/run_gui.command
- Alternatively:
python3 ytwav_gui.py
- Single URL:
./macos/run_cli.sh "https://youtube.com/watch?v=VIDEO_ID" - Using Python directly:
python3 ytdl_wav.py "https://youtube.com/watch?v=VIDEO_ID"
The CLI exposes fine-grained control over output quality and behavior:
--list <file>: Path to a text file with one URL per line (lines starting with#are treated as comments)-o, --out <dir>: Output directory (default:wav_out)--sr <int>: Sample rate (default:48000)--ch <1|2>: Channels:1mono or2stereo (default:2)--bit <16|24>: WAV bit depth (default:16)--keep-src: Keep the original downloaded audio file (e.g.,.m4a)--retries <int>: Retry count for errors (default:5)
- Single video to a custom directory, 44.1 kHz mono, 24-bit:
python3 ytdl_wav.py "https://youtube.com/watch?v=VIDEO_ID" -o my_wavs --sr 44100 --ch 1 --bit 24 - Batch from file:
python3 ytdl_wav.py --list urls.txt --out batch_wavs
- Keep source file:
python3 ytdl_wav.py "https://youtube.com/watch?v=VIDEO_ID" --keep-src
- Main scripts:
ytdl_wav.py,ytwav_gui.py - Maintenance:
maintenance.py - macOS helpers:
macos/run_gui.command,macos/run_cli.sh,macos/build_app.sh,macos/setup.py,macos/README_macOS.md - Examples:
urls.txt - Outputs:
wav_out/,wav_out_already/
- Run maintenance checks and logging:
python3 maintenance.py
- This verifies
yt-dlpandffmpeg, can run a test download, and logs intomaintenance.log.
ffmpeg: command not found- Install FFmpeg:
brew install ffmpeg - Verify PATH:
which ffmpeg
- Install FFmpeg:
- Permission denied when running scripts
- Grant execute permission:
chmod +x macos/run_gui.command macos/run_cli.sh
- Grant execute permission:
- Update
yt-dlpif you see HTTP or extraction issues:pip3 install --upgrade yt-dlp
- Run automated fix script:
chmod +x macos/self_repair.sh ./macos/self_repair.sh
- What it does:
- Upgrades
pipandyt-dlp - Installs/upgrades
ffmpegvia Homebrew - Clears
yt-dlpcache - Suggests PATH fixes for Apple Silicon
- Verifies environment and prints guidance
- Upgrades
- If issues persist, run diagnostics:
python3 maintenance.py
Recommended license: MIT (add a LICENSE file if desired).
Use in accordance with YouTube’s Terms of Service and applicable copyright laws. This tool is intended for lawful, licensed content usage.