Updated January 2026, using Godot 4.5.1
Watch the offical video tutorial on YouTube: https://youtu.be/ROIMh3aHjMk
- Your game code is in a GitHub repo
- You already created your project page on itch.io
⚠️ ⚠️ ⚠️ Follow ALL the steps below⚠️ ⚠️ ⚠️
First we need an API Token for itch.io. Head to the Account Settings > Developer > API Keys section. This link should also take you there. Generate a new API key specifically for Github Actions.
Next up, you will need a dedicated GitHub token. Under your profile developer settings create a new token. Give it the repo permissions. Set the expiration date as you see fit.
Go to your game project’s GitHub repo. In the repository settings add the following tokens secrets to be accessible in Actions. Make sure you name them exactly as below:
GH_TOKEN
ITCHIO_TOKEN
If you export your project at least once, Godot will create a export_presets.cfg file in the root of the project. You can find the export settings in Project > Export.
Important
Important step.
Give a name to the export template. End the name with -web, because it’s a HTML export.
Alternatively you could do -windows, -macos, -linux, etc.
This is because the GitHub action we will be using uses this suffix to determine to which channel on itch should the build be pushed.
Make sure you setup the export path exports/web/index.html as seen on the screen below:
Add this action to the .github/workflows directory in your game's GitHub repository. Create the directory on the repository website or create it locally and then push.
mkdir -p .github/workflows
touch .github/workflows/itchio-publish.ymlAdd the following code to the itchio-publish.yml file:
name: Publish to Itch.io
on:
push:
branches: ["master"]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Godot Export
id: export
uses: firebelley/godot-export@v7.0.0
with:
godot_executable_download_url: https://github.com/godotengine/godot/releases/download/4.5.1-stable/Godot_v4.5.1-stable_linux.x86_64.zip
godot_export_templates_download_url: https://github.com/godotengine/godot/releases/download/4.5.1-stable/Godot_v4.5.1-stable_export_templates.tpz
relative_project_path: ./
archive_output: true
env:
GITHUB_TOKEN: ${{secrets.GH_TOKEN}}
- name: Publish to Itch
uses: Ayowel/butler-to-itch@v1.2.0
with:
butler_key: ${{secrets.ITCHIO_TOKEN}}
itch_user: antzgames
itch_game: test-project
version: ${{ github.ref_name }}
files: "${{ steps.export.outputs.archive_directory }}/test-web.zip"Make the appropiate changes to itch_user and itch_game in the itchio-publish.yml file:
itch_user: replace_with_your_itch_user
itch_game: replace_with_your_itch_game_nameThis repository deploys a web test project using the limboAI C++ GDExtension to itch.io at:
https://antzgames.itch.io/test-project?secret=YtwaXmKha1xKVDZSxJCw0HMKOU
