Steam Game Recording Exporter
Export Steam's fragmented game recordings (.m4s + .mpd) as standard MP4
files without re-encoding. Choose recordings from an interactive terminal menu
or use command-line options for batch exports.
- Windows, Linux and macOS with automatic Steam path detection
- Background recordings and saved clips, filtered by game or Steam account
- Parallel exports with per-worker and overall progress
- Original timestamps preserved, with optional folders per game
Original recordings are kept unless you explicitly choose source deletion or cleanup mode.
Quick start
Install with uv on Windows, Linux or macOS:
uv tool install steam-game-recording-exporter
steamexporter
uv manages Python and dependencies. Available after the first PyPI release.
Update with uv tool upgrade steam-game-recording-exporter.
Interactive mode
Run steamexporter in an interactive terminal.
Use arrow keys and Enter to select, Esc to go back, and Ctrl+C to cancel.
? What do you want to do?
❯ Export recordings to MP4
List recordings
Clean up sources of already-exported recordings
Show detected Steam paths
? Which Steam recordings?
❯ Background recordings (default)
Everything Steam has stored
Saved clips (manually created)
? Which game?
❯ All games (21 clips)
Counter-Strike 2 (14 clips)
Factorio (7 clips)
? Which of the 21 clips? All of them
? Output directory /home/you/Videos
? Group exported videos into game folders? No
? How many parallel workers? (HDD source: 1-2, SSD source: 2-4) 2
? Delete the original Steam folders after a successful export? No
? Export 21 clips to /home/you/Videos with 2 workers? Yes
The menu remembers the output folder and worker count. Game grouping and source deletion are off by default each run.
Command line mode
Pass the same recording filters and export settings directly:
steamexporter --list-clips
steamexporter --process-all --group-by-game --output ~/Videos
steamexporter --help
Both modes detect existing exports in flat and game-folder layouts without moving them. Active background recordings are skipped; stop the game and wait up to a minute before retrying. Saved clips are unaffected.
Logs and disk space
Allow space for temporary streams as well as the final MP4 for each worker. Temporary files are removed on success or failure.
Logs include runtime versions, fragment counts and FFmpeg diagnostics:
- Windows:
%LOCALAPPDATA%\SteamGameRecordingExporter\logs\ - macOS/Linux:
~/SteamGameRecordingExporter/logs/
--verbose also prints debug logs to the console.
Development
Requires Python 3.9+; uv can install it automatically.
git clone https://github.com/yb-yu/steam-game-recording-exporter.git
cd steam-game-recording-exporter
uv sync --extra dev
uv run steamexporter
uv run pytest -q
uv build
CI tests Python 3.9 and 3.14 on Linux, and 3.14 on macOS and Windows, including large recordings, concurrent exports and cleanup. Package checks run the built CLI without a source checkout.
Use the Git-ignored scratchpad/ for local experiments and tests/ for
regression tests.
License
MIT License
Metadata
Release files for steam-game-recording-exporter 1.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| steam_game_recording_exporter-1.2.1.tar.gz | 38.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| steam_game_recording_exporter-1.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 64.5 kB
Release files / steam_game_recording_exporter-1.2.1.tar.gz
| Download URL | steam_game_recording_exporter-1.2.1.tar.gz |
|---|---|
| Size | 38.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2b04e62b5a2bf6dde2c9073da97d8a6639342bde5fec9f3b15e6381221bf6126
|
|
BLAKE2b-256 checksum How to use checksums |
36feb4ee34e1d255c646a2d10a866293199baa0b88815de0d528953b188ef46e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logRelease files / steam_game_recording_exporter-1.2.1-py3-none-any.whl
| Download URL | steam_game_recording_exporter-1.2.1-py3-none-any.whl |
|---|---|
| Size | 26.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
df4298ba9f31da4d8b3aa1997316381ff0857df8840449ea132192cd215e697c
|
|
BLAKE2b-256 checksum How to use checksums |
dc70a314ff34a1a634f5388e3a2fed1d7dcd5e1fd01790166262a12753bed387
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency log