Skip to main content

backup-yt

Full backup tool for YouTube channels: videos, thumbnails, titles, descriptions, tags and subtitles — powered by yt-dlp.

Features

  • Download every video from a channel, playlist, or a single video URL.
  • Two modes: full video backup, or metadata-only (fast, low disk usage).
  • Embeds thumbnail, subtitles and metadata directly into the video file.
  • Saves per-video metadata as .info.json and .description files.
  • Skips videos you already downloaded (resumable, safe to interrupt).
  • Generates a summary.json and a summary.csv with every video's title, description, tags, URL and thumbnail.
  • Colored console output (info / success / warning / error), no emojis.

Requirements

  • Python 3.9 or higher.
  • ffmpeg installed and available on your PATH (needed by yt-dlp to merge video/audio and embed thumbnails/subtitles).
  • yt-dlp is installed automatically as a dependency of this package.

Installation

From PyPI:

pip install backup-yt

From source (for development):

git clone https://github.com/YOUR_GITHUB_USERNAME/backup-yt.git
cd backup-yt
pip install -e .

Usage

Once installed, the backup-yt command is available, or you can run the package directly with python3 -m backup_yt.

# Metadata and thumbnails only (fast, low disk usage)
backup-yt --url https://www.youtube.com/@MyChannel --metadata-only

# Full video backup at 1080p (default)
backup-yt --url https://www.youtube.com/@MyChannel

# Full video backup at 720p (less disk space)
backup-yt --url https://www.youtube.com/@MyChannel --quality 720

# A single playlist
backup-yt --url "https://www.youtube.com/playlist?list=PLxxxx"

Options

Flag Description Default
--url URL of the channel, playlist or video (required) —
--metadata-only Only download metadata and thumbnails, skip the video file off
--quality Max video quality in pixels: 480, 720, 1080, 1440, 2160 1080

Output structure

Each run creates a timestamped folder under youtube_backup/:

youtube_backup/
└── MyChannel_20260910/
    ├── summary.json
    ├── summary.csv
    ├── downloaded_history.txt
    └── MyChannel/
        └── 20240315 - Video title [videoId]/
            ├── Video title.mp4
            ├── Video title.info.json
            ├── Video title.description
            └── Video title.jpg

Project structure

backup_yt/
├── __main__.py       # entry point (python3 -m backup_yt)
├── cli.py            # argument parsing and orchestration
├── config.py         # shared constants
├── logger.py         # colored console output
├── storage.py        # folders, summary.json, summary.csv
└── yt_dlp_client.py  # yt-dlp invocation

License

MIT — see LICENSE.

Metadata

Release files for backup-yt 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for backup-yt 0.1.0
File Size Uploaded Provenance
backup_yt-0.1.0.tar.gz 7.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for backup-yt 0.1.0
File Interpreter ABI Platform
backup_yt-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 16.8 kB

Release files / backup_yt-0.1.0.tar.gz

Download URL backup_yt-0.1.0.tar.gz
Size 7.7 kB
Tags Source
SHA-256 checksum
How to use checksums
27c6f6fba0ba607819f98d936e85b59e45b9916ed9e263b8eb0b3d8d15512ca5
BLAKE2b-256 checksum
How to use checksums
9057f7657078f458346539cd8445d47336353a05ccffacaef73a5838664c8fc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / backup_yt-0.1.0-py3-none-any.whl

Download URL backup_yt-0.1.0-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f404fcc782935514f40c01c0f03a8b3655008f732530e7046703bb3170eca065
BLAKE2b-256 checksum
How to use checksums
71007a43e2f100fa539119244a1788184fde6cd47881aec14d461fc89e1dbc74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Security for backup-yt 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page