This is a work in progress, 

How to create a Homebrew JSON for 5eTools

We're going to start pretty broadly and then narrow down.


Section Tags

entry templates are not linked yet, still testing.

Section Name Example File(s) Entry Template Tool(s) Description
Adventure 💾 📑 A playable adventure. Should include maps, event descriptions, etc.
Books 💾 📑 Books are like Compendiums but include more information, 'fluff' and the like.
Background 💾 📑 PhB}
Boon 💾 📑 Special rewards from Extraordinarily powerful creatures for a character's service.
Class 💾 📑 PhB}
Class Features 💾 📑 Features such as Invocations, Fightstyles, or the like.
Collection A Brew with multiple section types defined within it, which doesn't lean more towards any one type.
Condition 💾 📑 {@condition condition} effects
Creatures/Bestiary 💾 📑 Bestiary - Monsters, NPCs and the like
Deity 💾 📑
Disease 💾 📑 {@disease Diseases} and illnesses.
Feats 💾 📑 Custom Feats
Hazard 💾 📑
Item 💾 📑
Object 💾 📑
Optional Features 💾 📑
Psionics 💾 📑
Races 💾 📑
Reward 💾 📑
Ships 💾 📑
Spells 💾 📑
Table 💾 📑
Trap 💾 📑
Variant Rules 💾 📑


JSON overview

  • Try to use tabs' 'instead of spaces in the file, most editors do this automatically, but mixing them will cause problems down the line. Be consistent
  • Indent after opening a punction section, reduce indention by one tab when ending a section
  • Brackets or Square Brackets [ ] or Braces or Curly Brackets { }, must open and close the various sections.
  • Quotation marks "" denote a string (alphanumeric content follows)
  • An orphaned set of punctuation will cause the JSON validation to fail.
  • The order punctation is opened and closed must be preserved  { [ "  will fail if not matched in the reverse order " ] } 
    • Will Work: { [ " " ] }
    • Will Fail:  { [ " } ] " (not closing one or more of them)
    • Will Fail: { [ " } ] " (Closing them out of order)
    • Will Fail: { [ " } ] "
      (Double Opening or double closing)
  • Quotation marks inside a set of quotation marks will END that string and that will often mean the remain string's text will fail validation.
    • "Ragnar yelled "HELP!!" at top of his lungs."  will be viewed as String "Ragnar yelled " and " at top of his lungs." are separate stings, and between them HELP!! is an unidentified tag/command - and so the validation will fail.
    • instead, try:
      • "Ragnar yelled HELP!! at top of his lungs." using two '' apostrophes, or
      • "Ragnar yelled “HELP!!” at top of his lungs." using open and close quotes ( “ ” ) (&ldquo and &rdquo in HTML also known as Ascii codes 0147 and 0148.
  • The comma (outside of quotation marks "" ) signifies the end of a line and that another element in that section or a new subsection will follow. The lack of a comma signfies the END of a section or subsection.
    • When another of the same element type (see Formatting) follows another line, that line must end with a comma (,)
    • When no other line of the same element or a new subelement follows. That line must NOT end with a comma (,)


      "source": "5eHP",
      "page": 0,
      "name": "Cthurkey",
      "size": "S",
      "type": "aberration",
      "alignment": [

Open braces { will open the segment, next line indents one step a tag (sources) is defined by a string -- we know this because of the quotation marks -- (5eHP). As the next line is part of that same section of the braces a comma ends the lines all the way to "alignment": [ subsection - which indents another step, and since "E" follows "C" - line "C" ends in a comma. "E" has nothing following it in that section so no comma is put at the end of the line and the next line will close that subsection with a closing Bracket which will reduce the indentation by one step. That closure is alsothe last element with that segment the open brace { defined so it also will have no comma and the program now knows that the next line will be unindented with a closing brace }