Auto-archive your YouTube watch history locally or to the cloud, and rescue removed videos to the Internet Archive.
Python
0
1 commits
updated Oct 5, 2026
Saves every YouTube video you watch (on any device signed into your account) to a folder, and can upload it to the cloud.
Windows: double-click setup.bat. It:
py -3 launcher), or installs Python 3.12 if you don't have itAfter that, open the app from the desktop shortcut or Start YouTube Archiver.bat. Run setup.bat again any time to repair or update.
Automatic installs use winget, which comes with Windows 10/11. If it's missing, get "App Installer" from the Microsoft Store, or install Python from python.org (tick "Add python.exe to PATH").
Mac/Linux: install Python 3.10+, ffmpeg and Deno (brew install python ffmpeg deno on Mac), then run ./run_mac_linux.sh.
Also make sure YouTube watch history is on in your Google account.
By default the app checks your entire watch history on every run, so nothing is missed (including bursts of Shorts). Videos that are already saved are skipped without being downloaded again, so later checks are much faster than the first one.
The first run downloads everything you've ever watched, which can be thousands of videos and hundreds of GB. If you only want videos from now on, click Skip existing history before you start. To go back to checking only recent videos, turn off Check my whole history in Settings.
In Settings > Speed and limits:
The Removed page checks every video you've saved and lists the ones YouTube no longer has (deleted, terminated channel, copyright strike, or made private). Each one gets an Upload to Internet Archive button.
To set it up:
Uploads go to archive.org/details/youtube-<video id>, with the original title, channel, upload date, description and link. If someone already uploaded that video there, the app links to theirs instead of uploading a duplicate. If you use rclone "move" mode, the app downloads the file back from your cloud before uploading.
Uploads are public. Only upload videos you have the right to share; archive.org may remove copyrighted material. Your keys are stored in plain text in ~/.yt_history_archiver/config.json.
Headless: python core.py --check-removed checks for removals and uploads them automatically.
cookies.txt with a "Get cookies.txt LOCALLY" extension and pick that file in the app.python core.py (or python app.py --once) does one pass with your saved settings.
Example cron (every 30 min): */30 * * * * /usr/bin/python3 /path/to/core.py~/.yt_history_archiver/. Delete archive.txt there to re-download everything.Downloading YouTube videos goes against YouTube's Terms of Service; use it for your own personal archive and keep the check interval reasonable.
Auto-archive your YouTube watch history locally or to the cloud, and rescue removed videos to the Internet Archive.
Python
0
1 commits
updated Oct 5, 2026
Saves every YouTube video you watch (on any device signed into your account) to a folder, and can upload it to the cloud.
Windows: double-click setup.bat. It:
py -3 launcher), or installs Python 3.12 if you don't have itAfter that, open the app from the desktop shortcut or Start YouTube Archiver.bat. Run setup.bat again any time to repair or update.
Automatic installs use winget, which comes with Windows 10/11. If it's missing, get "App Installer" from the Microsoft Store, or install Python from python.org (tick "Add python.exe to PATH").
Mac/Linux: install Python 3.10+, ffmpeg and Deno (brew install python ffmpeg deno on Mac), then run ./run_mac_linux.sh.
Also make sure YouTube watch history is on in your Google account.
By default the app checks your entire watch history on every run, so nothing is missed (including bursts of Shorts). Videos that are already saved are skipped without being downloaded again, so later checks are much faster than the first one.
The first run downloads everything you've ever watched, which can be thousands of videos and hundreds of GB. If you only want videos from now on, click Skip existing history before you start. To go back to checking only recent videos, turn off Check my whole history in Settings.
In Settings > Speed and limits:
The Removed page checks every video you've saved and lists the ones YouTube no longer has (deleted, terminated channel, copyright strike, or made private). Each one gets an Upload to Internet Archive button.
To set it up:
Uploads go to archive.org/details/youtube-<video id>, with the original title, channel, upload date, description and link. If someone already uploaded that video there, the app links to theirs instead of uploading a duplicate. If you use rclone "move" mode, the app downloads the file back from your cloud before uploading.
Uploads are public. Only upload videos you have the right to share; archive.org may remove copyrighted material. Your keys are stored in plain text in ~/.yt_history_archiver/config.json.
Headless: python core.py --check-removed checks for removals and uploads them automatically.
cookies.txt with a "Get cookies.txt LOCALLY" extension and pick that file in the app.python core.py (or python app.py --once) does one pass with your saved settings.
Example cron (every 30 min): */30 * * * * /usr/bin/python3 /path/to/core.py~/.yt_history_archiver/. Delete archive.txt there to re-download everything.Downloading YouTube videos goes against YouTube's Terms of Service; use it for your own personal archive and keep the check interval reasonable.