This repository documents how Crossy Road's save file is structured and edited for educational purposes.
- Launch Crossy Road once first so
Android/data/com.yodo1.crossyroad/filesgets created. - Close Crossy Road before editing the save. Do not open Crossy Road again after closing it, because
chanddhstrings reshuffle when the game starts. - Go to
Android/data/com.yodo1.crossyroad/filesand copylatest-save.datsomewhere safe. - Rename the copied
latest-save.dattolatest-save.zipso you can open it. - Extract the archive and open
temp-filename. - Make your desired changes to
temp-filename. - Save
temp-filename, put it back into the archive, then restore the file name tolatest-save.dat. - As a precaution, delete any
.bakfiles before putting the edited save back, since they are backups. - Copy the edited
latest-save.datback intoAndroid/data/com.yodo1.crossyroad/files. - You can now open Crossy Road again after the edited save is back in place.
Important
If ch and dh do not match the current save file string, the save may get overridden by an older save.
For a single character entry, set un to true to mark it unlocked. Keep ut2 filled with a valid timestamp string, and do not leave ut2 as null.
Use the same approach for shop items, including paid and limited items, when the save entry supports an unlocked state.
Example:
{
"id": "901",
"un": true,
"tk": 0,
"pa": false,
"pw": 0,
"ts": false,
"pr": 0,
"vr": false,
"se": false,
"sts": {
"d": {}
},
"store": {
"vfwi": false,
"vwm": false,
"ut2": "2026-07-25T06:30:00Z",
"fv": false
}
}cc is the coins field. tce is total coins earned, and it is a good practice to keep tce greater than or equal to cc. However, at the time of discovery, tce gets updated in-game based on cc when it is set to 0.
hs is the base game high score field.
There are also separate high-score fields for other modes. For example, bv is for Beaver Chew & Chomp, and surf is for Subway Surfers.