Oct 20, 2025

EzTube: A Clean Script-Based YouTube Downloader for macOS

EzTube: A Clean Script-Based YouTube Downloader for macOS

A minimal Bash wrapper around yt-dlp that makes downloading YouTube videos or MP3 audio fast, clean, and repeatable with a simple interactive CLI.

  • Jorge Perez Avatar
    Jorge Perez
    4 min read
  • EzTube Downloader (yt-dlp Wrapper)

    If you download YouTube videos often, you already know the pain:

    • random webm files everywhere
    • naming / output paths all over the place
    • forgetting the exact yt-dlp flags you used last time
    • and having to Google the same commands again and again

    EzTube Downloader fixes that by wrapping yt-dlp inside a clean, interactive Bash script for macOS.

    It’s intentionally simple: pick Video or MP3, choose a quality preset, pick a destination folder, paste a URL, done.

    Repository:
    https://github.com/JPerez00/eztube-downloader

    Why I Built It

    I wanted a downloader that felt like a small tool, not a project.

    Something I could run anytime from the terminal without thinking:

    • no complicated config files
    • no “read the docs” moment
    • no remembering format strings
    • no messy output formats

    Just one script, a few prompts, and consistent results.

    What It Does

    EzTube Downloader supports: filecite/turn0file0

    • Video downloads with quality presets (Best, 1080p, 720p)
    • Audio-only MP3 extraction
    • Clean output folders:
      • ~/Downloads/YouTube
      • ~/Downloads/Other Videos
    • Automatic MKV merging to avoid webm clutter
    • Age-restricted support via browser cookies (Chrome by default)

    The UX: One Flow, No Overthinking

    The whole script is structured around one loop:

    1. Choose download type
    2. (If video) choose quality
    3. Choose save destination
    4. Paste URL
    5. Download
    6. Ask if you want another

    That “repeat download” loop matters more than it sounds. It turns the script into a tiny workflow tool instead of a one-off command.

    The Core of the Script

    1) Quality presets that are actually useful

    Instead of making you manually craft yt-dlp -f strings every time, the script offers three options and maps them to the right selectors:

    case $video_choice in
      1) video_quality="bestvideo+bestaudio/best" ;;
      2) video_quality="bestvideo[height<=1080][fps<=60]+bestaudio/best[height<=1080][fps<=60]" ;;
      3) video_quality="bestvideo[height<=720][fps<=60]+bestaudio/best[height<=720][fps<=60]" ;;
      *) video_quality="bestvideo+bestaudio/best" ;;
    esac

    This gives you predictable results, without losing the flexibility that makes yt-dlp so good.

    2) MKV output by default (no WebM clutter)

    YouTube commonly serves webm video formats, especially at higher qualities.

    That’s fine, but most people want one clean file at the end.

    EzTube forces a merged output container:

    yt-dlp -f "$video_quality" --merge-output-format mkv   -o "$save_path/%(title)s.%(ext)s" "$url"

    So you end up with a clean .mkv in the folder you chose.

    3) MP3 mode is one command

    For audio, it uses yt-dlp’s built-in extraction flow:

    yt-dlp -x --audio-format mp3   -o "$save_path/%(title)s.%(ext)s" "$url"

    No extra steps. Just paste the URL and you get the MP3.

    4) Age-restricted support with browser cookies

    Some videos require sign-in. The script includes:

    --cookies-from-browser chrome

    If you use Firefox or Edge, you can switch it to:

    • firefox
    • edge

    This keeps the script beginner-friendly while still handling real-world videos.

    Requirements

    You’ll need:

    • Python 3.10+
    • yt-dlp
    • FFmpeg (for merging/extraction)

    Install

    Clone the repo:

    git clone https://github.com/JPerez00/eztube-downloader.git
    cd eztube-downloader

    Make it executable:

    chmod +x eztube-downloader.sh

    Install dependencies:

    brew install yt-dlp ffmpeg

    Run It

    ./eztube-downloader.sh

    Then follow the prompts.

    Where This Can Go Next

    This project is intentionally minimal, but it’s easy to expand:

    • add a playlist mode
    • support more save locations
    • include a default quality setting
    • auto-detect browser (chrome vs firefox)
    • add a “safe filename” option for cleaner output titles

    Conclusion

    EzTube Downloader is the kind of tool I like building and using:

    • small
    • focused
    • fast
    • and built around real usage, not theory

    If you already like yt-dlp but want something that feels more like a simple utility, this is the point.

    You Might Also Like...