gm-extract
CLI tool for extracting GameMaker assets from data.win files.
What it extracts
- Sprites, one PNG per frame, cut using the Texture Page Item (TPAG) rectangles
- Tilesets, as a whole image and as individual tiles
- Fonts, as a whole image and as individual glyphs
- Audio from the embedded AUDO chunk and from external audio groups (
*.dat) - All strings (
strings.txt) - A
manifest.jsonlisting every extracted resource, plus object, room, script, shader, timeline and sequence names
Texture pages in PNG, BZ2 + QOI (2zoq) and plain QOI (fioq) formats are supported.
Requirements
Python 3.8 or newer.
Installation from PyPI
pip install gm-extract
Installation from source
git clone https://github.com/nazarhktwitch/gm-extract
cd gm-extract
pip install .
Or run without installing:
PYTHONPATH=src python -m gm_extract
Usage
gm-extract path/to/data.win
gm-extract path/to/data.win -o output_dir
gm-extract --list path/to/data.win
If no path is given, data.win (or a single *.win / *.unx file) in the current directory is used.
External audio groups are looked up next to data.win.
Options
| Option | Description |
|---|---|
-o, --out DIR |
Output directory. Default: extracted |
--list |
Print the contents and exit without writing files |
--pages |
Also save whole texture pages |
--sheets |
Also save each animation as a single sheet.png |
--pad |
Place frames on a canvas of the sprite size, keeping transparent margins |
--no-sprites |
Skip sprites |
--no-tilesets |
Skip tilesets |
--no-fonts |
Skip fonts |
--no-audio |
Skip audio |
--no-strings |
Skip strings |
Limitations
- The texture table layout used by GameMaker 2022.9 and later is assumed. Older
data.winfiles are not supported. For older versions check Related projects (e.g. GMS Explorer for GMS 1) - Textures stored outside
data.winare skipped with a warning. --sheetsonly includes frames that are on the same texture page as the first frame of the sprite.- Only sprites of the normal type are extracted. Spine and SWF sprites are not.
Related projects
- GMExtract: extracts sprites and audio from the
data.winof Game Maker Studio games. No longer maintained; its README names GMS Explorer as the successor. - GMS Explorer: opens and browses
data.win, extracts the frames of a sprite. On hiatus. Supports only GMS 1.
License
MIT. See LICENSE.
Metadata
Release files for gm-extract 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| gm_extract-1.0.0.tar.gz | 15.0 kB | With provenance | Details for gm_extract-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| gm_extract-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for gm_extract-1.0.0-py3-none-any.whl |
Total release size: 31.4 kB
Release files / gm_extract-1.0.0.tar.gz
| Download URL | gm_extract-1.0.0.tar.gz |
|---|---|
| Size | 15.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6b77ce67bd417309b65337c3c68209e2ea3ee1b62175ab9622d3e035725bc0c5
|
|
BLAKE2b-256 checksum How to use checksums |
987cd3d3862b0e07784edf9e2aac154e56754e431628411448261edcb477f90c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logRelease files / gm_extract-1.0.0-py3-none-any.whl
| Download URL | gm_extract-1.0.0-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
801232c72f4f4f1a6198836855c3fa835245782240792224459347acaef8132f
|
|
BLAKE2b-256 checksum How to use checksums |
4367efea379fea88823baca0b4d1acaa502ee70daa1e6bab7ec0269bc729fba9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 1, 2026.
Transparency logSecurity for gm-extract 1.0.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for gm_extract-1.0.0.tar.gz
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 Nov 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.