GSC Save Converter
There are many reasons that someone might want to transfer their Pokémon Gold, Silver, or Crystal save files between cartridge/emulator and their Virtual Console releases on the 3DS line of handhelds. These include but are not limited to transferring generation 2 Pokémon to modern generations with the use of the Poké Transporter application, or naturally unlocking the Celebi event where it was released outside Japan in Virtual Console for the first time. Unfortunately, there is a slight change in save file format in the VC releases that make other save files incompatible with it. This save converter exists to make the conversion between the two easy. The conversion is privately done on the client-side and saves are not stored on BMF.
If your in-game time is incorrect after converting, use a time change password generator to change it in-game.
For a save file to be compatible with this converter, it needs to be a clean save dump. For cartridges, the most modern options for save dumping include devices such as the GBxCart and the Joey Jr. For Virtual Console, using 3DS Custom Firmware to run Checkpoint is easiest. Despite being legal, tutorials on how to set up such devices or install CFW are outside the scope of BMF. Use save dumpers or CFW at your own risk - BMF cannot be held accountable for damage to save files, games, or consoles. If using emulator, usually saving in-game as normal and then uploading the .SAV created by the emulator should suffice.
BMF always assumes that this tool is used with legally dumped or emulated save files.
Manual Conversion Guide
Want to convert your save file on your own? The only difference between Virtual Console and original cartridge GSC save files is an extra 16 bytes tacked on to the very end of VC saves for time-keeping purposes. Therefore, with a free hex editor such as HxD, it's pretty simple to manually convert the two.
This is what the bottom of a cartridge save should look like when opened in a hex editor. (Your exact values may be different)
And this is what a Virtual Console save looks like - there's a whole extra line!
To convert between the two, simply use your hex editor of choice to either make a new 16 byte line filled with 00's for conversion to VC or chop off the whole line for conversion back to cartridge. If you have a completely different save size due to whatever emulator you're using, adjust accordingly so that the final offset is 00008000 for VC or 00007FF0 for cartridge. (Alternatively, use Visual Boy Advance-M and navigate to Files > Export > Battery file to get a cartridge-equivalent save.)
After converting, it's likely that your in-game time will be wrong. Use a time change password generator to change it in-game.
Japanese Crystal
Japanese Crystal has a different save file size due to extra space being allocated for the defunct Mobile System GB service. To convert your save file manually, follow the same instructions as above, except cartridge saves need to end in offset 0000FFF0 and VC saves need to end in offset 00010000. There is also no option to change your time manually in Japanese Crystal (or Gold and Silver for that matter) so if you want your time to be accurate after conversion, you'll need to use external means like a cheating device or save editor.
Last updated 2/28/23. Compatibility added for Japanese Crystal and emulator saves using an alternative file size. If you are an old user, you may have to CTRL+F5 or delete your browser cache if the converter is not working.