Character Vault
Any Concept / Any System
Your System Come To Life
Roll20 for Android
Streamlined for your Tablet
Roll20 for iPad
Streamlined for your Tablet

Personal tools


From Roll20 Wiki

Jump to: navigation, search

The sheet.json is a file required for character sheets that are submitted to Roll20. If you're just using a custom sheet in your normal game, you don't need the sheet.json(in fact, you can't even use one).

These can be tested with the Sheet Sandbox

Default Sheet Settings are optional things saved on the sheet.json.


Creating a sheet.json File

See the instructions on


  • the instructions field is written with markdown
  • Write everything on a single line, and use \n to create line-breaks
  • to write bullet points, place an extra \n if previous row isn't a bullet point
  • non-ASCII characters: use html character code to make them display correctly. E.g. é, not é
  • Test result in Sheet Sandbox


"instructions": "Feuille de Personnage pour [Chroniques Oubliées Contemporain]( Chroniques Oubliées Contemporain est le dérivé de Chroniques Oubliées Fantasy adapté pour jouer dans la période 1900-2100. Il permet de jouer des aventures du genre espionnage, commando militaire, enquêtes policières occultes, vampires contre garous, mutants, super-héros, épouvante, pulp, apocalypse zombie, cyberpunk, et plus.\n\n* Version 3.9.2 (27/04/2021)\n* [Lisez-moi](",


Following things can be included to the file, but are not mandatory:


If your sheet uses translations, you can also use them in your sheet.json for Default Sheet Settings.

sheet.json Examples

sheet.json for roll20's kitchensink sheet example, contains all mandatory sections. kitchensink/sheet.json

  "html": "kitchensink.html",
  "css": "kitchensink.css",
  "authors": "Roll20 Team (@roll20app)",
  "roll20userid": "1",
  "preview": "kitchensink.png",
  "instructions": "**This is a test**\n\nYou can put Markdown-formatted instructions here for how to use your sheet. Please try to keep it moderately-short (500 characters or less is preferred).",
  "legacy": true

You can also use hyperlinks in the description-field.

Stargate-RPG/sheet.json Example:

  • "legacy": false, as the sheet have been updated to CSE
  • "useroptions" contains Default Sheet Settings that the GM can change for the game, affecting values & looks of newly created sheets.
  "html": "stargate.html",
  "css": "stargate.css",
  "authors": "Andreas J.",
  "roll20userid": "1223200",
  "preview": "stargate_preview.png",
  "instructions": "Official character sheet for the 'Stargate RPG' by Wyvern Gaming.\n\n* [Character Sheet Documentation](",
  "useroptions": [
      "attribute": "show_name",
      "displayname": "Show name in rolls? ",
      "type": "select",
      "options": [
        "Yes|{{subtitle=@{character_name} }}",
        "No| "
      "default": "{{subtitle=@{character_name} }}",
      "description": "Determine if newly created characters displayed their names in rolls by default. GMs can find useful to hide the names of NPCs in some situations. This option can be be later changed on individual sheets from the 'Settings-page.'"
      "attribute": "whisper",
      "displayname": "Whisper Rolls to GM?",
      "type": "checkbox",
      "value": "/w gm",
      "description": "Determine if newly created characters only shows their rolls to the GM by default. Players and GMs can sometime find it useful to hide a roll from the other players if a secret roll needs to be made. This option can be be later changed on individual sheets from the 'Settings-page.'"
      "attribute": "campaign",
      "displayname": "Campaign Name: ",
      "type": "text",
      "value": "",
      "description": "Writes the campaign name on newly created character sheets."
      "attribute": "td",
      "displayname": "Tension die?",
      "type": "select",
      "options": [
      "default": "d6",
      "description": "Determine what the Tension Die is for newly created character."
  "legacy": false

Related Pages

See Also