Given a JSON Schema, this tool walks its type keywords and produces a value for each: a word for string, a number under 1000 for number/integer, a coin-flip for boolean, a fixed-length array for array, and a recursively-built object for object. That covers the structural shape of a schema completely — but a JSON Schema can say a lot more than just "this is a string," and most of that additional detail isn't read.
Constraints beyond type and enum are ignored
minLength, maxLength, pattern, minimum, maximum, and format (like "email" or "date-time") are all valid, common JSON Schema keywords — and none of them change what this generator produces. A schema requiring { "type": "string", "format": "email" } gets the same plain word ("alpha", "bravo", etc.) as a schema with no format constraint at all. If you're feeding generated data into code that validates against the original schema strictly — checking that a field actually looks like an email, or that a number falls within a declared range — the generated output can fail that validation even though it matches the schema's type. enum is the one constraint beyond bare type that is respected: an enum schema always picks one of the declared values, never a random unrelated string.
Strings come from a fixed pool of eight words
Every string-typed field is filled from the same eight-word list (alpha, bravo, charlie, delta, echo, foxtrot, golf, hotel) — the NATO phonetic alphabet's first eight letters. That's intentional simplicity, not a placeholder for something bigger: this is a schema-shape generator, not a realistic-fake-data generator like a faker library that produces plausible names, emails, and addresses. If you need data that looks like real names or emails for a demo or screenshot, this isn't the right tool; if you need data that's merely the correct shape for a test fixture, the repetition doesn't matter.
Determinism requires you to set the seed yourself
The generator is built on a seeded pseudo-random number generator (mulberry32), which means the same seed always produces the same output — genuinely useful for a reproducible test fixture that doesn't churn on every run. But if no seed is provided, one is derived from the current time, which is different every time you generate. If you need the same output twice — say, to commit a fixture file and regenerate it later to confirm nothing changed — pass an explicit seed rather than relying on the default.
Arrays get a fixed length, not a range
An array-typed field always generates the same number of items (three, by default, configurable per call) regardless of any minItems/maxItems the schema declares. This won't produce the empty-array or single-item edge cases a real API response might occasionally return — if your code needs to be tested against those edge cases specifically, you'll need to construct them by hand rather than relying on the generator to vary array length on its own.
Pairs naturally with the JSON Schema Generator
This tool and the JSON Schema Generator are designed as a two-step workflow: infer a schema from real sample responses there, then generate more data in that exact shape here — no format translation needed between the two, since both speak the same draft-07-flavored schema.