Official repository: https://github.com/grqz/yt-dlp-apple-webkit-jsi
A pure Python yt-dlp-plugin that uses Apple WebKit to solve Youtube N/Sig, should work on most modern apple devices.
PO Token support is being considered.
Installing
Requirements
- Python. CPython 3.10+ and PyPy 3.11+ are supported. Other implementations and versions might or might not work.
- A device with Apple's operating system. This plugin should work on iOS/iPadOS 14.0+, and MacOS 11.0+, on x86_64 or arm64. Other apple's operating systems might or might not work.
- yt-dlp nightly or above.
Installing the plugin
The master branch is for development. It's not recommended to install from master. A new release is published on GitHub and PyPI when a new feature or fix is added.
pip/pipx
If yt-dlp is installed through pip or pipx, you can install the plugin with the following:
pipx inject yt-dlp yt-dlp-apple-webkit-jsi
or
python3 -m pip install -U yt-dlp-apple-webkit-jsi
Manual
-
Go to the latest release
-
Find
yt-dlp-apple-webkit-jsi.zipand download it to one of the yt-dlp plugin locations-
User Plugins
${XDG_CONFIG_HOME}/yt-dlp/plugins~/.yt-dlp/plugins/
-
System Plugins
/etc/yt-dlp/plugins//etc/yt-dlp-plugins/
-
Executable location
- Binary: where
<root-dir>/yt-dlp,<root-dir>/yt-dlp-plugins/
- Binary: where
-
For more locations and methods, see installing yt-dlp plugins
If installed correctly, you should see the provider's version in yt-dlp -v output (the plugin version below might not be up-to-date):
[debug] [youtube] [jsc] JS Challenge Providers: bun (unavailable), deno (unavailable), jsinterp (unavailable), node (unavailable), apple-webkit-jsi-0.0.8 (external)
Release files for yt-dlp-apple-webkit-jsi 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| yt_dlp_apple_webkit_jsi-0.1.1.tar.gz | 41.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| yt_dlp_apple_webkit_jsi-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 73.9 kB
Release files / yt_dlp_apple_webkit_jsi-0.1.1.tar.gz
| Download URL | yt_dlp_apple_webkit_jsi-0.1.1.tar.gz |
|---|---|
| Size | 41.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
804d487d1f876e6bde29e2aeaa58494eefceb92764862f4941a05b978b101f7f
|
|
BLAKE2b-256 checksum How to use checksums |
c59918cf2e764c12b0d35e4ba80dabd4b56706ed21f85f8a40763eeaee9855f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2025.
Transparency logRelease files / yt_dlp_apple_webkit_jsi-0.1.1-py3-none-any.whl
| Download URL | yt_dlp_apple_webkit_jsi-0.1.1-py3-none-any.whl |
|---|---|
| Size | 32.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1892b14e7ee7161deaae11040b38b2e2b229178e1b96102ca2c1d5a0ed136688
|
|
BLAKE2b-256 checksum How to use checksums |
e6b78e873c49a852876daa3e05192e424d6a90da8451f359117ce692a61e8153
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2025.
Transparency log