happytails.ai
English

JSON Schema Merger

Combine several JSON Schemas, or one allOf composition, into a single schema. Rules that can never be satisfied together are listed as conflicts.

Accepts up to 100,000 characters and 2 to 50 schemas. Everything runs in your browser. Downloads are the merged schema as JSON, a JSON report and a CSV list of conflicts. A JSON array of schemas, or one schema with allOf. YAML also works. Up to 100,000 characters. Review the settings before running.

Your result

How to use JSON Schema Merger
  1. Paste a JSON array of schemas, or one schema whose allOf lists them.
  2. Choose the JSON Schema draft or keep automatic detection.
  3. Run the merge and review conflicts and rules kept in allOf.
  4. Download the merged schema and the conflict report.

Report a problem or share an idea.

Useful next steps

Accepts up to 100,000 characters and 2 to 50 schemas. Everything runs in your browser. Downloads are the merged schema as JSON, a JSON report and a CSV list of conflicts.

How rules combine

Types are intersected, enums and const values are intersected, minimum and maximum bounds take the stricter value, required lists are joined, and properties are merged one by one. When one schema forbids extra properties, a property that only another schema defines is forbidden too, and a conflict is listed if that property is required.

What stays in allOf

Some keywords cannot be combined exactly, such as two different regular expressions, oneOf, not, if and then, patternProperties next to other property rules, and unevaluated properties. These are kept inside an allOf in the merged schema and listed in the report, so the meaning of the schema does not change.

Checking the result

Conflicts identify their schema location. A conflict in an optional property or a numeric-only rule does not by itself make the whole schema impossible. The report marks provenUnsatisfiable only when a bounded structural proof establishes that no instance can satisfy the merged schema. Otherwise that flag is not a satisfiability proof. When there are no conflicts, optional sample checks validate candidates from each composition against the other with Ajv. Separate input schemas retain their own local-reference roots. Samples are evidence, not an exhaustive equivalence proof. Schemas using __proto__ as a property, pattern or dependency key are rejected by the validator.