Automating Humble Choice Steam Redemptions With Playwright

Every month, I used to go through the same repetitive redemption process on Humble Choice.

Open the Humble Choice page. Click a game. Click Get game on Steam. Click Redeem. Land on Steam. Check the subscriber agreement box. Activate the key. Close the tab. Go back to Humble. Repeat the whole thing for the next game.

None of this is hard.

It is just repetitive in exactly the way computers are good at handling.

So I made a small supervised Playwright script that does the boring clicking for me while I watch. It does not bypass payment, ownership, Steam Guard, logins, captchas, or anything sketchy like that. It just automates the browser steps for games that are already available in your own Humble account.

But before I tell you to download anything, let me say the security part out loud.

Please Do Not Blindly Trust This

I work in cybersecurity, and if I saw a random website telling me:

"Download this script so it can help you redeem games in your Steam account."

...I would be suspicious too.

That sounds like phishing. Or malware. Or credential theft. Or, at minimum, bad advice.

A browser automation script that interacts with Humble and Steam should be treated carefully. Even if the intent is harmless, it is still code that controls a browser while you may be signed into accounts you care about.

So I do not want this to be a "just download my zip and trust me" situation.

You have a few options:

  1. Read the source code first.
  2. Copy and paste the files yourself into your own text editor.
  3. Run it from source after you understand what it does.
  4. Use the downloadable zip only as a convenience if you are comfortable with it.

The script is intentionally small and plain-text. There is no compiled binary, no obfuscated code, no browser extension, and no separate background service.

The public package contains:

  • humble-choice-steam-claimer.mjs: the main Playwright automation script
  • run-humble-claimer.ps1: a PowerShell launcher that checks for Node.js, installs Playwright locally if needed, and starts the script
  • package.json: the Node dependency file. The only npm dependency is Playwright
  • README.md: quick usage instructions
  • LICENSE: the MIT license

You can inspect those files directly here. These links open plain-text copies in your browser, so you can select all and copy the contents into local files:

If you are not comfortable running it, do not run it. The manual redemption process still works fine. This just removes repetitive clicking.

What Playwright Is

Playwright is a browser automation framework. In normal-person terms, it lets a script open a real browser, go to web pages, click buttons, read visible page content, wait for pages to change, and handle tabs or popups.

The official Playwright docs describe it as an end-to-end testing framework for modern web apps, and the Playwright GitHub README also mentions browser automation scripts as a supported use case. It can control Chromium, Firefox, and WebKit using one API.

If you remember Selenium, this is the same general idea: a program controls a browser. The difference is that Playwright feels a lot more comfortable with modern JavaScript-heavy sites. It has better waiting behavior, cleaner element locators, easier tab handling, and a straightforward way to launch a visible browser profile.

That matters here because Humble and Steam are not static old-school web pages. Buttons appear after state changes. Redemptions open new pages or tabs. The Humble game list is a modal carousel. Playwright gives the script enough browser awareness to handle that without doing fragile screen-coordinate clicking.

What This Script Does

The script opens a visible browser and waits for you to confirm that the Humble Choice game grid is on screen. Then it:

  1. Detects the games on the Humble Choice page.
  2. Opens the first game.
  3. Clicks Get game on Steam.
  4. Waits for the key area to appear.
  5. Clicks Redeem.
  6. Switches to the Steam activation page.
  7. Checks the Steam subscriber agreement box.
  8. Clicks the activation button.
  9. Closes the Steam tab.
  10. Returns to Humble and moves to the next game with the right chevron.

The browser stays visible the whole time, so you can see exactly what is happening.

You can stop the script at any point with Ctrl+C in PowerShell.

What This Script Does Not Do

This is important.

The script does not:

  • Ask for your Humble password.
  • Ask for your Steam password.
  • Bypass Steam Guard.
  • Bypass captchas.
  • Bypass payment.
  • Bypass ownership checks.
  • Generate keys.
  • Scrape someone else's account.
  • Run as a hidden background service.
  • Install a browser extension.
  • Activate anything you are not already entitled to redeem.

If Humble or Steam asks for a login, Steam Guard code, captcha, or other sensitive action, you handle that yourself in the visible browser.

The script is just clicking through the same workflow you would normally click manually.

What You Should Still Be Careful About

Even with those limits, you should still treat this like real code.

This script controls a browser. If you are signed into Humble or Steam in that browser, then the script can interact with those pages. That is the whole point, but it is also why you should inspect the code first.

The PowerShell launcher may also run:

npm install

and:

npx playwright install chromium

That is normal for a Playwright project, but it is still dependency installation. If you are cautious about supply chain risk, you should review package.json first and decide whether you are comfortable installing the listed dependency.

At the time of writing, the package uses Playwright as its only npm dependency.

Use This Only on Your Own Accounts

Use this only with your own Humble and Steam accounts, for games you own or are entitled to redeem.

You are responsible for respecting:

  • Humble's terms
  • Steam's terms
  • Account security requirements
  • Region restrictions
  • Activation limits
  • Any errors or warnings shown during redemption

Also, websites change. If Humble or Steam changes their HTML, the script may need an update. I recommend starting with a dry run each month.

Requirements

  • Windows 10 or 11
  • Node.js 20 or newer from nodejs.org
  • A Humble Choice month URL, like:
https://www.humblebundle.com/membership/july-2026

Option 1: Read or Copy the Source Yourself

This is the most transparent way to use it.

Create a folder somewhere on your computer, for example:

mkdir humble-choice-steam-claimer
cd humble-choice-steam-claimer

Then create these files yourself by copying the source from the links above, repeated here for convenience:

You can use Notepad, VS Code, Notepad++, or any text editor you like.

For example:

notepad package.json
notepad run-humble-claimer.ps1
notepad humble-choice-steam-claimer.mjs

Paste the contents of each file from the public source links, save them, and then run the dry run command below.

Option 2: Download the Zip

If you have reviewed the source and you are comfortable using the packaged version, download the script folder:

Download humble-choice-steam-claimer-public.zip

Extract it somewhere normal, such as your Desktop or Documents folder.

The folder includes:

  • humble-choice-steam-claimer.mjs
  • run-humble-claimer.ps1
  • package.json
  • README.md
  • LICENSE

First Run

Open PowerShell in the extracted or manually-created folder and run:

.\run-humble-claimer.ps1 -Url "HUMBLE_MONTH_URL" -DryRun

Example:

.\run-humble-claimer.ps1 -Url "https://www.humblebundle.com/membership/july-2026" -DryRun

The first run installs Playwright locally and installs Playwright's Chromium browser as a fallback. It also creates a browser-profile folder, which stores the login session for the automation browser.

You may need to sign into Humble and Steam once inside that browser.

If PowerShell blocks the script, use:

powershell -ExecutionPolicy Bypass -File .\run-humble-claimer.ps1 -Url "HUMBLE_MONTH_URL" -DryRun

Running It

After the dry run detects the right games, run:

.\run-humble-claimer.ps1 -Url "HUMBLE_MONTH_URL"

That mode pauses before each game and before each Steam activation page, which is a nice cautious first real run.

Once you trust the flow, and you are still watching the visible browser, you can run:

.\run-humble-claimer.ps1 -Url "HUMBLE_MONTH_URL" -Continuous

Useful Options

Revisit cards already marked CLAIMED:

.\run-humble-claimer.ps1 -Url "HUMBLE_MONTH_URL" -IncludeClaimed

Use a specific game order instead of automatic detection:

.\run-humble-claimer.ps1 -Url "HUMBLE_MONTH_URL" -Games "Game One; Game Two; Game Three"

Leave Steam activation tabs open after each attempt:

.\run-humble-claimer.ps1 -Url "HUMBLE_MONTH_URL" -KeepSteamOpen

Reopen each game from the grid instead of using the Humble modal's right chevron:

.\run-humble-claimer.ps1 -Url "HUMBLE_MONTH_URL" -GridNavigation

Why This Exists

I wanted something like this for years.

Back when I first played with browser automation, Selenium was the tool I reached for, and getting small personal automations stable could be pretty fiddly. Playwright makes this kind of practical browser scripting feel a lot more approachable.

This is the sweet spot for automation to me.

It is not replacing judgment. It is not bypassing rules. It is not trying to be clever with someone else's account. It is just removing a pile of repetitive clicking from something you are already allowed to do.

And because this touches real accounts, the source should be visible before anyone runs it.

Sources

Back to the homepage