Open-source project
DevilXD/TwitchDropsMiner avatar
DevilXD/TwitchDropsMiner

TwitchDropsMiner: AFK drop mining without downloading the stream

An app that allows you to AFK mine timed Twitch drops, with automatic drop claiming and channel switching.

3,308 stars361 forksPythonMIT

At a glance

What is it?
TwitchDropsMiner is a Python desktop app that mines timed Twitch drops by fetching stream metadata instead of video, claims drops automatically and switches channels when the one you were on goes offline. Here is how it works, how to install it, and where it breaks.
Who is it for?
TwitchDropsMiner fits people who leave a machine on for hours and want drops without burning bandwidth: install the release build or run main.py from source on Python 3.10 or higher, log in once, and set a Priority List. It does not fit anyone who wants to keep watching Twitch in a browser on the same account, since the README warns that this causes false progress and a stuck miner, and it does not fit anyone unwilling to store a persistent login token in cookies.jar.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What TwitchDropsMiner replaces, and for whom

Timed Twitch drops require a viewer to be present on a channel for a set number of minutes. Doing that by hand means keeping a browser tab open, checking whether the streamer went offline, and clicking to claim each reward. TwitchDropsMiner is built for the case where nobody wants to do that: it runs as a desktop app, pretends to watch a stream, and handles channel switching and claiming on its own. The README frames the benefit as saving on bandwidth and hassle, and the mechanism is the reason both hold. The app never downloads the video or audio of the stream, so the bandwidth cost of a long mining session is far below watching the stream in a browser. The target user is someone with a spare machine or a background process and a list of games they want cosmetics from. It is not a viewer. There is no video surface, no chat, no stream controls. The app has a GUI (gui.py in the repository root) with tabs for inventory and settings, and the README shows screenshots of a main view, an inventory view and a settings view, but the product is a miner, not a player.

Metadata polling and the sharded websocket

The core trick is that drop progress on Twitch advances from stream metadata, not from decoded video. The README states that every several seconds the application pretends to watch a particular stream by fetching stream metadata, and that this is enough to advance the drops. That single design decision explains why the app can be lightweight and why it can be wrong: the client is not actually consuming the stream, so its notion of progress depends on what Twitch reports back. To know which channels are online, the app opens a websocket connection that receives events about streams going up or down and about viewer counts. That connection is sharded, and the README puts the trackable ceiling at 199 channels at once. Sharding matters because a single websocket subscription would not cover a large candidate set, and the app needs a candidate set to switch between. Around those two moving parts sit the policy layers: game priority and exclusion lists decide what to mine and in what order, stream tags and campaign validation decide whether a given stream can actually earn the drop, and automatic discovery finds campaigns based on linked accounts. Mining starts when new campaigns appear and stops when the last available drops have been mined, so an idle app is a normal state rather than a failure.

Installing TwitchDropsMiner and mining your first drop

The README's usage path starts from a release archive rather than a package manager. Download and unzip the latest release, keep it in the folder it comes in, and run the executable. On first launch you log in through the in-app form; the README notes that Twitch may send a New Login email and that the detected browser will be Chrome, because that is what the miner presents itself as. After a successful login the app fetches the campaigns and games available to your account. Add the games you care about to the Priority List on the Settings tab, then press Reload. The app fetches applicable streams and begins mining.

bash
# from a source checkout, after installing requirements
python main.py

Running from source needs Python 3.10 or higher, per the README. The repository ships requirements.txt with aiohttp, Pillow, pystray, truststore, PyGObject on Linux and pywin32 on Windows, so a source run is a normal pip install of that file. If you would rather not run a packaged executable, this is the path the README points to.

bash
pip install -r requirements.txt
python main.py

On Linux the project ships two portable formats, AppImage and PyInstaller, and the README recommends the AppImage. Either needs glibc >= 2.35 and a working display server. The Windows executable stores temporary runtime files under %TEMP% and keeps persistent data in the directory the executable sits in, which is why the README asks you to keep it where it came from. If you relocate it, the autostart entry, a registry value under the current user's autostart key, stops working until you toggle the option off and on again.

The same-account conflict and the cookies.jar trade-off

The most concrete limitation is stated as a warning in the README: watching a stream in the browser, or by any other means, on the same account the miner is using will usually cause the miner to misbehave, reporting false progress and getting stuck on the current drop. Using the same account to watch other streams during mining is discouraged. This is a hard constraint on how the tool fits into a day. You either mine or you watch, not both, unless you accept a stuck miner. The second trade-off is the cookies file. Persistent cookies are stored in cookies.jar, and authorization information is restored from it on each run. The README's caution is blunt: keep that file safe, because the stored authorization can give another person access to your Twitch account even without knowing your password. Anyone who would not leave a long-lived session token on disk should not run this. A third, milder issue is the countdown timer. It counts down a single minute and stops, restarting only when the app redetermines remaining time, which happens when Twitch reports progress and no later than 20 seconds after zero. The README says the seconds timer is an approximation and does not represent or affect mining speed, so a timer that looks stalled is not evidence of a broken miner.

Where the packaged builds and the platform notes bite

The Windows build is packaged with PyInstaller into an EXE, and the README says some antivirus engines, including Windows Defender, may report it as a trojan because PyInstaller has been used to package malicious Python before. The README calls these reports safe to ignore and offers the alternative: install Python yourself and run from source. That is a real decision point, not a footnote. If your environment forbids unsigned executables or flags PyInstaller output, source is the only path, and it requires Python 3.10 or higher on the machine. On Linux the README notes the app is significantly larger than the Windows build because gtk3 and its dependencies are included for system tray and notification support. It also says every feature is expected to work on Linux as well as Windows, and that Wine is a viable alternative to the native Linux build. Wine being described as working really well is worth remembering if glibc on your distribution is older than 2.35, since that is the stated floor for the native builds.

How it compares with a browser extension miner

The obvious alternative is a browser extension that does the same job inside a Twitch tab. The difference in approach is structural. An extension runs in the same browser profile you use for everything else, so it inherits your session and your tabs, and it depends on the page staying open. TwitchDropsMiner is a separate process with its own login stored in cookies.jar and its own websocket subscriptions, which is what lets it track a candidate set of up to 199 channels and switch on its own when a channel goes offline or when a higher-priority game comes online. The cost of that separation is exactly the conflict described above: two clients on one account confuse Twitch's progress reporting. A second alternative is simply watching the stream in a tab. That is the behaviour the app exists to avoid, and the README's bandwidth argument applies directly: metadata polling is not video delivery. Neither alternative gives you the priority and exclusion lists or the campaign validation, and neither stops itself when the last drop is mined.

Maintenance, licence and what the release history shows

The repository is not archived, and the last push was on 2026-09-07, which is recent. The release list is more informative than the push date. The newest entry is a dev-build tagged Development build, also dated 2026-09-07, while the last numbered versions are v15 from 2022-12-25 and v14 from 2022-10-27. In practice that means the maintained artifact is the development build, and anyone who wants the newest behaviour should expect to run a build labelled as such rather than a stable numbered release. The project is MIT licensed, which permits commercial and private use, modification and redistribution provided the licence and copyright notice are preserved. That is a permissive arrangement, but it says nothing about Twitch's own terms or about the account risk in the cookies file, and it is not a legal opinion on either. Upgrade cost is low in the packaged case: replace the folder contents and keep the cookies file if you want to stay logged in, and re-toggle autostart if you moved the executable. Source users should re-run the pip install against requirements.txt after pulling, since the dependency list is version-bounded on aiohttp and conditional on the platform.

Editorial conclusion

TwitchDropsMiner fits people who leave a machine on for hours and want drops without burning bandwidth: install the release build or run main.py from source on Python 3.10 or higher, log in once, and set a Priority List. It does not fit anyone who wants to keep watching Twitch in a browser on the same account, since the README warns that this causes false progress and a stuck miner, and it does not fit anyone unwilling to store a persistent login token in cookies.jar. Before committing, verify that your distribution has glibc >= 2.35 if you plan to use the Linux build, and check the campaigns page for the games you actually want, because account linking for those games is done by you, not by the app.

Frequently asked questions

What are Twitch drops and how do they work?

The README describes drops as timed rewards that advance while you watch a stream, and TwitchDropsMiner advances them by fetching stream metadata every several seconds rather than downloading video. Campaigns and their games are fetched by the app based on linked accounts, and mining starts automatically as new campaigns appear.

How to install TwitchDropsMiner?

Download and unzip the latest release from the releases page and run it, keeping it in the folder it came in. From source, the README requires Python 3.10 or higher, so install requirements.txt and run main.py. On Linux the project ships AppImage and PyInstaller builds and recommends the AppImage.

Do Twitch drops automatically claim?

Yes. The repository description states the app claims drops automatically, and the README lists automatic drop claiming and channel switching among its features. Mining also starts on its own when new campaigns appear and stops when the last available drops have been mined.

Official sources

  1. DevilXD/TwitchDropsMiner on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/devilxd-twitchdropsminer.svg)](https://hysenlabs.com/projects/devilxd-twitchdropsminer)