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.
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
Use Schema Drift Doctor when data, api, and engineering work raises questions about schema drift detector, json schema comparison, and data contract changes and you need a concrete view before making the next move.
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).