🧬
🩺 Check
LV2 · Toolooo Standard
Explore → See → Understand → ActUnderstand it. Feature Level describes the depth of the tool experience.

Schema Drift Doctor

Compare JSON or CSV samples and see where a data contract may have changed.

DataAPIEngineeringSchemaDebugging
🔒Your tool inputs are processed in your browser and are not uploaded or sent to analytics.

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.

500 KB maximum per sample.
500 KB maximum per sample.
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.

CSV interpretation

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.

Sample comparison · no values are included in the schema view
What happened
6 potentially breaking changes to review
Why
$.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.
Try
Restore the required field or agree a consumer migration before changing the contract.

Schema change summary

Total changes
10
Per path and change category
Potentially breaking
6
Consumer checks needed
Usually non-breaking
4
Assumes tolerant readers
Affected paths
10
1 more need samples
+ Added: 4 Removed: 2~ Changed / required: 4

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

+ Added Removed! Changed / review? Need samples[] combines sampled array items
$.customer_email
Removed
Before
string
After
Not observed
Why & next check
Removed · Potentially breaking

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.

Next check: Confirm whether consumers require this field, then review the producer and consumer migration together.

$.customer_idREQUIRED
Required field removed
Before
number
After
Not observed
Why & next check
Required field removed · Potentially breaking

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.

Next check: Restore the required field or agree a consumer migration before changing the contract.

$.customer_ref
Added / unexpected
Before
Not observed
After
string
Why & next check
Added / unexpected · Usually non-breaking

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.

$.customer.phone
Null now observed
Before
string
After
null
Why & next check
Null now observed · Potentially breaking

After 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_address
Added / unexpected
Before
Not observed
After
string
Why & next check
Added / unexpected · Usually non-breaking

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.

$.items[].price
Type changed
Before
number
Present in 2 of 2 sampled objects
After
string
Present in 2 of 2 sampled objects
Why & next check
Type changed · Potentially breaking

The 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[].quantityREQUIRED
Required field sometimes missing
Before
number
Present in 2 of 2 sampled objects
After
number
Present in 1 of 2 sampled objects
Why & next check
Required field sometimes missing · Potentially breaking

This 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.

$.tags
Added / unexpected
Before
Not observed
After
array
1 of 1 items inspected
Why & next check
Added / unexpected · Usually non-breaking

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.

$.tags[]
Added / unexpected
Before
Not observed
After
string
Why & next check
Added / unexpected · Usually non-breaking

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.

$.total
Type changed
Before
number
After
string
Why & next check
Type changed · Potentially breaking

The 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.