← Default view
SPECIFICATION SHEET · PRIVATE PLAYLIST SYNC · yt-dlp / InnerTube API REV 2026-06 · ISSUE #211

YouTube Liked & Saved Video Sync

TOOL & AUTH COMPARISON · LIKED VIDEOS (playlist=LL) · WATCH LATER (playlist=WL)
⚠ ADVISORY — All cookie-based sync methods carry IP-ban risk. yt-dlp documentation states users should "proceed at their own risk." Pinchflat wiki [7] · The only exempt tool is ytm-yld (OAuth, YouTube Music only).
AUTH TYPE: COOKIE OAUTH
IP-BAN RISK: NONE LOW MED HIGH
Capability Matrix
TOOL LIKED VIDEOS WATCH LATER AUTH MECHANISM COOKIE SOURCE AUTO-SYNC IP-BAN RISK
TubeArchivist ⭐ 8.1k
COOKIE ext push or manual paste Firefox
(companion ext)
AUTO LOW
Pinchflat ⭐ 5.0k
COOKIE cookies.txt file Firefox
(Netscape export)
AUTO MED
yt-dlp ⭐ 169k
COOKIE --cookies-from-browser Firefox only
(Chrome 127+ blocked)
CRON HIGH
ytdl-sub ⭐ 2.8k
COOKIE cookiefile (YAML config) Firefox
(Netscape export)
CRON MED
Syncify ⭐ 77
COOKIE cookies.txt file Firefox
(Netscape export)
AUTO MED
ytm-yld ⭐ 6 · YouTube Music only
YTMusic only OAUTH ytmusicapi Google OAuth
(no cookie)
MANUAL NONE
† Pinchflat has 3 configurable modes per source: Disabled / When Needed (default — MED risk) / All Operations (HIGH risk). See Pinchflat cookie wiki [7].
‡ yt-dlp risk reduced to MED with --limit-rate 5M --sleep-interval 5 --max-sleep-interval 15 flags. See CLI pattern [14].
System Constraints — Shared by All Cookie-Based Tools
⚠ Firefox-Only in 2026
BLOCKING
Chrome 127+ (July 2024) introduced app-bound encryption that blocks all external cookie readers — even with admin privileges. Firefox does not encrypt cookies and remains the only viable source for yt-dlp in 2026. OAuth and bearer-token paths are incompatible with yt-dlp's InnerTube route.
Source [4] · [16]
⏱ Cookie Lifespan ~14 Days
RECURRING MANUAL
YouTube expires cookies used outside a browser in approximately two weeks. This is irreducible: regardless of tool choice, Firefox cookie re-export on a ~10-day cadence is required. Automating this via profile scripts risks account bans; manual re-import is the safer cadence. TubeArchivist is the only tool that validates the cookie immediately on import.
Source [7] · [16] · [12]
🐛 Partial-Items Bug (yt-dlp)
UNRESOLVED
A known yt-dlp bug can return only ~11 items from a large liked playlist in a single run. YouTube's dynamic pagination is not always fully traversed. Closed as a site-side issue. Workaround: run the same command 2–3× in sequence — --download-archive prevents re-downloads so only new items are fetched on retries.
yt-dlp issue #8732 [5]
Auth Mechanics
  1. Open Firefox and sign into YouTube
  2. Export cookies via TubeArchivist companion extension (one-click push) — or via a Netscape export plugin for cookies.txt
  3. Import: extension auto-pushes for TubeArchivist; place cookies.txt in the config directory for Pinchflat, ytdl-sub, Syncify
  4. Validate: TubeArchivist immediately tests access to ?list=LL and confirms if auth is working
  5. Repeat every ~10 days — before the ~14-day expiry window
Cookie Freshness Window
Day 0 — import Day 10 — refresh now Day 14 — expired
OAUTH PATH — ytm-yld only
  1. Run ytmusicapi oauth — opens browser, generates oauth.json
  2. Configure ytm-yld with output directory and the path to oauth.json
  3. Run sync — fetches YouTube Music liked songs; removed tracks are deleted locally
  4. No cookie needed; OAuth tokens are long-lived
No IP-ban risk. No 14-day re-auth cycle. Trade-off: scope is YouTube Music liked songs only — a distinct dataset from main YouTube liked videos (?list=LL). Source: [11]
CLI Incremental Sync Pattern
# Sync Liked Videos — run 2–3× on first use to work around partial-items bug
yt-dlp \
  --cookies-from-browser firefox              # Firefox only (Chrome 127+ blocked)
  --download-archive    ~/yt-liked.txt       # skip already-downloaded IDs
  --limit-rate          5M                   # rate cap reduces ban risk
  --sleep-interval      5                    # min seconds between requests
  --max-sleep-interval  15                   # max seconds (randomised)
  "https://www.youtube.com/playlist?list=LL"

# Watch Later: replace list=LL with list=WL
# Cron tip: run the same command twice back-to-back for first-run completeness
Recommended Configuration
Best turnkey option
TubeArchivist ⭐ 8.1k
LOW RISK
Install the companion extension ⭐ 256 in Firefox or Chrome. One-click cookie push. Then subscribe to ?list=LL and ?list=WL as ordinary playlists in the TubeArchivist UI. Enable periodic rescan in Settings → Application.

Cookie validity is checked immediately on import by testing access to your private ?list=LL — no silent failure. A single cookie covers all users on the instance. See playlist docs for details.
Existing media server / CLI
Pinchflat ⭐ 5.0k
MED RISK
Place a Firefox-exported cookies.txt in Pinchflat's config directory. Set the cookie behavior to When Needed (default) — cookies are only used when yt-dlp gets a gate response, minimising unnecessary auth requests. Add ?list=LL and ?list=WL as sources.

If you prefer CLI with cron, use the yt-dlp incremental sync pattern above. Run 2–3× on first use to bypass the partial-items bug. Add rate-limiting flags to reduce risk.
Related Topics — This Expedition
Sources