Home / Build & Release / Spreadsheet to Game Data JSON

Spreadsheet to Game Data JSON

Designers like spreadsheets and games like JSON. Paste a table from Google Sheets, drop a CSV or an .xlsx with several sheets, and get typed game data: numbers stay numbers, true stays true, lists become arrays and stats.hp becomes nested data. Add a type to a header like hp:int, rarity:enum(common|rare) or drop:ref(items) and every row is checked, including links between sheets. Download the JSON for free. Pro adds all sheets in one ZIP plus ready Unity C#, TypeScript, Godot and Lua code to load them.

Drop an .xlsx, .csv or .tsv file
Every sheet of an Excel file becomes its own JSON
Header tricks
hp:int speed:float boss:bool name:string
tags:string[] list from a|b|c · data:json raw JSON
rarity:enum(common|rare|epic) only these values
drop:ref(items) must be a key in sheet items
stats.hp nested object · name! required · id:key key column
#notes column and rows starting with # are skipped
Columns without a type get one guessed from their values.

    

    Pro · Every sheet as JSON in one ZIP, Unity C# classes with a loader, a Godot 4 data class, TypeScript types and Lua tables, plus a Unity-ready copy of each file. Copy and download on the code tabs too. See plans

    Why convert spreadsheets to JSON

    Item stats, enemy waves, dialogue, shop prices and level settings are easiest to balance in a spreadsheet, where you can sort, sum and compare. Games read JSON. Copying values by hand breaks things, and plain CSV turns every number into text. This converter keeps the types, builds nested objects and lists, and checks the data before it reaches your game.

    Typed headers

    Add a type after a colon in the header row. int and float must be numbers, bool accepts true, false, yes, no, 1 and 0, and a type ending in [] splits the cell into a list. enum(a|b|c) allows only those values, so a typo like "rrae" is caught. ref(items) checks that the value is a key in the items sheet, so every enemy drop points to an item that exists. A dot in a header like stats.hp makes a nested object. Columns without a type are guessed from their values.

    Using it in Unity and Godot

    Unity's JsonUtility cannot read a list at the top level, so the Pro C# loader wraps it for you and builds a dictionary by key. Put the JSON in a Resources folder or assign it as a TextAsset. In Godot 4, the generated class loads the JSON once, keeps the rows and lets you look them up by key. Godot reads every JSON number as a float, so the class turns integer keys back into int.

    Is my data uploaded?

    No. Files are read in your browser, including .xlsx, and nothing is sent anywhere.