Skip to content

Releases: avi12/youtube-downloader

v2.4.3

12 Jun 23:17

Choose a tag to compare

Highlights

  • Settings now apply instantly across YouTube pages - changing the video or audio container in the popup updates open watch pages, grid views, and playlist panels on the fly, no reload needed (fixes #13)
  • The format you pick in the popup is now properly honored by the watch page download button - previously it could fall back to MKV regardless of your choice
  • Changing the default download type (video / audio) in the popup also updates any open download panel live

Full changelog: v2.4.2...v2.4.3

v2.4.2

11 Jun 14:07

Choose a tag to compare

Highlights

  • FFmpeg hardening — response to the June 2026 disclosure of 21 FFmpeg vulnerabilities (CVE-2026-39210…39218 and friends). Every FFmpeg input now pins its container format explicitly instead of letting FFmpeg auto-probe, so downloaded bytes can never be routed into demuxers the extension never feeds intentionally (MPEG-TS, AVI, CAF — the file-parsing components affected by the disclosure). The network-facing vulnerabilities (RTSP/RTP/RTMP/DASH, including the headline AV1-RTP RCE) were never reachable: the extension only ever passes in-memory files to FFmpeg, never URLs, and everything runs inside the browser's WASM sandbox. No patched FFmpeg core exists upstream yet; this closes the realistic attack path in the meantime.
  • Leaner dependencies — dropped the unused legacy @ffmpeg/core-st package.

Full changelog: v2.4.1...v2.4.2

v2.4.1

10 Jun 19:10

Choose a tag to compare

Highlights

  • Resilient downloads — transient failures now auto-retry the whole download pipeline with backoff instead of silently stopping, and videos YouTube reports as removed/private/region-blocked now show a clear "Unavailable" state instead of failing quietly.
  • Firefox settings dropdowns fixed — the settings pickers (video/audio container, quality, language) now anchor to their button, scroll when the list is long, and flip above when the trigger sits low in the popup — matching Chrome. The audio "Custom language" picker now uses the same dropdown component as the rest of the UI (previously a plain <select>).
  • Analytics — anonymous telemetry now records the extension version and the browser UI language, alongside the existing browser/OS. Still no video IDs, URLs, titles, or identity data.

Internal: clearer credential module names and a new CONTRIBUTING guide.

Full changelog: v2.4.0...v2.4.1

v2.4.0

06 Jun 21:12

Choose a tag to compare

Highlights

  • More reliable downloads — PO-token generation now retries on transient failures, fixing the intermittent "no integrity token" 403 that aborted some downloads.
  • Recent downloads are cached — finished files stay cached for 10 minutes (the timer resets while the popup is open) for instant re-download, and the cache evicts the oldest entries when the disk is tight without ever blocking the real save.
  • Determinate processing — the progress ring climbs through a real percentage during muxing instead of sitting at an indeterminate 70%.
  • Green completed state — grid and playlist download buttons turn green when done, matching the watch page.
  • Unavailable videos — show a disabled error state instead of a dead button.
  • Cleaner and quieter — zero service-worker errors when reloading a YouTube page, FFmpeg log spam no longer floods the extension errors panel, and a Trusted Types (jitless zod) fix stops YouTube's CSP from blocking the extension.
  • Anonymous usage analytics — GA4 Measurement Protocol active-user and uninstall tracking, with no host permissions and no video data ever sent.

Install

  • Chrome / Edge / Operayoutube-downloader-2.4.0-chrome.crx
  • Firefoxyoutube-downloader-2.4.0-firefox.xpi

Existing installs auto-update.

Full changelog: v2.3.2...v2.4.0

v2.3.2

05 Jun 14:58

Choose a tag to compare

What's changed

Bug fixes

  • Downloads stopping mid-progress on Linux Chrome — Zod validation now guards player response, videoData, DownloadRequest and caption schemas so malformed data is rejected cleanly instead of corrupting the pipeline (6f7f5e58)
  • Cancel button not aborting downloads — panel cancel was routed through a cross-world messenger that drops same-world events; now goes directly to the background (e107d483)
  • Global quality option changing local panel quality during a download — video format tracker now freezes while a download is in progress (c56b3f01)
  • Local panel options updating from global changes mid-download — panel options lock on download start and only resume tracking global changes after completion (ffeecf38)

Refactoring

  • All cancel actions now route through a single performCancelDownload path regardless of origin (popup, panel, playlist, grid)

Commit range

fd1c20290eb357f0

v2.3.0

05 Jun 04:15

Choose a tag to compare

Highlights

  • Enhanced bitrate toggle - filter Premium-only video variants when off
  • Floating popover dropdowns for settings
  • Off-watch page downloads now route via iframe fallback instead of silently no-oping
  • Fix DataCloneError on panel open caused by sabrConfig in DownloadRequest
  • Fix "Download again" disappearing after a successful download

Full changelog: v2.2.2...v2.3.0

Version 2.2.2

02 Jun 18:07

Choose a tag to compare

Cover art for every audio download

Previously the in-page Download button on a non-music YouTube video produced an audio file with no embedded thumbnail. Two interlocking bugs caused this:

  • The audio pipeline only routed through the cover-art-embedding code path when metadata.isMusic === true — non-music videos were silently skipped.
  • For users who had Format set to Auto (the default), the audio output container resolved to WebM. WebM physically cannot carry attached pictures, so even if the cover-art path had run, FFmpeg would have rejected it.

This release routes any audio download with a metadata.thumbnailUrl through the embed-metadata pipeline, and coerces the Auto-mode audio target away from WebM to .m4a so the thumbnail actually fits in the container.

Fixes

  • fix(audio): embed thumbnail as cover art for non-music audio downloads
  • fix(audio): default audio downloads to .m4a so cover art can be embedded
  • popup(a11y): dir=\"auto\" on video title and channel name for RTL language support

Internals

  • lint(eslint): forbid the void operator outside statement position
  • chore: drop unused dispatchToOffscreen; suppress IDE warning on Chrome's Omaha namespace literal

Install

Auto-update rolls this out to existing 2.2.0 installs on the next poll. For a fresh install grab .crx (Chromium) or .xpi (Firefox) below — see the v2.2.0 notes for the one-time install steps.

Skipped 2.2.1 — that version slot was burned during pre-release verification.

Version 2.2.0

02 Jun 10:56

Choose a tag to compare

First public release since v1.0.5 (2022). Total rewrite of the extension.

Highlights

New architecture

  • Full MV3 migration on Chrome and Firefox
  • Built on WXT + Svelte 5 + TypeScript
  • Self-hosted auto-update — .crx / .xpi artifacts here roll out automatically to installed copies on every browser's poll cycle

Revamped popup

  • THIS TAB / OTHER TABS / Recent sections with sticky headers
  • Per-download progress card, ETA, byte readout
  • Recent downloads list with one-click re-mux / re-transcode and Change Format dialog
  • Click thumbnail or title to jump back to the source tab

In-page download UI

  • Download button injected on every YouTube watch page with format and quality picker
  • Per-playlist panel on the homepage and on playlist pages
  • Live progress ring + cancel/restart

Download capabilities

  • SABR adaptive-streaming bypass on Chrome (direct) and Firefox (via ANDROID_VR InnerTube client)
  • Iframe-scrub fallback for IP-rate-limited videos
  • Per-video format and quality selection
  • Multi-track audio (dub languages) and embedded subtitles
  • YouTube Music cover-art embedding for music tracks
  • Playlist downloads as individual files or ZIP bundles
  • In-browser mux and transcode via FFmpeg-WASM (no external tooling)

Linux compatibility

  • Multipass VM workflow for reproducing Linux-only Chrome bugs
  • Fix for issue #11 (tabId < 0 on Linux Chrome dropdown / panel)

Install

See README for one-click .crx (Chromium) or .xpi (Firefox) install. Auto-update kicks in from this release onward — future versions roll out without user action.

Version 2.1.0

23 May 16:48

Choose a tag to compare

What's new

Bug fixes

  • Fixed crash on Linux Chrome - sendMessage no longer throws when tabId is -1 (e.g. from extension pages or offscreen documents) - closes #11
  • Panel dropdowns - audio dropdown hidden when only one language; caption dropdown hides the redundant "Auto" entry when it's the only option; audio Quality and Format stay in sync
  • Playlist handler - ZIP completion now correctly tracks the playlistId tab
  • Mux - YT Music thumbnail embedded correctly when audio is transcoded

New features

  • Homepage playlist grid - per-card download panel on the YouTube homepage feed; ad cards skipped; playlist lockups handled gracefully
  • Playlist fetch - video list resolved via initialData + continuation API for full playlist support
  • Firefox dev reload - dev server reloads Firefox YouTube tabs alongside Chrome on rebuild

Developer

  • Multipass Linux VM workflow (pnpm install:hyperv-multipass / pnpm setup:linux-vm / pnpm dev:linux) for reproducing Chrome-on-Linux bugs on Windows
  • Bumped @webext-core/messaging to v3

Version 2.0.0

21 May 09:10
fc7efe8

Choose a tag to compare

What's new

Complete revamp - see the full changelog for details.

Highlights

  • SABR adaptive streaming - downloads via YouTube's internal protobuf streaming protocol with CDN fallback and byte-range resume
  • Background service worker - downloads survive tab close; auto-retry on network restore
  • Multi-track audio and captions - original + all dubs, ASR and auto-translated captions embedded as subtitle streams
  • Expanded format support - MOV, AVI, WAV, AIFF, MP3, M4A, FLAC, OGG, Opus alongside the existing containers
  • Playlist batch downloads - per-video checkboxes, ZIP archive with custom filename, video quality selector, stop-all
  • Popup download manager - active downloads per tab, recent downloads with 10-min retention and re-download button
  • YouTube Music - canonical metadata (title, artist, album) and cover art embedded via FFmpeg
  • Estimated file size in the download button, including captions
  • WXT + Svelte 5 migration