You are reading the documentation for the in-development version of Streamlink.

Installation#

Windows#

Method

Installing

Installers

See the Windows binaries section below

Portable

See the Windows binaries section below

Nightly builds

See the Windows binaries section below

Python pip

See the PyPI package and source code section below

Chocolatey

choco install streamlink

Installing Chocolatey packages

Scoop

scoop bucket add extras
scoop install streamlink

Installing Scoop packages

Windows Package Manager

winget install streamlink

Installing Winget packages

macOS#

Method

Installing

Python pip

See the PyPI package and source code section below

Homebrew

brew install streamlink

Installing Homebrew packages

Linux and BSD#

Method / Distribution

Installing

AppImage

See the Linux AppImages section below

AppImage nightly builds

See the Linux AppImages section below

Python pip

See the PyPI package and source code section below

Alpine Linux (edge, testing)

sudo apk add streamlink

Enabling the edge/testing repository

Arch Linux

sudo pacman -S streamlink

Arch Linux (aur, git)

git clone https://aur.archlinux.org/streamlink-git.git
cd streamlink-git
makepkg -si

Installing AUR packages

Debian (sid, testing)

sudo apt update
sudo apt install streamlink

Debian (stable)

# If you don't have Debian backports already (see link below):
echo "deb http://deb.debian.org/debian bookworm-backports main" | sudo tee "/etc/apt/sources.list.d/streamlink.list"

sudo apt update
sudo apt -t bookworm-backports install streamlink

Installing Debian backported packages

Fedora

sudo dnf install streamlink

FreeBSD (pkg)

pkg install multimedia/streamlink

FreeBSD (ports)

cd /usr/ports/multimedia/streamlink
make config install clean

Gentoo Linux

sudo emerge net-misc/streamlink

NixOS

nix-env -iA nixos.streamlink

NixOS channel

openSUSE

sudo zypper install streamlink

Solus

sudo eopkg install streamlink

Package maintainers#

Distribution / Platform

Maintainer

Alpine Linux

Robert Sacks <robert at sacks.email>

Arch

Giancarlo Razzolini <grazzolini at archlinux.org>

Arch (aur, git)

Josip Ponjavic <josipponjavic at gmail.com>

Chocolatey

Scott Walters <me at scowalt.com>

Debian

Alexis Murzeau <amubtdx at gmail.com>

Fedora

Mohamed El Morabity <melmorabity at fedoraproject.org>

FreeBSD

Takefu <takefu at airport.fm>

Gentoo

soredake <fdsfgs at krutt.org>

NixOS

Tuomas Tynkkynen <tuomas.tynkkynen at iki.fi>

openSUSE

Simon Puchert <simonpuchert at alice.de>

Solus

Joey Riches <josephriches at gmail.com>

Windows binaries

Sebastian Meyer <mail at bastimeyer.de>

Linux AppImages

Sebastian Meyer <mail at bastimeyer.de>

Package availability#

Packaging is not done by the Streamlink maintainers themselves except for the PyPI package, the Windows installers + portable builds, and the Linux AppImages.

If a packaged release of Streamlink is not available for your operating system / distro or your system's architecture, or if it's out of date or broken, then please contact the respective package maintainers or package-repository maintainers of your operating system / distro, as it's up to them to add, update, or fix those packages.

Users of glibc-based Linux distros can find up-to-date Streamlink releases via the available AppImages.

Please open an issue or pull request on GitHub if an available, maintained and up-to-date package is missing from the install docs.

PyPI package and source code#

If a package is not available on your platform, or if it's out of date, then Streamlink can be installed via pip, the Python package manager.

Before running pip, make sure that it's the Python 3 version of pip (to check, run pip --version). On some systems, this isn't the case by default and an alternative, like pip3 for example, needs to be run instead.

Warning

On Linux, when not using a virtual environment, it is recommended to install custom python packages like this only for the current user (see the --user parameter below), since system-wide packages can cause conflicts with the system's regular package manager.

Those user-packages will be installed into ~/.local instead of /usr, and entry-scripts for running the programs can be found in ~/.local/bin, e.g. ~/.local/bin/streamlink.

In order for the command line shell to be able to find these executables, the user's PATH environment variable needs to be extended. This can be done by adding export PATH="${HOME}/.local/bin:${PATH}" to ~/.profile or ~/.bashrc.

Version

Installing

Latest release

pip install --user -U streamlink

Master branch

pip install --user -U git+https://github.com/streamlink/streamlink.git

Specific tag/branch/commit

pip install --user -U git+https://github.com/USERNAME/streamlink.git@REVISION

Virtual environment#

Another way of installing Streamlink in a non-system-wide way is using the venv or virtualenv Python packages, which both create a user-owned Python environment which is isolated from the system's main Python package environment.

While venv is part of Python's standard library since 3.3, virtualenv is the project which venv was built from, but it first needs to be installed, either via pip or from the system's package manager. It also implements more features, so depending on your needs, you may want to use virtualenv instead of venv.

Install using venv and pip#

# Create a new environment
python -m venv ~/myenv

# Activate the environment
# note: non-POSIX compliant shells like FISH or PowerShell have different activation script file names
# note: on Windows, the `bin` subdirectory is called `Scripts`
source ~/myenv/bin/activate

# *Either* install the latest Streamlink release from PyPI in the virtual environment
pip install --upgrade streamlink

# *Or*, install the most up-to-date development version from master on GitHub
pip install --upgrade git+https://github.com/streamlink/streamlink.git

# Use Streamlink in the environment
streamlink ...

# Deactivate the environment
deactivate

# Use Streamlink without activating the environment
~/myenv/bin/streamlink ...

Install using pipx#

The pipx project combines the functionality of both venv and pip. It may be necessary to install it first, either with a system package manager, or using pip, as detailed in the documentation.

# *Either* install the latest Streamlink release from PyPI in a virtual environment
pipx install streamlink

# *Or*, install the most up-to-date development version from master on GitHub
pipx install git+https://github.com/streamlink/streamlink.git

# Use Streamlink
streamlink ...

Source distribution#

In addition to the pre-built wheels uploaded to PyPI, Streamlink's source distribution tarballs get uploaded to both PyPI and GitHub releases. These tarballs are meant for packagers and are signed using the following PGP key:

44448A298D5C3618

Please be aware that PyPI has dropped support for uploading new release file signatures in May 2023, so those can only be found on GitHub releases now.

See the Dependencies section down below for the required build- and runtime-requirements.

Warning

Please avoid building Streamlink from tarballs generated by GitHub from (tagged) git commits, as they are lacking the built-in release version string. The versioningit build-requirement also won't be able to find the correct version, as the content is not part of a git repository.

Instead, build from Streamlink's signed source-distribution tarballs which are uploaded to PyPI and GitHub releases, or from the cloned git repository.

Dependencies#

To install Streamlink from source, you will need these dependencies.

Since 4.0.0, Streamlink defines a build system according to PEP-517 / PEP-518.

Type

Name

Notes

python

Python

At least version 3.8

build

setuptools

At least version 65.6.0
Used as build backend

build

wheel

Used by the build frontend for creating Python wheels

build

versioningit

At least version 2.0.0
Used for generating the version string from git when building, or when running in an editable install. Not needed when building wheels and installing from the source distribution.

runtime

certifi

Used for loading the CA bundle extracted from the Mozilla Included CA Certificate List

runtime

exceptiongroup

Used for ExceptionGroup handling, to allow writing compatible code on all supported Python versions

runtime

isodate

Used for parsing ISO8601 strings

runtime

lxml

Used for processing HTML and XML data

runtime

pycountry

Used for localization settings, provides country and language data

runtime

pycryptodome

Used for decrypting encrypted streams

runtime

PySocks

Used for SOCKS Proxies

runtime

requests

Used for making any kind of HTTP/HTTPS request

runtime

trio

Used for async concurrency and I/O in some parts of Streamlink

runtime

trio-websocket

Used for WebSocket connections on top of the async trio framework

runtime

typing-extensions

Used for backporting runtime support of certain type hints on older Python versions

runtime

urllib3

Used internally by requests, defined as direct dependency

runtime

websocket-client

Used for making websocket connections

optional

FFmpeg

Required for muxing multiple video/audio/subtitle streams into a single output stream.

  • DASH streams with video and audio content always have to get remuxed.

  • HLS streams optionally need to get remuxed depending on the stream selection.

Windows binaries#

Windows stable releases

GitHub releases page

The most recent Streamlink release

Windows stable releases

Windows nightly builds

GitHub actions build artifacts

Built once each day at midnight UTC
GitHub account required

Windows nightly builds

Flavors

Installer

Portable

64 bit

32 bit

64 bit

32 bit

Latest Python

Windows 10+

Windows 10+

Windows 10+

Windows 10+

Python 3.8

Windows 7

Windows 7

Windows 7

Windows 7

Contents

Python

Python
embedded build

Embedded Python build
Streamlink

Streamlink
and dependencies

Streamlink and its runtime dependencies
FFmpeg

FFmpeg
for muxing streams

FFmpeg, required for muxing streams

Note

The installers automatically create a config file if it doesn't exist yet and set the value of the --ffmpeg-ffmpeg CLI parameter to the path of the included FFmpeg binary. The portable archives can't do that, and users need to create or update the config file themselves.

Please see the README of the streamlink/windows-builds repository for more information about the differences between the installers and portable archives.

Linux AppImages#

AppImage stable releases

GitHub releases page

The most recent Streamlink release

AppImage stable releases

AppImage nightly builds

GitHub actions build artifacts

Built once each day at midnight UTC
GitHub account required

AppImage nightly builds

Architectures

Contents

Python

Python
from the pypa/manylinux docker images

Python from the pypa/manulinux docker images
Streamlink

Streamlink
and dependencies

Streamlink and its runtime dependencies

How-To

  1. Download the AppImage file matching your CPU architecture (run uname -m to check)

  2. Set the executable flag via a file browser or chmod +x filename from a command-line shell

    # AppImage file names include the release version, Python version, platform name and CPU architecture
    chmod +x streamlink-5.3.0-1-cp311-cp311-manylinux2014_x86_64.AppImage
    
  3. Run the AppImage with any command-line parameters supported by Streamlink

    ./streamlink-5.3.0-1-cp311-cp311-manylinux2014_x86_64.AppImage --loglevel=debug
    

What are AppImages?#

AppImages are portable applications which are independent of the Linux distribution in use and its package management. Just set the executable flag on the AppImage file and run it.

The only requirement is having FUSE installed for being able to mount the contents of the AppImage's SquashFS, which is done automatically. Also, only glibc-based systems are currently supported.

Note: Check out AppImageLauncher, which automates the setup and system integration of AppImages. AppImageLauncher may also be available via your distro's package management.

Additional information, like for example how to inspect the AppImage contents or how to extract the contents if FUSE is not available on your system, can be found in the AppImage documentation.