JSON Schema Designer

Design a JSON Schema visually or as raw JSON, check sample data against it as you go, or generate a starting schema from example JSON. Everything stays in this browser.

Loading the designer...

Structure

Select an item to edit it. Arrow keys move between items, Alt plus Up or Down reorders, Delete removes.

Edit

Edit the JSON Schema directly. Valid changes update the structure straight away. Tab leaves the editor.

Help

How it works
  1. Build the schema in the Structure list. Select an item to edit its type, title, description and rules.
  2. Or edit the raw JSON Schema in the Schema tab. Both views stay in step.
  3. Put some data in the Example JSON tab. The Validation tab shows every problem, where it is, and which rule it breaks.
  4. To start from existing data, paste it into Generate from JSON.
  5. Download or copy the schema when you are done. Your work is also kept in this browser until you clear it.
Keyboard shortcuts
  • Up and Down arrows move between items in the Structure list. Home and End go to the first and last item.
  • Alt with Up or Down moves the selected property or definition.
  • Delete removes the selected property or definition. Undo brings it back.
  • Ctrl with Z undoes and Ctrl with Y redoes a structure change when the focus is not in a text box.
  • Left and Right arrows switch between the Schema, Example JSON, Validation and Generate tabs.
What is supported

Schemas use JSON Schema Draft 2020-12. The validator checks types, enum and const, string, number, array and object rules, allOf, anyOf, oneOf, not, if, then and else, dependent properties, local references to definitions and anchors, and the common formats: date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, json-pointer and regex.

Keywords the visual editor has no control for are kept exactly as written and can be edited in the Schema tab.

Known limitations
  • References to other files or URLs, and references resolved through nested $id values, are not followed.
  • unevaluatedProperties, unevaluatedItems and $dynamicRef are kept in the schema but not checked.
  • Internationalised host names are only checked for basic structure.
  • Property names that are whole numbers, such as 1 or 42, are always listed first by browsers and cannot be reordered.
  • Numbers too large to store exactly are rounded, and a warning is shown.
Privacy

Your schema and sample data are handled entirely in this browser. They are not sent to our server, not logged and not used for analytics. A working copy is saved in this browser's local storage so it is still here next time. Use Clear saved draft to remove it.

Are you sure?