The story behind the picker

About Random Steam Game Picker

Random Steam Game started as a project to help me learn .NET. I wanted something practical to build while experimenting with APIs, caching, error handling, and application design.

I'd tried other random Steam game pickers, but some were painfully slow. Waiting several seconds between picks, sometimes as long as eight seconds, wasn't unusual. Sometimes the website was slow; other times it deliberately made you sit through an animation.

I wanted something simpler: press a button, get a random game from your library, and immediately try again if you don't like the result. No artificial waiting. No roulette animation. Just pick a game.

A little history

From learning exercise to ongoing project

The first versions of Random Steam Game were written by hand, back before AI coding assistants were particularly useful for this kind of work. It was a place to experiment, make mistakes, learn new approaches, and occasionally discover that I'd made something far more complicated than it needed to be.

The website spent some time offline, but I eventually brought it back and started improving it again. What began as a relatively simple learning project has grown into a faster, more capable application with better caching, library exports, and several alternative ways to use the picker.

These days I maintain it using a mix of code I write myself and AI-assisted development. The tools have changed, but the goal hasn't: build something useful, keep learning, and don't make users wait around for no good reason.

What it does

  • Pick a random game from your public Steam library.
  • Limit selections to games with no recorded playtime.
  • Block games you don't want to see again in the current browser.
  • Reroll without starting the process over.
  • Refresh your cached library after buying new games.
  • Launch a selected game through Steam.
  • Export your library to CSV, including playtime and Steam Deck compatibility.

No Steam sign-in is required. The picker reads publicly available library information and doesn't modify your Steam account.

How it works

  1. You provide a Steam ID or Steam vanity URL.
  2. The application retrieves your public library through the Steam Web API, using cached data when available.
  3. Games excluded by your preferences are filtered out, and the picker randomly selects an eligible game.
  4. The result is displayed with game information and the option to launch it or pick again.

Caching makes repeated picks fast and reduces unnecessary requests to Steam. A cold cache or an unavailable Steam API can still slow things down.

Under the hood

Built with .NET

Random Steam Game is written primarily in C# and runs on .NET. It's also a project where I've tried different libraries and architectural patterns to understand how they work in practice.

.NET 10 / ASP.NET Core

HTTP APIs, application services, dependency injection, and server-side functionality.

Blazor

The website uses Blazor Web App with Interactive Auto components.

HybridCache

Memory and SQLite-backed caching help avoid unnecessary Steam API requests.

SQLite

Lightweight persistence for application data and caching.

Steam APIs

Public library data, game details, and Steam Deck compatibility information.

ErrorOr

Explicit error handling without turning every expected failure into an exception.

Earlier versions also experimented with MediatR, request handlers, and pipeline behaviors. I eventually removed the MediatR layer because the extra complexity wasn't justified for this application. Learning when not to use a pattern has been part of the experience.

The code is public if you're interested in the implementation, design decisions, or how the application has evolved. Browse the GitHub repository.

Because why not?

More than a website

I also enjoy old Internet protocols and alternative networks, so Random Steam Game has a few less conventional interfaces. You don't need any of them to use the website, but they're fun to experiment with.

Finger

Yes, the old Finger protocol can pick a Steam game.

finger <steamId>@finger.kgivler.com

IRC

Ask the bot in #randomsteamgame on Libera.Chat.

!random <SteamID or vanity>

Matrix

RandomSteamBot can also pick games in the Matrix room.

!steam <SteamID or vanity> Join the Matrix room

The website is also available over DN42, Yggdrasil, and experimentally through I2P. Some features and externally hosted assets may behave differently on those networks.

Free and open source

Random Steam Game Picker is free to use and open source under the MIT license. It's a useful little application, a learning project, and a portfolio piece.

Contributions and bug reports are welcome. If you have an idea for a feature, you can suggest it on GitHub or check out the features currently being considered.

Who's behind it?

I'm JoyfulReaper, a developer who spends a lot of time working with C#, .NET, Linux, self-hosted services, networking, and occasionally some wonderfully obsolete Internet protocols.

I like building practical software, understanding how things work, and making existing systems better. Random Steam Game is one of several projects I've built along the way.

Random Steam Game Picker is an independent project and is not affiliated with Valve or Steam.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.