Skip to content

Repository files navigation

🎮 Game Tier List Maker

Turn a simple list of games into clean shareable tier-style poster cards. Make one image per category, or a single S/A/B style tier list, each filled with real game cover art and ready to post.

⭐ Enjoying this?

If this is useful to you please give the repo a star and follow me on GitHub. It genuinely helps and means a lot. Thank you! 🙏


Preview

Separate mode (one image per category):

Stories and Worlds That Stayed With Me Strong Visual Identity

Combined mode (a single S/A/B style tier list):

Combined tier list

(Sample outputs generated entirely by this tool from a CSV of game titles.)


What it does

  • 📥 Reads your games from a CSV file (category,title)
  • 🖼️ Automatically downloads each game's cover art from SteamGridDB
  • 🎨 Builds one horizontal card per category. The game name is baked into every poster
  • 🧱 Or builds one combined S/A/B style tier list with all categories in a single image
  • 🌈 Color grades categories gold to red in the order you list them (top tier to bottom tier)
  • 🖥️ Exports in 4K or 8K, as PNG or JPG
  • ⚡ Runs with one command. It installs its own dependencies and fonts on first run

What you need

  1. Python 3.9 or newer. Download here (on Windows tick "Add Python to PATH" during install)
  2. A free SteamGridDB API key (takes about 1 minute. Steps below)
  3. An internet connection (to download covers and fonts)

That's it. No coding knowledge required.


Quick start

1. Get the code

Option A. Download (easiest): click the green Code button on GitHub, then Download ZIP, then unzip it.

Option B. Clone:

git clone https://github.com/MMALI3287/game-tier-list-maker.git
cd game-tier-list-maker

2. Get your free SteamGridDB API key

  1. Go to steamgriddb.com and log in (you can use your Steam account).
  2. Open Preferences then API.
  3. Click Generate API key then copy it.

3. Add your key

In the project folder find the file .env.example. Make a copy of it, rename the copy to .env, then open it in any text editor and paste your key:

STEAMGRIDDB_API_KEY=paste_your_key_here
CSV_FILE=example.csv
RESOLUTION=4k
IMAGE_FORMAT=png
MODE=separate

Your .env is private. It is never uploaded to GitHub (it is listed in .gitignore).

4. Add your games

Edit example.csv (or make your own CSV) with two columns. The category and the game title:

category,title
Personal Hall of Fame,The Witcher 3: Wild Hunt
Personal Hall of Fame,Red Dead Redemption 2
Always Down to Play Again,Portal 2
Always Down to Play Again,Rocket League
  • Each category becomes one image (in separate mode).
  • Categories are colored gold to red in the order they first appear. Put your favorites first.
  • You can open this file in Excel, Google Sheets, or any text editor.

If you use a different file name set CSV_FILE=yourfile.csv in .env.

5. Run it

Open a terminal in the project folder then run:

python run.py

The first run installs Pillow then downloads the fonts automatically, then fetches every cover and builds the cards. When it finishes your images are in the output/ folder. 🎉

Opening a terminal in the folder:Windows: Shift + Right-click inside the folder, then "Open PowerShell window here"Mac: right-click the folder in Finder, then Services then New Terminal at FolderLinux: right-click inside the folder, then Open Terminal


Choosing a layout

Set MODE in your .env (or pass --mode):

  • separate: one image per category (default)
  • combined: a single S/A/B style tier list with every category as a colored row
  • both: produces the separate images plus the combined tier list
python run.py --mode combined
python run.py --mode both

Customizing

Change these in your .env (or pass them as flags):

Setting Options What it does
RESOLUTION 4k / 8k Output size (8K is huge and slow)
IMAGE_FORMAT png / jpg PNG for best quality, JPG smaller
MODE separate / combined / both Layout style
CSV_FILE any filename Which game list to use

Command line flags (these override .env):

python run.py --res 8k          # render in 8K
python run.py --mode combined   # single tier list image
python run.py --csv mylist.csv  # use a different list
python run.py --force           # re-download every cover
python run.py --fetch-only      # only download covers
python run.py --render-only     # only rebuild cards from cached covers

Covers are cached in covers/. Re-running is fast because only new games are downloaded.


Fixing a wrong or missing cover

Cover lookup is automatic and usually right. For games with generic names it can pick the wrong title. A few games occasionally have no portrait art. The tool prints a list of any it could not match.

To fix one, add it to overrides.csv with the correct SteamGridDB game id:

title,sgdb_id
Deadlock,5453171

Finding the id: search the game on steamgriddb.com, open its page, then copy the number from the URL. Example: steamgriddb.com/game/5453171 gives the id 5453171.

Then re-run python run.py (add --force to refresh that cover).


How it works

run.py  ->  poster_cards/
              config.py    reads .env and sets paths
              data.py      parses your CSV and overrides
              covers.py    searches SteamGridDB and downloads portrait art
              render.py    composes the cards with Pillow

Credits and attribution

  • Cover art is fetched from SteamGridDB, a community database. All game cover images are the copyright of their respective publishers and artists. They are used here only to illustrate the games. This project does not own or redistribute any of that artwork. It is downloaded locally when you run the tool (the covers/ folder is git-ignored, not committed).
  • The sample images in previews/ are shown for demonstration only. They also contain third-party cover art owned by the respective rights holders.
  • Fonts: Fraunces and Montserrat, both licensed under the SIL Open Font License.
  • Built with Pillow.

If you are a rights holder and want a sample image removed please open an issue.


License

This project's code is released under the MIT License. This license covers the source code only. It does not cover the third-party game cover art or fonts referenced above.


If you made something cool with this I would love to see it. ⭐ star the repo and follow me!

About

Game tier list maker: turn a CSV of games into shareable poster cards with auto-fetched cover art (4K/8K, one image per category).

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages