Features • Installation • Usage • How It Works • Configuration • Acknowledgments • License
- Upload to GD Servers - Store files on RobTop's servers, get a level ID to share
- Fetch from GD Servers - Download and decode files using just a level ID
- Local Save Support - Inject encoded levels directly into your GD save file
- Cross-Platform - Works on Windows, macOS, and Linux (via Proton)
- Configurable - Custom GD save paths for non-standard installations
- Secure - Path traversal protection, input validation, overwrite confirmation
Requires Python 3.10+
pip install gd-storageOr install in development mode:
git clone https://github.com/c4k3ss/GD-Storage
cd GD-Storage
pip install -e .# Upload a file to GD servers
gd-storage --upload photo.png
# Download and decode from GD servers
gd-storage --fetch 123456789
# Encode and inject into local GD save
gd-storage --encode document.pdf
# Decode from local GD save
gd-storage --decode "LevelName"
# Configure GD save path (for non-standard installations)
gd-storage --configFiles are encoded using a base-9999 group encoding method:
- Compression - The file is gzip compressed with the filename prepended
- Chunking - Binary data is split into 8-byte chunks
- Base Conversion - Each chunk is converted to 5 base-9999 numbers (1-9999)
- Object Encoding - Numbers are stored in GD object group properties
- Level String - Objects are serialized into a valid GD level string
GD supports 10 groups per object (1-9999). By treating group numbers as digits in a base-9999 number system, we can efficiently pack 8 bytes into just 5 group values, achieving ~62.5% space efficiency.
On first run, GD Storage auto-detects your save path:
- Windows:
%LOCALAPPDATA%\GeometryDash - macOS:
~/Library/Application Support/GeometryDash
For custom paths (Linux/Proton, custom installs), run:
gd-storage --configConfig is saved to ~/.config/gd-storage/config.json
| Platform | Local Save | Upload/Fetch |
|---|---|---|
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes* | Yes |
*Linux requires configuring the Proton GD save path manually
- dashlib - GD server API
- gdparse - GD level string parsing
- pycryptodomex - AES encryption for macOS saves
- zstandard - Zstandard compression
Save file handling is based on a modified version of PyCCGameManager.
GD Storage is licensed under the MIT License
This project is for educational purposes. Use responsibly and don't abuse GD's servers.
