GD Storage
Hide any file inside a Geometry Dash level
Features • Installation • Usage • How It Works • Configuration • Acknowledgments • License
Features
- 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
Installation
Requires Python 3.10+
pip install gd-storage
Or install in development mode:
git clone https://github.com/c4k3ss/GD-Storage
cd GD-Storage
pip install -e .
Usage
# 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 --config
How It Works
Files 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
Why Base-9999?
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.
Configuration
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 --config
Config is saved to ~/.config/gd-storage/config.json
Platform Support
| Platform | Local Save | Upload/Fetch |
|---|---|---|
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes* | Yes |
*Linux requires configuring the Proton GD save path manually
Dependencies
- dashlib - GD server API
- gdparse - GD level string parsing
- pycryptodomex - AES encryption for macOS saves
- zstandard - Zstandard compression
Acknowledgments
Save file handling is based on a modified version of PyCCGameManager.
License
GD Storage is licensed under the MIT License
Disclaimer
This project is for educational purposes. Use responsibly and don't abuse GD's servers.
Metadata
Release files for gd-storage 1.0.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gd_storage-1.0.9.tar.gz | 18.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gd_storage-1.0.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.6 kB
Release files / gd_storage-1.0.9.tar.gz
| Download URL | gd_storage-1.0.9.tar.gz |
|---|---|
| Size | 18.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b7a6cd26f41cea2ec87d3b9bdc2136d77dddfb25ede6c204c1108f2c3f4cb8b9
|
|
BLAKE2b-256 checksum How to use checksums |
13cacaf91713497755ceb91617b6a93931220bd50338c281e1408ff7f0be9449
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / gd_storage-1.0.9-py3-none-any.whl
| Download URL | gd_storage-1.0.9-py3-none-any.whl |
|---|---|
| Size | 21.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a38fb48d704bb9ca7f6fa0243005a243f5822268d51486af76d591e8a7f686fc
|
|
BLAKE2b-256 checksum How to use checksums |
d427454ffa3fc269390291623bda294f32308d7d1254d4032c5cbc3149cdda53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|