Linux
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp sudo chmod a+rx /usr/local/bin/yt-dlp
Mac
brew install yt-dlp
Keep updated (run regularly)
yt-dlp -U
> [!important]+ ffmpeg is required
> `fas:TriangleExclamation`
> yt-dlp uses ffmpeg to merge video and audio streams. Install from [ffmpeg.org](https://ffmpeg.org/download.html). On Windows, place `ffmpeg.exe` in the **same folder** as `yt-dlp.exe`.
**Core yt-dlp commands:**
```bash
# Download best quality (auto format selection)
yt-dlp https://www.youtube.com/watch?v=VIDEOID
# List all available formats first
yt-dlp -F https://www.youtube.com/watch?v=VIDEOID
# Download best MP4 with merged audio+video (most compatible)
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" https://www.youtube.com/watch?v=VIDEOID
# Download with metadata, thumbnail, and subtitles
yt-dlp --write-description --write-info-json --write-thumbnail --write-subs https://www.youtube.com/watch?v=VIDEOID
# Download audio only as MP3
yt-dlp -x --audio-format mp3 https://www.youtube.com/watch?v=VIDEOID
# Download entire channel (skip already-downloaded, continue on errors)
yt-dlp --ignore-errors --continue https://www.youtube.com/c/CHANNELNAME
# Download entire channel with full metadata + organised output
yt-dlp --ignore-errors --continue \
--write-description --write-info-json \
--write-thumbnail --write-subs \
--output "%(uploader)s/%(upload_date)s-%(title)s.%(ext)s" \
https://www.youtube.com/c/CHANNELNAME
# Download autogenerated subtitles (great for text-searching streams)
yt-dlp --write-auto-subs --sub-format vtt https://www.youtube.com/watch?v=VIDEOID
# Download a specific time segment only
yt-dlp --download-sections "*01:30-05:45" https://www.youtube.com/watch?v=VIDEOID
# Download a live stream as it happens
yt-dlp --live-from-start https://www.youtube.com/watch?v=LIVEID
[!tip]+ Bot Detection Bypass Methods
fas:LightbulbWhen YouTube shows “Sign in to confirm you’re not a bot”:# Method 1: Use cookies from your logged-in browser yt-dlp --cookies-from-browser firefox https://www.youtube.com/watch?v=VIDEOID # Method 2: Spoof the Android client yt-dlp --extractor-args "youtube:player_client=android" https://www.youtube.com/watch?v=VIDEOID # Method 3: Combine both (most reliable) yt-dlp --cookies-from-browser firefox --extractor-args "youtube:player_client=android,web" https://www.youtube.com/watch?v=VIDEOID
Other platform downloads:
# Twitter/X videos
yt-dlp https://x.com/user/status/TWEETID
# Twitch VOD
yt-dlp https://www.twitch.tv/videos/VODID
# Twitch clip
yt-dlp https://clips.twitch.tv/CLIPNAME
# TikTok individual video
yt-dlp https://www.tiktok.com/@user/video/VIDEOID
# Instagram post (requires cookies)
yt-dlp --cookies-from-browser firefox https://www.instagram.com/p/POSTID/
# Facebook video (requires cookies)
yt-dlp --cookies-from-browser firefox https://www.facebook.com/video/VIDEOID
# Twitter Space → optimised MP3
yt-dlp -x --audio-format mp3 --audio-quality 64K https://twitter.com/i/spaces/SPACEID
# Spotify podcast episode
yt-dlp https://open.spotify.com/episode/EPISODEID
ffmpeg — Video Processing fas:Terminal
[!info]+ ffmpeg Overview
fas:TerminalEssential standalone tool for re-encoding, compressing, splitting, and converting video files. Required by yt-dlp.
- Converts any format to universally compatible H.264 MP4
- GPU-accelerated encoding via NVENC (NVIDIA)
- Lossless stream copy cuts and metadata embedding
Universal re-encode to H.264 MP4 (works on ANY input format):
ffmpeg -hwaccel auto -i YOUR_INPUT_FILE.anything \
-c:v libx264 \
-pix_fmt yuv420p \
-profile:v baseline \
-level 3.0 \
-crf 22 \
-preset medium \
-c:a aac \
-strict experimental \
-movflags +faststart \
-threads 0 \
output.mp4
[!info]+ CRF Quality Guide
ris:FileList
- CRF 18 = near-lossless — use for archival masters
- CRF 22 = good quality — default for most archiving
- CRF 28 = smaller file, visible quality loss — throwaway clips only
- Lower number = better quality + larger file size
With downscaling to 720p (reduces file size significantly):
ffmpeg -hwaccel auto -i input.mp4 \
-c:v libx264 -pix_fmt yuv420p -profile:v baseline -level 3.0 \
-crf 22 -vf scale=-2:720 -preset medium \
-c:a aac -strict experimental -movflags +faststart -threads 0 \
output.mp4
Replace 720 with 1080, 480, or 360 as needed. The -2 ensures width is divisible by 2 (required for MP4).
GPU-accelerated encoding (NVIDIA NVENC):
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -cq 22 -c:a aac output.mp4
# Note: use -cq (not -crf) for NVENC constant quality mode
Split large video into 1-hour chunks:
ffmpeg -hwaccel auto -i input.mp4 \
-c copy -map 0 \
-segment_time 01:00:00 \
-f segment \
-reset_timestamps 1 \
-movflags +faststart \
-threads 0 \
output%03d.mp4
# Produces output000.mp4, output001.mp4, etc.
Quick lossless cut (no re-encode, very fast):
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:05:00 -c copy output.mp4
Embed metadata/chapters into a downloaded video:
ffmpeg -i input.mp4 -i metadata.txt -map_metadata 1 -c copy output.mp4
[!tip]+ Video Size Strategy
fas:Lightbulb
- Under 200MB → upload directly, no processing needed
- 200MB–400MB → re-encode at 720p first, usually gets under 200MB
- 400MB+ → re-encode first, then split if still too large
- Never split without re-encoding first — don’t upload large unoptimised chunks
- Audio quality matters more than video — reduce resolution before touching audio bitrate
Online Video Archiving (No Command Line) ris:GlobalLine
| Tool | URL | Notes |
|---|---|---|
| PreserveTube | preservetube.com | YouTube up to ~2 hours. Has a UserScript for a YouTube button. |
| Cobalt | cobalt.tools | YouTube, Twitter, TikTok, Instagram. ~100 min limit. |
| Twitter Video DL | twittervideodownloader.com | Simple Twitter/X downloads, no install. |
| YouTube Multi DL | youtubemultidownloader.net | Bulk download multiple YouTube videos. |
| Filmot | filmot.com | Finds unlisted and deleted YouTube videos by searching auto-captions. |
| Tartube | github.com/axcore/tartube | GUI wrapper for yt-dlp — cross-platform. |
| Handbrake | handbrake.fr | GUI video compressor (ffmpeg/x264 wrapper). RF 20–22 recommended. |
Part 3 — Screenshots & Full-Page Captures ris:Eye
Platform Quick Reference
| Platform | Method | Shortcut |
|---|---|---|
| Windows | Snipping Tool | Win + Shift + S |
| Windows (advanced) | ShareX | getsharex.com — blur, annotate, upload |
| macOS | Full screen | Cmd + Shift + 3 |
| macOS | Select area | Cmd + Shift + 4 |
| macOS | Specific window | Cmd + Shift + 4 then Space |
| iPhone (old) | Power + Home | Saves to Camera Roll |
| iPhone (new) | Power + Vol Up | Saves to Camera Roll |
| Firefox | Built-in | Right-click → Take Screenshot → Save Full Page |
| Chrome/Brave | DevTools | F12 → Ctrl+Shift+P → “Capture full size screenshot” |
[!tip]+ Firefox Developer Console Screenshots
fas:TerminalPressShift + F2to open the developer toolbar, then:screenshot --fullpage # saves to Downloads screenshot --fullpage --clipboard # copies to clipboard screenshot --fullpage myfilename # saves with custom name screenshot --fullpage --delay 3 # 3 second delay before capture
[!tip]+ PNG Compression — Reduce File Size Before Uploading
fas:Lightbulb
- pngquant (CLI):
pngquant --quality=65-80 screenshot.png- Squoosh (browser): squoosh.app
- TinyPNG (browser): tinypng.com
Part 4 — Platform-Specific Archiving ris:Radar
Twitter / X
[!warning]+ Twitter/X requires login for most content — breaks most archivers
ris:RadarMethods in order of reliability:
- Nitter mirror → archive.today: Replace
twitter.com/x.comwithnitter.poast.org, feed to archive.ph- GhostArchive directly on x.com URL — works intermittently
- Thread Reader for multi-tweet threads:
https://threadreaderapp.com/thread/TWEETID→ archive the Thread Reader URL on archive.ph (static HTML, archives perfectly)- yt-dlp for videos:
yt-dlp https://x.com/user/status/TWEETID- Twint for bulk account archiving (partially broken): github.com/twintproject/twint
- Megalodon — currently best for archiving individual X/Twitter page URLs
[!danger]+ Facebook Image Download URLs Contain Your Identity Token
fas:SkullFacebook image download URLs contain an identifying token that can be traced back to your account. Always rename the file or copy-paste the image rather than downloading directly.
[!info]+ Reddit Archiving
ris:FileList
- Always use old.reddit.com URLs —
reddit.com→old.reddit.com. archive.today handles old Reddit layout far better.- Unddit for deleted posts/comments: replace
reddit.comwithunddit.comin any URL → unddit.com- Full user post history: use PRAW (Python Reddit API Wrapper) to iterate profile pages and submit each to archive.today. See
scripts/reddit_archive_user.py.
Discord
[!info]+ DiscordChatExporter — Standard Discord archiving tool
ris:ShareBoxExports Discord servers, channels, and DMs to HTML (with images), JSON, CSV, or TXT. GUI + CLI versions.
- Requires your Discord auth token (browser DevTools → Network tab → Authorization header)
- GUI version is straightforward; CLI supports bulk and automated export
# CLI bulk export of an entire server
DiscordChatExporter.Cli exportguild --guild SERVERID --token YOUR_TOKEN --output ./export/ --format HtmlDark
[!warning]+ Discord CDN URLs Expire
ris:Radarcdn.discordapp.comimage URLs are publicly accessible without login, but Discord periodically rotates/expires them. Archive immediately after finding them.
[!info]+ Instagram Archiving Methods
ris:GlobalLineInstagram requires login for most content. Working methods:
- View profiles without account: picuki.com, imgsed.com, dumpor.com → then feed URL to archive.today
- Download posts/reels: Instaloader (
instaloader profile USERNAME), JDownloader, SnapInsta, igram.io- Stories (disappear after 24h — archive immediately): Instaloader with
--storiesflag (requires login)- With yt-dlp (requires cookies):
yt-dlp --cookies-from-browser firefox https://www.instagram.com/p/POSTID/
[!danger]+ Instagram Screenshot Self-Doxx Warning
fas:SkullInstagram embeds your avatar and username into the comment field UI. Crop or redact your username from every Instagram screenshot before posting.
TikTok
# Individual video (works)
yt-dlp https://www.tiktok.com/@user/video/VIDEOID
[!warning]+ yt-dlp profile scraping is broken for TikTok
ris:RadarIndividual videos still work. For profile-level scraping, use Geranium’s scraper-helper or Cobalt.
YouTube (Special Cases)
# Age-restricted (requires logged-in cookies)
yt-dlp --cookies-from-browser chrome https://www.youtube.com/watch?v=VIDEOID
# Full channel backup with metadata + organised directory structure
yt-dlp --ignore-errors --continue \
--write-description --write-info-json \
--write-thumbnail --write-subs \
--output "%(uploader)s/%(upload_date)s-%(title)s.%(ext)s" \
https://www.youtube.com/c/CHANNELNAME
[!tip]+ Finding Deleted/Unlisted YouTube Videos
fas:LightbulbFilmot indexes YouTube subtitle data including from removed videos. Search by keywords to find videos no longer publicly visible — extremely useful for tracking deleted content.
[!info]+ YouTube Comment Archiving
ris:FileListNo third-party site currently preserves full comment sections. Use the YouTube Data API v3 (free API key) to download all comments from a video programmatically. Seescripts/youtube_comment_archiver.py.
Other Platforms
[!info]+ Platform Reference Table
ris:FileList
Platform Tool / Method Twitch VODs yt-dlp https://www.twitch.tv/videos/VODIDTwitch Clips yt-dlp https://clips.twitch.tv/CLIPNAMETwitch Live yt-dlp https://www.twitch.tv/CHANNELNAMESteam steamid.io to get numeric ID; archive both vanity + /profiles/76561...URLsDeviantArt RipMe (requires Java JDK) — archives entire galleries Tumblr archive.today handles NSFW blogs; original-posts-only: studiomoh.com/fun/tumblr_originals 4chan 4plebs.org — permanent archive. Threads 404 fast — archive immediately. Also archive the 4plebs link itself on archive.today. Gab garc — Gab API scraper (fork of twarc), requires Gab login Bluesky archive.today works well with Bluesky URLs currently AO3 / FFN FanFictionDownloader — downloads with full metadata (URL, timestamp, author) Spotify / Podcasts yt-dlp https://open.spotify.com/episode/EPISODEID(some require logged-in session)Facebook Videos yt-dlp --cookies-from-browser firefox https://www.facebook.com/video/VIDEOID(click through content warning first)
Part 5 — Bulk & Automated Archiving fas:ClipboardList
[!info]+ Batch Submit URLs to Wayback Machine
fas:Terminal# Submit a list of URLs from a file cat urls.txt | xargs -I{} curl -s "https://web.archive.org/save/{}"See
scripts/batch_archive.shfor a rate-limited, logged version of this.
[!info]+ Internet Archive CLI
fas:TerminalOfficial CLI for uploading files directly to the Internet Archive.pip install internetarchive ia upload IDENTIFIER /path/to/file
[!info]+ Bellingcat Auto Archiver
ris:RadarProfessional-grade automated archiving. Takes URLs from spreadsheets, Telegram, or other sources and archives to archive.org, Google Drive, S3, etc. with verification metadata. Used by journalists and OSINT researchers.
[!info]+ Archiving Entire Wikis and Forums
fas:Terminal# HTTrack (recommended — handles link rewriting automatically) httrack https://wiki.example.com -O ./local_mirror/ -r6 # wget (alternative) wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://wiki.example.comFor large-scale professional crawls: Heritrix — the Internet Archive’s own open-source crawler.
[!info]+ Download an Existing Wayback Machine Snapshot Locally
fas:Terminalgem install wayback_machine_downloader wayback_machine_downloader http://example.com # Specify a date range wayback_machine_downloader http://example.com --from 20200101 --to 20201231
Part 6 — OSINT & Account Finding ris:Radar
| Tool | URL | Use For |
|---|---|---|
| Sherlock | github.com/sherlock-project/sherlock | Username search across 300+ social media sites |
| Maigret | github.com/soxoj/maigret | More comprehensive than Sherlock, shows profile info |
| Filmot | filmot.com | Find unlisted/deleted YouTube videos via subtitle search |
| vacbanned.com | vacbanned.com | Names associated with VAC-banned Steam accounts |
| SteamID.io | steamid.io | Convert Steam vanity URLs to permanent numeric IDs |
# Sherlock
python3 sherlock username
# Maigret (more detailed, more sites)
python3 -m maigret username
Part 7 — File Hosting for Large Files ris:ShareBox
[!tip]+ File Hosting Priority Order
fas:Lightbulb
- On-site upload — always preferred. Use your platform’s native upload (e.g. 200MB limit on most forums).
- MEGA (mega.nz) — widely accepted off-site host. Large files, free tier.
- Internet Archive (archive.org/upload) — free, unlimited, permanent. Best for large video files.
- multiup.io (multiup.io) — upload once, mirrors automatically to multiple file hosts. Redundant links.
Avoid: Any single-purpose file hosts, social media embeds, or link shorteners. They disappear.
Part 8 — Un-Redacting & Recovering Obscured Content ris:Eye
Recovering Poorly Redacted Text
[!tip]+ Text Hidden Under a Black Bar (Image Editor Method)
fas:LightbulbIf text was redacted with a black rectangle placed over it (not burned in):
- Open in GIMP, Photoshop, or even MS Paint
- Try Levels or Curves adjustment — drag input levels to extremes
- Try Contrast at maximum
- If the black bar is a separate layer (common in quick edits), select and delete the layer
Recovering Deleted Content ris:Radar
| Method | Where to Look |
|---|---|
| Google Cache | cache:https://example.com/page (being phased out, sometimes works) |
| Wayback Machine | https://web.archive.org/web/*/example.com/page |
| Unddit (Reddit) | Replace reddit.com with unddit.com |
| Filmot (YouTube) | Search deleted video titles/content at filmot.com |
| Google snippets | Search for the title — results show text excerpts even when cache is gone |
Part 9 — Expanded: Cookie Extraction for Archiving ris:LockPassword
Many archiving tasks require authenticated sessions. The cleanest method is exporting cookies from your browser.
[!info]+ Exporting Cookies with yt-dlp (Automatic)
fas:Terminalyt-dlp can pull cookies directly from your browser — no manual export needed:yt-dlp --cookies-from-browser firefox URL yt-dlp --cookies-from-browser chrome URL yt-dlp --cookies-from-browser brave URL
[!info]+ Manual Cookie Export (Netscape Format)
fas:TerminalFor tools that require acookies.txtfile:
- Install the Get cookies.txt LOCALLY extension in Firefox or Chrome
- Navigate to the site while logged in
- Click the extension → export → save as
cookies.txt- Use with:
yt-dlp --cookies cookies.txt URL
[!warning]+ Cookie Security
ris:Radar
- Never share your cookies.txt file — it grants full session access to your accounts
- Delete exported cookie files after use
- Use throwaway accounts for archiving sensitive content
Part 10 — Expanded: VTT Subtitle Processing ris:FileList
Auto-generated subtitles from yt-dlp are invaluable for searching long videos and streams.
# Download auto-generated subtitles alongside video
yt-dlp --write-auto-subs --sub-format vtt https://www.youtube.com/watch?v=VIDEOID
# Download subtitles only (no video)
yt-dlp --skip-download --write-auto-subs --sub-format vtt https://www.youtube.com/watch?v=VIDEOID
See scripts/vtt_to_text.py for a script that converts .vtt files to searchable plaintext.
Complete Tool Reference fas:ClipboardList
Web Archiving
| Tool | URL | Best For |
|---|---|---|
| archive.today | archive.ph | Primary web page archiving |
| GhostArchive | ghostarchive.org | Backup archiver, LinkedIn, Facebook |
| Megalodon | megalodon.jp | Japanese archiver, good Twitter backup |
| Wayback Machine | web.archive.org | Finding old archives — not primary |
| Perma.cc | perma.cc | Legal-grade citations |
| archiveweb.page | archiveweb.page | Local WARC archives of JS-heavy sites |
| Browsertrix | browsertrix.com | Automated high-fidelity crawling |
| monolith | github.com/Y2Z/monolith | Single-file local HTML archive |
| HTTrack | httrack.com | Full site mirror with link rewriting |
Video Downloading
| Tool | URL | Best For |
|---|---|---|
| yt-dlp | github.com/yt-dlp/yt-dlp | Everything |
| ffmpeg | ffmpeg.org | Re-encoding, splitting, converting |
| PreserveTube | preservetube.com | Easy YouTube archiving online |
| Cobalt | cobalt.tools | Quick multi-platform downloads |
| Tartube | github.com/axcore/tartube | yt-dlp GUI |
| Handbrake | handbrake.fr | GUI video compression |
| Filmot | filmot.com | Find deleted/unlisted YouTube videos |
| Twitter Video DL | twittervideodownloader.com | Twitter/X videos without tools |
OSINT
| Tool | URL | Best For |
|---|---|---|
| Sherlock | github.com/sherlock-project/sherlock | Username enumeration across 300+ sites |
| Maigret | github.com/soxoj/maigret | Comprehensive username + profile OSINT |
| Filmot | filmot.com | Deleted YouTube video discovery |
| SteamID.io | steamid.io | Steam vanity URL → permanent ID |
Lessons Learned fas:Lightbulb
- Redundancy is everything. A single archiver is a single point of failure. Submit every important page to at least archive.today AND one backup (GhostArchive or Megalodon). Services die, get pressured, or get acquired.
- Old interfaces archive better.
old.reddit.comvs new Reddit, Nitter vs Twitter.com — JavaScript-heavy modern UIs break archivers. Always prefer the legacy URL when one exists. - Cookies solve most login walls. yt-dlp’s
--cookies-from-browserflag handles age restrictions, rate limits, and member-only content without manual token extraction. - Audio > video when cutting file size. When you need to reduce a video for upload, drop resolution (1080p → 720p) before touching audio bitrate. Compressed audio is noticeably worse; compressed video is not.
- Archive the archive. External archive links (4plebs, Wayback, etc.) can themselves go down. If something is critical, archive the archive URL on archive.today too.
References fas:BookOpen
- yt-dlp GitHub
- ffmpeg Official Download
- archive.today / archive.ph
- GhostArchive
- Megalodon
- Wayback Machine
- Perma.cc
- archiveweb.page (Webrecorder)
- Browsertrix Crawler
- monolith
- SingleFile Firefox Extension
- HTTrack
- DiscordChatExporter
- Instaloader
- Sherlock
- Maigret
- Filmot — YouTube subtitle search
- Bellingcat Auto Archiver
- Internet Archive CLI
- Heritrix Web Crawler
- Thread Reader App
- Unddit — deleted Reddit posts
- SteamID.io
- Cobalt Downloader
- PreserveTube
- Tartube
- ShareX
- Handbrake
- RipMe
- Twint
- YouTube Data API v3
- 4plebs
- garc — Gab scraper
- Nitter mirror
- webvtt-py
- multiup.io
- MEGA
- Squoosh
#Archival #OSINT #Tools #Cheatsheet #yt-dlp #ffmpeg #WebArchiving #VideoDownloading #ContentRecovery