A small Windows app that turns a video, GIF, or image into a Steam Artwork Showcase pair. It handles the preview, crop, split, looping, and file-size optimization locally, so you do not need to prepare both panels by hand in a media editor.
Video and GIF inputs produce two synchronized files:
showcase_main.gif, 506 px wideshowcase_right.gif, 100 px wide
Still images produce PNG files. If a PNG is unusually large, the app can use JPEG instead to fit the upload limit.
Each file is optimized separately for Steam's 5 MB limit. The default target is 4.95 MB to leave a small safety margin. For animation, the FPS selected in the app stays locked during optimization.
Download the latest release and choose one of these:
- Setup EXE: installs the app and creates a Start Menu shortcut.
- Portable ZIP: extract it anywhere and run
ArtworkShowcaseMaker.exe.
Both builds include FFmpeg and gifski. Python, Rust, and separate media tools are not required.
- Open or drop a video, GIF, or image into the app.
- Check the Steam layout preview and adjust the crop, height, trim range, or loop settings.
- Click Optimize. The app finds the best quality it can fit under the file limit without changing your selected FPS.
- Preview the synchronized result and upload both files to Steam.
The default layout keeps the full source frame and calculates the height from its aspect ratio. With a custom height, you can fit the whole frame or crop to fill, then move and zoom the media directly in the preview.
For long or custom-height artwork, follow How to Upload Long Images for Showcases if Steam crops or resizes the files. The 506 px file goes in the main Artwork Showcase slot, and the 100 px file goes in the right slot.
- MP4, WebM, MOV, MKV, AVI, GIF, PNG, JPEG, WebP, and BMP input
- GIF output for animation and PNG or JPEG output for still images
- Steam layout preview with 506 px and 100 px panels
- clip trimming, crop positioning, and zoom controls
- locked output FPS
- gifski encoding with an FFmpeg fallback
- parallel quality testing
- synchronized result preview
- timestamped output folders, so older exports are not overwritten
- experimental best-loop search and crossfade preview
- local processing with no Steam login, uploads, or telemetry
Find Best Loop is experimental. It works best when a clip is already close to looping and can reduce a small jump between the end and beginning. It cannot turn arbitrary footage into a seamless loop.
GIF is an old and inefficient animation format. Short clips usually work best, often around 2 to 6 seconds at 12 to 24 FPS. Longer clips, taller outputs, and higher frame rates take more time and need heavier compression to stay under 5 MB.
If the result looks too compressed, trim the clip first. Lower the output height or FPS only when necessary.
Source builds require Windows 10 or 11 and Python 3.11 or newer.
- Run
setup.bat. - Run
run.bat.
The setup script creates a local .venv. If Rust/Cargo is available, it also
builds gifski. Otherwise the app can use its FFmpeg fallback.
To build the standalone application:
python -m pip install -r requirements-build.txt
pyinstaller packaging/ArtworkShowcaseMaker.spec --noconfirm --cleanTagged releases are built by GitHub Actions. The workflow packages the portable ZIP, creates the installer, runs a packaged-app smoke test, and publishes SHA-256 checksums.
Artwork Showcase Maker for Steam is an independent community project. It is not affiliated with or endorsed by Valve Corporation. Steam is a trademark of Valve Corporation.
Licensed under the GNU Affero General Public License v3.0 or later. See LICENSE and THIRD_PARTY_NOTICES.md.

