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
- Paste a JSON array of schemas, or one schema whose allOf lists them.
- Choose the JSON Schema draft or keep automatic detection.
- Run the merge and review conflicts and rules kept in allOf.
- Download the merged schema and the conflict report.
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.