LV2 · Toolooo Standard
Schema Drift Doctor
Compare JSON or CSV samples and see where a data contract may have changed.
How did the data contract change?
Compare sample shapes, not values. JSON and CSV stay in this page’s memory. The comparison updates as you edit.
Field rules, array sampling & CSV inference
One path per line. The full path must be available in sampled records. A null leaf counts as present; a missing parent does not.
Ignores the named path and its descendants. Copy special-key paths from the view, for example $["a.b"].
Combines types across inspected items. Rare shapes outside the sample may be missed.
When enabled, empty cells become null and true/false become booleans. Leading-zero IDs stay strings. Turn off to treat every CSV cell as text.
CSV uses comma separators and the first row as headers. Compare CSV with a JSON array of records for matching paths.
$.customer_id: This path was observed in Before but is absent from the inspected After structure. Consumers that still read it may need a fallback or migration. You explicitly marked this path as required.Schema change summary
Risk assumes consumers built for Before will read After. This is sample-shape inference, not formal JSON Schema validation; observed nulls and presence do not prove declared constraints.
Visual contract map
$.customer_emailRemovedBeforestringAfterNot observedWhy & next check
$.customer_emailThis path was observed in Before but is absent from the inspected After structure. Consumers that still read it may need a fallback or migration.
Next check: Confirm whether consumers require this field, then review the producer and consumer migration together.
$.customer_idREQUIREDRequired field removedBeforenumberAfterNot observedWhy & next check
$.customer_idREQUIREDThis path was observed in Before but is absent from the inspected After structure. Consumers that still read it may need a fallback or migration. You explicitly marked this path as required.
Next check: Restore the required field or agree a consumer migration before changing the contract.
$.customer_refAdded / unexpectedBeforeNot observedAfterstringWhy & next check
$.customer_refAfter includes a path not observed in Before. This is usually additive for tolerant readers; strict consumers may reject unexpected fields.
Next check: Check additional-field validation and update the consumer model if the new field should be used.
$.customer.phoneNull now observedBeforestringAfternullWhy & next check
$.customer.phoneAfter contains null where Before did not. Consumers that assume a usable value may need null handling. A sample does not establish a formal nullable contract.
Next check: Check null guards, defaults and whether null has a distinct meaning from a missing field.
Need more evidence: After has only null at this path, so its non-null type cannot be compared. The other sample reveals string. Add representative non-null objects or array records to compare this path.
$.email_addressAdded / unexpectedBeforeNot observedAfterstringWhy & next check
$.email_addressAfter includes a path not observed in Before. This is usually additive for tolerant readers; strict consumers may reject unexpected fields.
Next check: Check additional-field validation and update the consumer model if the new field should be used.
$.items[].priceType changedBeforenumberPresent in 2 of 2 sampled objectsAfterstringPresent in 2 of 2 sampled objectsWhy & next check
$.items[].priceThe observed non-null types changed from number to string. Parsing, validation or operations such as arithmetic may behave differently.
Next check: Validate parsing and update the consumer model or an explicit conversion at the boundary.
$.items[].quantityREQUIREDRequired field sometimes missingBeforenumberPresent in 2 of 2 sampled objectsAfternumberPresent in 1 of 2 sampled objectsWhy & next check
$.items[].quantityREQUIREDThis field is absent from at least one sampled After object, although it was present in every sampled Before parent. Code that assumes the field exists may need a fallback. You explicitly marked this path as required.
Next check: Restore the required field or agree a consumer migration before changing the contract.
$.tagsAdded / unexpectedBeforeNot observedAfterarray1 of 1 items inspectedWhy & next check
$.tagsAfter includes a path not observed in Before. This is usually additive for tolerant readers; strict consumers may reject unexpected fields.
Next check: Check additional-field validation and update the consumer model if the new field should be used.
$.tags[]Added / unexpectedBeforeNot observedAfterstringWhy & next check
$.tags[]After includes a path not observed in Before. This is usually additive for tolerant readers; strict consumers may reject unexpected fields.
Next check: Check additional-field validation and update the consumer model if the new field should be used.
$.totalType changedBeforenumberAfterstringWhy & next check
$.totalThe observed non-null types changed from number to string. Parsing, validation or operations such as arithmetic may behave differently.
Next check: Validate parsing and update the consumer model or an explicit conversion at the boundary.
Before: 15 observed paths · After: 17 · 1 excluded by ignore rules. Counts include root and array-item paths. Expand a path for its explanation and next check.
What this tool does and why
Before you start
What
Compare JSON or CSV samples and see where a data contract may have changed.
Why
Added, removed, renamed, or differently typed fields can break consumers even when an API response still appears to work.
Your Result and Action update in the tool as you change its inputs.
Model note
This browser-side model explains the inputs you choose. Check an important decision against the real system, brief, or production constraints.
Next
How this tool stays honest
How it works
Compare before and after samples to reveal added or missing fields, type and nullability changes, nested structure drift, and possible renames. Explore the affected paths and the checks a consumer may need, with all parsing and comparison kept in your browser.
Assumptions
The tool runs in your browser and models the information you provide. It does not know facts outside that model.
Limitations
The comparison describes the supplied samples. A sample may not represent every valid record or the full formal data contract, so confirm important findings against the authoritative schema.
Understand Schema Drift Doctor
What this tool helps you understand
Compare before and after samples to reveal added or missing fields, type and nullability changes, nested structure drift, and possible renames. Explore the affected paths and the checks a consumer may need, with all parsing and comparison kept in your browser.
When to use it
When comparing observed JSON shapes across releases.
Try a scenario
Change a price field from a number to a string and compare samples. Review consumer handling before treating the change as compatible.
How to read the result
Read each finding as a diagnostic signal, then confirm it against the contract, system, file, or production context you actually control.
Assumptions and limits
The comparison describes the supplied samples. A sample may not represent every valid record or the full formal data contract, so confirm important findings against the authoritative schema.
Toolooo is part of Khizooology, created byKhizar Imtiaz (khizooo).