Skip to main content

yt-dlp-threads

A yt-dlp extractor plugin for Threads (threads.com / threads.net).

yt-dlp has no built-in Threads extractor — support has been requested for years without a merged implementation (#7523, #10133, #12021) — and Threads serves anonymous clients a JavaScript login wall with no media in the HTML.

How it works

Meta server-renders the full post — including the CDN media URLs — for link-preview crawlers. This plugin fetches the post page with a Googlebot User-Agent to bypass the login wall, then extracts the progressive (muxed) mp4 URL(s) from the embedded JSON. Handles canonical @user/post/<id> links, /share/<code>/ short links, and multi-video (carousel) posts.

Caveat: this bypass is inherently fragile. If Meta stops serving crawlers the full payload or changes the embedded JSON keys, extraction will break. There is no cookie/auth support — only publicly viewable posts work.

Install

Requires yt-dlp with plugin support (2023.01.02+).

As a pip package (installs into the same environment as yt-dlp):

pip install git+https://github.com/tribixbite/yt-dlp-threads

As a manual plugin (no install): drop the yt_dlp_plugins folder into a yt-dlp plugin directory, e.g.

mkdir -p ~/.config/yt-dlp/plugins/yt-dlp-threads
cp -r yt_dlp_plugins ~/.config/yt-dlp/plugins/yt-dlp-threads/

Usage

yt-dlp "https://www.threads.com/@someone/post/ABC123"
yt-dlp -F "https://www.threads.com/share/xxxxxxxx/"   # list formats (hd/sd)

Verify it loaded: yt-dlp --verbose <url> prints [debug] Extractor Plugins: ThreadsIE.

Notes

  • A Threads page embeds many posts (thread items, replies, recommendations). The extractor selects the one whose shortcode matches your URL; if that post isn't in the page data (deleted, private, login-gated) it raises an error rather than returning some other post's video.
  • duration is decoded from the CDN URL's efg parameter — Threads posts have no video_duration field.
  • Image-only and text-only posts are not supported (video only).

Development

python -m unittest discover -s tests -v   # offline tests, no network
ruff check .

License

Unlicense (public domain).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yt_dlp_threads-0.1.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yt_dlp_threads-0.1.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file yt_dlp_threads-0.1.0.tar.gz.

File metadata

  • Download URL: yt_dlp_threads-0.1.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for yt_dlp_threads-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a606fd37d8c8f38a1665e93ef2174d5a14f1f998b962dd39aa58c525fa9fc466
MD5 7c409b1c59b8cfca82530967ed683a66
BLAKE2b-256 eb5150cc00a4489a10c85b1fa0f99a54fd0d1e3f622cc2b585ebf15a53dd6526

See more details on using hashes here.

Provenance

The following attestation bundles were made for yt_dlp_threads-0.1.0.tar.gz:

Publisher: publish.yml on tribixbite/yt-dlp-threads

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yt_dlp_threads-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: yt_dlp_threads-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for yt_dlp_threads-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 266e4d50a7e1f9dc574b2d92e170379e7c28cc0ba8803464e4f0b457c9e4853a
MD5 c4bd13344e1881f658ac0c3b253dd9c0
BLAKE2b-256 04908dfc7055f6dc562fa190f6ad516a787851979eaaa4b601b7ed727ab0e1c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for yt_dlp_threads-0.1.0-py3-none-any.whl:

Publisher: publish.yml on tribixbite/yt-dlp-threads

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page