Streamlink 8.5.0
Immutable release. Only release title and notes can be modified.
- Fixed: named-pipe player inputs not being cleaned up on pre-open failure (#6935)
- Fixed: stream start offsets being incorrectly cast to int in HLS (#6941)
- Fixed:
hls-playlist-reload-timenot accepting floats (#6957) - Refactored:
HTTPSessionand fixed many typing issues (#6924) - Refactored:
MPDNodein DASH manifest parser to allow attribute namespaces (#6988) - Updated plugins:
- douyin: fixed validation schema (#6930)
- douyu: re-introduced plugin with new implementation (#6959, #7003)
- mdstrm: added support for VODs / embedded streams with access tokens (#6994)
- nos: rewritten and fixed plugin (#6954)
- radiko: fixed live_url value (#6962)
- trovo: removed plugin (#6999)
- tvazteca: added new plugin (#6994)
- Docs: clarified requirements of Twitch high quality streams (#6992)
- Tests: fixed test failures since Python 3.15 beta 1 (#6919)
- Security: made GitHub releases immutable (#6927)
- Security: pinned all GitHub actions to commit IDs (#6936)
- Security: switched to uv lockfile for all CI workflows and for building release assets (#6948)
- Misc: added pre-built FISH shell completions to release tarballs and wheels (#7014)
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 94: @bastimeyer
- 3: @streamlinkbot
- 2: @its-wizza
- 1: @goodryb
- 1: @hxzhao527
- 1: @mpiffa
- 1: @puneetdixit200
ποΈ Full changelog
Goodryb <renyabo2005@gmail.com> (1):
plugins.douyu: re-introduce plugin with new implementation
Hao Xiang <haoxiangzhao@outlook.com> (1):
plugins.douyu: no assert_hostname in HTTPAdapter
Lachlan Wisdom <its-wizza@proton.me> (2):
plugins.mdstrm: support VOD and access_token param
plugins.tvazteca: new plugin
Puneet Dixit <236133619+puneetdixit200@users.noreply.github.com> (1):
cli: clean player inputs after pre-open failures
bastimeyer <mail@bastimeyer.de> (93):
tests: fix can_colorize() monkeypatch on py315
chore: remove trio-typing from typing dep group
tools: bump ty to 0.0.34 and fix warnings
tools: bump mypy to 2.0.0
session.http: fix default value of params kwarg
chore: remove types-urllib3 and fix issues
chore: remove types-requests and fix issues
session.http: add schema method overloads
session.http: refactor HTTPSession
session.http: fix request exception context
chore: set requests version range in typing group
script: create GitHub releases as draft first
script: update GitHub changelog parser
script: add --check to GitHub release script
plugins.douyin: fix validation schema
tools: bump ty to 0.0.38 and fix issues
tools: bump mypy to 2.1.0
tools: bump ruff to 0.15.13
ci.github: add py315-dev test runners
ci.github: update temp-dependencies install script
ci.github: pin actions/checkout
ci.github: pin actions/setup-python
ci.github: pin actions/upload-artifact
ci.github: pin actions/download-artifact
ci.github: pin codecov/codecov-action
ci.github: pin pypa/gh-action-pypi-publish
ci.github: bump peter-evans/create-pull-request
ci.github: add dependabot github-actions config
stream.hls: fix duration_offset_start type
webbrowser: minor typing fixes and cleanup
tools: bump ruff to 0.15.15 and fix issues
tools: bump ty to 0.0.43
script: exclude bots from GitHub release body
docs: remove FreeBSD from install page
build: add uv lockfile
ci.github: add astral-sh/setup-uv dependabot cfg
ci.github: add uv.lock dependabot update config
ci.github: switch to uv for docs builds
ci.github: switch to uv in lint workflow
ci.github: switch to uv in useragents workflow
ci.github: switch to uv in test job
ci.github: fix Py_GIL_DISABLED sysconfig on <py313
script: fix build-and-sign BASH options
script: allow build-and-sign to be run by uv
build: set --no-isolation when building
ci.github: switch to uv in build test job
ci.github: switch to uv in docs test job
ci.github: switch to uv in release workflow
ci.readthedocs: switch to uv
build: downgrade Sphinx to <9
tools: bump ruff to 0.15.16 and fix issues
tools: bump ty to 0.0.48
utils.num: add to_float()
stream.hls: fix reload-time float user overrides
plugins.nos: rewrite and fix plugin
tests: bump pytest to 9.1.0
tests: fix pytest 9.1.0 warnings
tools: bump ty to 0.0.50 and fix issues
tools: bump ruff to 0.15.17 and fix issues
ci.github: run preview-builds on uv.lock updates
ci.github: don't group uv lockfile dependabot PRs
ci.github: no dependabot test workflow on push
script: rm uv deps from update-user-agents.py
utils.processoutput: refactor stdin argument
build: remove redundant env markers in uv.lock
build: bump setuptools to 83.0.0
build: bump types-setuptools to 83.0.0.20260706
build: bump typing-extensions to 4.16.0
build: bump shtab to 1.8.1
tools: bump ruff to 0.15.21 and fix issues
tools: bump ty to 0.0.58
tools: bump mypy to 2.2.0
stream.dash: add support for namespaced attrs
stream.dash: also find namespaced default_KID attr
docs: improve high quality Twitch streams section
revert: build: bump build to 1.5.1
plugins.trovo: remove plugin
ci.github: update temp lxml cp315-cp315 wheels
ci.github: move install-temp-dependencies.sh
tools: bump ruff to 0.16.0 and fix issues
chore: clean up tool.ruff.lint.per-file-ignores
ci.github: set workflow concurrency
ci.github: add lint checks for git PR branches
docs: add git commit style section
chore: change max git commit subject length from 50 to 72
tools: bump ty to 0.0.64 and fix issues
tools: bump mypy to 2.3.0
ci.github: fix fetch-tags
build: rewrite shell completions script in Python
build: bump shtab to 1.9.0, add FISH completions
build: bump shtab to 1.9.2
build: bump charset-normalizer to 3.4.9
build: bump lxml to >=4.6.4,<8
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (11):
ci.github: bump actions/checkout from 6.0.2 to 6.0.3
ci.github: bump codecov/codecov-action from 6.0.1 to 7.0.0
ci.github: bump actions/checkout from 6.0.3 to 7.0.0
ci.github: bump actions/setup-python from 6.2.0 to 6.3.0
build: bump certifi from 2026.5.20 to 2026.6.17
build: bump pytest from 9.1.0 to 9.1.1
build: bump types-docutils to 0.22.3.20260712
build: bump build to 1.5.1
build: bump certifi to 2026.7.22
build: bump types-setuptools to 83.0.0.20260724
build: bump types-docutils to 0.22.3.20260724
mpiffa <84506365+mpiffa@users.noreply.github.com> (1):
plugins.radiko: fix live_url value
streamlinkbot <streamlinkbot@users.noreply.github.com> (3):
session.http_useragents: update useragents
session.http_useragents: update useragents
session.http_useragents: update useragents
Streamlink 8.4.0
- SECURITY: fixed arbitrary local file read via
file://URI in HLS and DASH (CVE-2026-44353/GHSA-hgqw-6m45-hw5f) - Added:
--stream-passthrough-encryptedfor passing through encrypted HLS/DASH segments to the output stream without any checks (#6896) - Fixed:
--interfaceselection by name on macOS (#6908) - Fixed:
--interfacenot being applied to adapters mounted after session init (#6915) - Updated plugins:
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 26: @bastimeyer
- 1: @jordandalley
- 1: @streamlinkbot
ποΈ Full changelog
3l3m3nt <jordan@dalleyfamily.net> (1):
stream: add --stream-passthrough-encrypted
bastimeyer <mail@bastimeyer.de> (26):
tools: bump ty to 0.0.30 and fix issues
tools: bump mypy to 1.20.1
tools: bump ruff to 0.15.10
tests: add --stream-passthrough-encrypted tests
cli.argparser: fix type of session-option mapping
docs: fix sidebar-brand anchor color
ci.readthedocs: bump python to 3.14
tools: set ty.environment.python-platform to "all"
ci.github: add macos-latest runners
ci.github: update temp-dependencies install script
compat: add more OS-check constants
tests: add linux_only and darwin_only markers
session.http: fix set_interface on macOS
session.http: patch urllib3's set_socket_options
plugins.twitcasting: filter preroll on segment map
tools: bump ruff to 0.15.12
chore: replace docutils-stubs with types-docutils
tools: bump ty to 0.0.33
tools: bump mypy to 1.20.2
session.http: also set interface on adapter mount
plugins.goltelevision: rewrite and fix plugin
docs: update Ubuntu package URL to Ubuntu 26.04
utils.url: add is_insecure_scheme
stream.hls: check segment/map/key/plist URI scheme
tests.stream.hls: decryption key w/ custom adapter
stream.dash: check BaseURL and segment URI scheme
streamlinkbot <streamlinkbot@users.noreply.github.com> (1):
session.http_useragents: update useragents
Streamlink 8.3.0
- Added: support for choosing the
--interfaceby name on non-Windows systems, with optional prefixes, similar to curl (#6862) - Added: support for also checking stream segments in
HLSStream.parse_variant_playlist()by settingcheck_streams="segments"(#6878) - Fixed: stdout/stderr streams in
ProcessOutputnot being fully line-buffered (#6868) - Updated plugins:
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 26: @bastimeyer
- 1: @espressogit
- 1: @streamlinkbot
ποΈ Full changelog
Test Account <216888017+espressogit@users.noreply.github.com> (1):
plugins.soop: migrate to sooplive.com
bastimeyer <mail@bastimeyer.de> (26):
cli.output.http: fix typing issues
docs: temporarily downgrade Sphinx to 8.x
session.http: support SO_BINDTODEVICE on *nix
tests: await HLS thread termination in more tests
tests: check CLI streamrunner logrecord threadName
tests: add test ID to HLSStream thread names
utils.processoutput: fix line-buffered output
docs: fix header icon sizes on install page
chore: set ty-specific type ignore comments
webbrowser: set py310 TemporaryDirectory kwargs
plugin.api.websocket: block double reconnect calls
plugins.nicolive: WS reconnect on HLS key failure
compat: rewrite charset_normalizer/chardet imports
stream.hls: fix iter_lines() type in M3U8Parser
plugins.radiko: fix HTTPSession.headers override
stream.hls: update check_streams param
tools: bump ruff to 0.15.9
tools: bump mypy to 1.20.0
chore: update and clean up .gitignore
tools: add ty 0.0.28 to "typing" dependency group
ci.github: add "ty check" step to typing job
docs: add "ty check" to developing page
ci.github: bump codecov-action to v6
script: add interface/proxy to test-plugin-urls.py
plugins.cdnbg: rewrite and fix plugin
plugins.telefe: rewrite plugin
streamlinkbot <streamlinkbot@users.noreply.github.com> (1):
session.http_useragents: update useragents
Streamlink 8.2.1
- Changed: HLS stream names using the "pixels" format to include framerate data, if available (#6848)
- Deprecated: imports of re-exported attributes from
streamlink.stream(#6821) - Fixed: plugin-related typing issues and missing typing annotations (#6822)
- Updated plugins:
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 45: @bastimeyer
- 1: @GiviMAD
- 1: @drticcz
- 1: @streamlinkbot
ποΈ Full changelog
Miguel Γlvarez <miguelwork92@gmail.com> (1):
plugins.pluto: use v2 streams
Steinar H. Gunderson <steinar+git@gunderson.no> (1):
plugins.nrk: identify as tv-player v9
bastimeyer <mail@bastimeyer.de> (45):
stream: deprecate package exports
plugins: fix stream imports
plugin: add missing stream_weight typing info
plugins: fix stream_weight signatures and typing
plugin: add _get_streams() typing info
plugin: turn _get_streams() into an abstractmethod
plugin: add streams() typing info
plugin: add missing typing info
cli.output: fix file typing
logger: add getLogger(name) -> StreamlinkLogger
logger: replace all logging.getLogger() calls
tests: add logger class test for plugins
plugins: fix str typing issues
plugins: fix regex match typing issues
plugins.ustreamtv: fix typing
plugins.wwenetwork: fix typing and update matcher
plugins.oneplusone: pass through HLSStream arg
plugins.openrectv: fix login validation schema
plugins.filmon: fix HTTP error handling
plugins.mjunoon: fix typing
plugins.streann: fix typing
plugins.twitch: fix typing
tests.utils: monkeypatch detect_encoding
tools: bump ruff to 0.15.2 and fix issues
ci.github: get run-urls of preview-builds
chore: fix minor typing issues
ci.github: read html_url in preview-build workflow
docs: fix streamlink.stream API docs
plugins.twitch: switch to usher v2 endpoints
chore: add "UP" rules to ruff config
chore: fix UP035
chore: fix UP037
chore: fix UP028
chore: fix UP034
chore: fix UP041
chore: fix UP024
chore: fix UP006 and UP007
chore: fix UP030 and UP032
session.http_useragents: add version tuples
plugins.twitch: fix stream names on usher v2
stream.hls: set framerate attribute on StreamInfo
stream.hls: add framerate to pixels name if gt 30
chore: pass msg args to log.trace() calls
chore: pass msg args to log calls with obj repr
plugins.youtube: bump API clientVersion
drticcz <polak.jn@gmail.com> (1):
plugins.ceskatelevize: fix sports streams
streamlinkbot <streamlinkbot@users.noreply.github.com> (1):
session.http_useragents: update useragents
Streamlink 8.2.0
- Added:
--http-cookies-fileCLI argument andhttp-cookies-filessession option (#6796) - Changed:
PluginErrorto also be raised when setting a plugin'surlattribute to a value that doesn't match any of its URL matchers, not just when initializing the plugin class (#6810) - Deprecated: imports of re-exported module attributes from
streamlink.utils(#6819) - Fixed:
LogRecordmissing the function name and stack info (#6788) - Fixed: custom network interface being reset when disabling Diffie-Hellman key exchange (#6795)
- Fixed: broken logic when unsetting ipv4/ipv6 session options (#6795)
- Fixed: edge case when trying to detect the text encoding of certain kinds of HTML responses (#6802)
- Fixed: missing representation not being handled when polling dynamic DASH manifests (#6807)
- Updated plugins:
- dailymotion: disabled TLS session tickets, fixing 403 HLS playlist responses on Python builds with an older version of OpenSSL (#6816)
- Docs: bumped dependencies with support for Sphinx 9 (#6783)
- Docs: added rules for AI-assisted contributions (#6782)
- Build: added
typing-extensionsas a runtime dependency on Python 3.10, as it was already a transitive runtime dependency (viaexceptiongroup) that was used as a fallback import since 8.1.0 (#6813)
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 48: @bastimeyer
- 1: @streamlinkbot
ποΈ Full changelog
bastimeyer <mail@bastimeyer.de> (48):
docs: add support for Sphinx 9
ci.github: fix mypy docs step
ci.github: force py 3.12 on mypy docs step
logger: fix LogRecord func+sinfo init args
docs: add section about AI-assisted contributions
ci.github: replace if always() with !cancelled()
session.http: refactor interface session option
session.http: refactor ipv4/ipv6 session options
session.http: refactor disable-dh session option
session.http: fix lost interface on TLSNoDHAdapter
session.http: fix ipv4/ipv6 option unset logic
session.http: add --http-cookies-file
cli: wrap setup_session_options() exceptions
ci.github: also test build/docs on push
session.http: fix typing
session.options: refactor and fix typing
session.plugins: fix typing
session.session: rm unneeded type ignore comment
chore: fix typing issues in setup.py
chore: fix typing issues in build_backend
chore: fix typing issues in Sphinx extensions
chore: fix typing issues in scripts
webbrowser.cdp.client: mutable response_headers
utils.parse: fix unsuccessful encoding detections
utils.args: fix ge/gt/le/lt typing in num class
utils: fix minor typing issues
tests.stream: refactor ffmpegmux tests
cli.argparser: fix typing of ArgumentParser fixes
cli.output.player: fix PlayerArgsMeta typing
cli.console: fix typing
cli: fix minor typing issues
tests.stream: fix thread termination
tests: fix various minor typing issues
tests.utils: refactor dataclass tests
stream.dash: fix typing in manifest module
stream.dash: fix missing repr in worker's reload()
webbrowser.cdp: add CDPEvent base class
webbrowser.cdp: fix typing
plugin: move match check to url setter, fix typing
plugin.api: fix WebsocketClient typing
logger: fix typing
build: add typing-extensions runtime dep on py310
chore: remove error handling for typing imports
chore: minor typing fixes
utils.args: remove unneeded comparison protocols
tools: bump ruff to 0.15.0
plugins.dailymotion: disable TLS session ticket
utils: deprecate package exports
streamlinkbot <streamlinkbot@users.noreply.github.com> (1):
session.http_useragents: update useragents
Streamlink 8.1.2
- Fixed: warnings when parsing HLS playlists with private-use language subtags (#6780)
- Updated plugins:
- youtube: fixed live streams (#6777)
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 2: @bastimeyer
ποΈ Full changelog
bastimeyer <mail@bastimeyer.de> (2):
plugins.youtube: fix live streams
stream.hls: rm warning on private language subtags
Streamlink 8.1.1
- Fixed:
--stream-segmented-queue-deadlinenot being applied correctly to the Streamlink session options (#6758) - Changed:
--hls-segment-ignore-namesto not hardcode.tsHLS segment file name extensions (#6747) - Updated plugins:
- Build: removed unneeded
wheeldependency frombuild-system.requiresand thebuilddependency group (#6754)
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 26: @bastimeyer
- 1: @qwer-lives
- 1: @streamlinkbot
- 1: @yayokorea
ποΈ Full changelog
bastimeyer <mail@bastimeyer.de> (26):
tools: bump mypy to 1.19.1
tools: bump ruff to 0.14.10 and fix issues
chore: fix setuptools typing issues
build: remove wheel from build-system.requires
build: remove wheel from build dependency group
chore: fix setuptools typing issues again
cli: fix --stream-segmented-queue-deadline option
ci.github: bump actions/checkout to v6
ci.github: bump actions/setup-python to v6
ci.github: bump python-version to 3.14
ci.github: bump codecov/codecov-action to v5
ci.github: bump actions/upload-artifact to v6
ci.github: bump actions/download-artifact to v7
ci.github: bump peter-evans/create-pull-request
2026
ci.github: always run all lint steps
plugins.pluto: fix urlmatchers
plugins.pluto: rewrite ad detection
tools: bump ruff to 0.14.11 and fix issues
chore: reformat streamlink init module
stream.dash: fix DASHStreamWriter.write signature
validate: fix callable validation
validate: fix length validator
validate: fix various parse validators
tests: fix typing in validate package tests
plugins.dailymotion: fix 403 HLS playlist response
qwer-lives <jordigonzalezminombre@gmail.com> (1):
stream.hls: remove .ts ext from ignore_names regex
streamlinkbot <streamlinkbot@users.noreply.github.com> (1):
session.http_useragents: update useragents
yayo <jiwoowatch@gmail.com> (1):
plugins.soop: fix return_type for lg_cdn
Streamlink 8.1.0
- Deprecated:
--hls-segment-queue-thresholdin favor of--stream-segmented-queue-deadline(#6734) - Improved: debug logging of segmented streams (#6730)
- Updated plugins:
- twitch: fixed clips GQL API query (#6744)
- Tests: removed accidental
pytest_covdependency when running tests (#6727)
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 18: @bastimeyer
- 1: @streamlinkbot
ποΈ Full changelog
bastimeyer <mail@bastimeyer.de> (18):
tests: only load pytest_cov plugin in CI runners
stream.hls: turn NamedTuples into dataclasses
stream.segmented: hide repr of some segment attrs
utils: add FormattedDataclass meta class
stream.segmented: log queued segment in base class
plugins.twitch: fix redundant ad trace logging
stream.segmented: log fileext Segment property
tools: bump ruff to 0.14.6
stream.hls: refactor queue deadline logic
stream.hls: rename --hls-segment-queue-threshold
stream.segmented: move check_queue_deadline()
stream.segmented: fix _queue_last attr init
stream.segmented: send queued status to generator
stream.hls: refactor wait_and_reload()
tools: bump mypy to 1.19.0
tools: bump ruff to 0.14.7 and fix issues
stream.dash: improve representation lookup
plugins.twitch: fix clips GQL persisted query
streamlinkbot <streamlinkbot@users.noreply.github.com> (1):
session.http_useragents: update useragents
Streamlink 8.0.0
- BREAKING: dropped support for EOL Python 3.9 (#6674)
- BREAKING/API: removed deprecated
url_masterfromHLSStream/MuxedHLSStream(#6688) - BREAKING/dependencies: bumped version requirement of
urllib3to>=2.0.0(#6686) - Added:
--stream-segmented-durationin favor of--hls-duration(now deprecated), which affects HLS, DASH and other segmented stream types (#6705) - Added:
durationparameter todash://streams (DASHStream) (#6705) - Added:
--ffmpeg-validation-timeoutfor being able to increase the time for validating the FFmpeg executable (--ffmpeg-ffmpeg) (#6716) - Added: Flatpak player detection for VLC and mpv (#6717, #6723)
- Refactored: parts of the internal
SegmentedStream,HLSStreamandDASHStreamimplementations (WIP) (#6696, #6707, #6709) - Updated plugins:
- aloula: fixed livestream schema (#6662)
- btv: rewritten and fixed plugin (#6691)
- chzzk: added support for in-progress VODs via live-rewind streams (#6675)
- dlive: fixed streams expiring after 5 minutes (#6695)
- goodgame: updated matches, switched API endpoints (#6714)
- nhkworld: removed plugin (#6677)
- rtve: fixed validation schema (#6701)
- twitch: fixed access token acquirement and various persisted GraphQL query IDs (#6720, #6721)
- twitch: added
--twitch-supported-codecsfor access to higher quality streams (#5769)
- Dependencies: dropped optional
zstandarddependency on Python 3.14 and above (#6683) - Tests: bumped version requirement of
pytestto>=8.4.0(#6612) - Docs: refactored docs config and custom Sphinx extensions, added
makeoptions for disabling various components for offline building (#6668, #6669) - Docs: fixed compatibility with
docutils==0.22.2(#6699)
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 68: @bastimeyer
- 2: @streamlinkbot
- 1: @amurzeau
- 1: @oliviernes
- 1: @rishubil
ποΈ Full changelog
Alexis Murzeau <amubtdx@gmail.com> (1):
docs: fix compatibility with docutils==0.22.2
Nesswit <rishubil@gmail.com> (1):
plugins.chzzk: live-rewind for in-progress VODs
bastimeyer <mail@bastimeyer.de> (68):
tools: bump ruff to 0.13.0
chore: add "TC" rules to ruff config
tools: bump mypy to 1.18.1
session: fix HTTPSession typing
plugins.aloula: fix livestream schema
docs: reformat and clean up Sphinx's conf.py
docs: move custom extensions to docs/sphinxext
docs: remove ignored linting rules and fix issues
docs: bump furo to 2025.09.25
docs: add NO_ACKNOWLEDGEMENTS make option
docs: add NO_INTERSPHINX make option
docs: add NO_GITHUB_BUTTONS make option
docs: reformat acknowledgements section
docs: add JetBrains link to acknowledgements
tools: bump ruff to 0.13.2 and fix issues
tools: bump mypy to 1.18.2
stream.segmented: fix typing of writer queue
plugins.nhkworld: remove plugin
ci.github: remove -dev suffix from py314 runners
docs: use neutral example input URLs
tools: bump ruff to 0.14.1
ci.github: pycryptodome wheels on cp314-cp314t
plugins.btv: rewrite and fix plugin
plugins.dlive: refresh signed HLS playlist URL
cli: disable colored CLI usage text output
session.http: turn valid req args into a hashmap
stream.hls: refactor playlist reload
plugins.rtve: use xpath for data-setup attr
docs: replace debian bookworm with trixie
chore: drop support for Python 3.9
chore: fix typing issues after Python 3.9 drop
chore: fix linting issues after Python 3.9 drop
chore: drop static method dummy context bindings
cli: remove unneeded Path.resolve() workaround
utils.url: replace implicit URI scheme regex
chore: from typing import TypeAlias
stream.hls: remove deprecated url_master arg+attr
build: bump min version of urllib3 to 2.0.0
session.http: remove urllib3 1.x workaround
session.http: remove urllib3 1.x fallback import
session.http: remove urllib3 1.x pct enc override
tests.session.http: update percent encoding tests
build: skip urllib3[zstd] on py>=314
ci.github: drop zstandard temp-dep on cp314{,t}
tests: req pytest>=8.4.0, load plugins explicitly
ci.github: print pytest config in test runners
stream.segmented: count duration in worker
stream.segmented: add --stream-segmented-duration
stream.dash: add duration parameter
plugins.twitch: set ad segment duration to zero
stream.hls: move sequence counter to base class
stream.segmented: refactor sequence gap warning
stream.dash: use worker sequence, check gaps
stream.segmented: move check_sequence_gap()
stream.segmented: kw_only dataclasses
stream.segmented: move init+discontinuity attrs
stream.file: switch to pathlib
ci.github: use upstream brotli wheel on cp314
plugins.goodgame: fix plugin
plugins.twitch: new access_token GQL query
plugins.twitch: fix live stream and VOD metadata
plugins.twitch: fix clips metadata
cli.output.player: refactor PlayerArgs factory
cli.output.player: add flatpak detection
plugins.twitch: add --twitch-supported-codecs
stream.hls: warn on playlist_sequence access
docs: add flatpak section to players page
stream: fix HLS and DASH docstrings
oliviernes <olivier.nesme@gmail.com> (1):
cli: add --ffmpeg-validation-timeout option
streamlinkbot <streamlinkbot@users.noreply.github.com> (2):
session.http_useragents: update useragents
session.http_useragents: update useragents
Streamlink 7.6.0
- Added: official support for Python 3.14 (#6617)
- Added:
--skipfor stopping on existing file outputs without user prompts (#6633) - Added:
CDPClientSession.{apply,retrieve}_cookies()for copying cookies between Streamlink's HTTP session and the web browser (#6650) - Updated plugins:
- Docs: fixed compatibility with
docutils>=0.22(transitive dependency) (#6625)
π¦ Download and Installation
Please see the installation instructions for a list of available install methods and packages on the supported operating systems.
βοΈ Configuration and Usage
Please see the CLI documentation for how to configure and use Streamlink.
β€οΈ Support
If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
Your support is very much appreciated, thank you!
π Contributors
- 28: @bastimeyer
- 2: @streamlinkbot
- 1: @lbrooney
- 1: @rishubil
ποΈ Full changelog
Liam Rooney <80072393+lbrooney@users.noreply.github.com> (1):
plugins.kick: add --kick-low-latency
Nesswit <rishubil@gmail.com> (1):
plugins.chzzk: add live playback
bastimeyer <mail@bastimeyer.de> (28):
plugins.lrt: rewrite and fix stream URL schema
tools: add back faster-cache mypy extra
tools: bump mypy to 1.17.0 and fix issues
tools: bump ruff to 0.12.3
plugins.indihometv: remove plugin
build: add Python 3.14 to package classifiers
tools: bump ruff to 0.12.5 and fix issues
docs: bump furo to 2025.07.19
tools: bump ruff to 0.12.7
tools: bump mypy to 1.17.1
docs: fix compatibility with docutils==0.22
cli: replace sys.exit() calls
cli: replace parser.error() call
plugins.mediaklikk: fix player data regex
cli: add --skip
plugins.lrt: fix channels schema
docs: add note about AUR mirror on GitHub
plugins.vkvideo: refactor, add VOD support
plugins.vkvideolive: rename vkvideo to vkvideolive
plugins.vkvideolive: add missing VOD qualities
tools: bump ruff to 0.12.11
chore: add "PTH" rules to ruff config
build: refactor setup.py
docs: add note about revoking Twitch OAuth tokens
webbrowser.cdp.client: apply/retrieve cookies
plugins.kick: use retrieve_cookies()
webbrowser.cdp.devtools: update to v0.0.1510116
webbrowser.cdp.client: fix page.navigate ret type
streamlinkbot <streamlinkbot@users.noreply.github.com> (2):
session.http_useragents: update useragents
session.http_useragents: update useragents