Advanced JSON Auto Fill Generator

Fill a JSON skeleton with sample data in your browser. Values are chosen from your key names, and your key order, big integers and literals come back unchanged.

100% Browser-Based • Local Processing
Your JSON
Filled 0 B

Waiting for JSON Blanks 0 Filled 0 Depth 0

Lines to check1 problem

    Privacy Focused

    🔒 Local Processing. Your code never leaves your device.

    Instant Results

    🌐 Fully Client-Side. Runs instantly in your browser.

    No Signup

    ⚡ No accounts. No API keys. Just open and use.

    Browser Based

    🚀 No installs, no CLI, no build step.

    How to Use the Smart JSON Populator

    Paste a JSON skeleton and every empty string and null gets a sample value chosen from its key: names, emails, UUIDs, ISO timestamps, numbers. Your keys, their order and every literal you already had come back unchanged. It runs in your browser, and nothing is uploaded.

    A mock payload is easiest to build from the shape you already have. Paste the response your endpoint will return, blanks and all, and each key decides what belongs in it — email an address, createdAt a timestamp, isActive a boolean, price a number with two decimals. Keys that match no rule get Value 1, Value 2 and on. Those are the fields that still want a human, and they are meant to stand out.

    What the tool will not do is rewrite the rest of your document. A 19-digit account id keeps all 19 digits, 1.10 keeps its trailing zero, 1e3 stays in exponent form, and two members with the same key both survive. Fillers that parse to JavaScript values and print them back cannot manage any of that: the id rounds, the zero disappears, and a key called "2" moves to the front of the object. This one fills the blanks in place and copies every other literal across as text.

    Two modes. Blanks only is the default and touches empty strings and nulls; Every value replaces what is already there, for a fixture that has gone stale. Either way the work happens in the page — no upload, no account, no request — and it keeps going with the network switched off, which is what makes an internal schema safe to paste into it.

    How to fill JSON with sample data

    Paste your JSON structure

    Type into the left pane, paste over it, or drop a .json file onto it. The file is read in the page. Your document is checked on every keystroke, so a missing comma shows up where you made it: the status line reads the line and the column, and the row under the tool repeats the message. Click that row and the caret jumps to the line.

    A document that parses gets a count instead — how many blanks are sitting in it, nested ones included.

    The tool with a comma missing between a name line and an email line in the left pane. The status line reads Line 5, column 5. Missing comma between values, a panel headed Lines to check repeats it as Line 5, col 5 against 1 problem, and the right pane reads Fix the JSON on the left and the filled copy appears here.
    The syntax check runs as you type, and names the line and the column rather than printing the browser's own message.
    Choose the fill mode

    Two modes, both named on the control. Blanks only touches empty strings and nulls and leaves every other value exactly as it is. Every value replaces all of them, which is what you want when an old fixture needs fresh data. The button carries the count, so what you are about to change is visible before you press it: Fill 11 blanks, or Fill every value (14).

    An empty array or an empty object stays empty in both modes. Nothing here invents a shape you did not write.

    The tool in Every value mode. The left pane holds a quantity of 12 point 5, an isReady of false and a note of hello. The right pane holds a quantity of 689 point 40, an isReady of true and a note of Sample text for testing, and the status line reads Filled 3 values, your keys, their order and every type are unchanged.
    In Every value mode a number is replaced by a number and a boolean by a boolean. The old tool wrote the string "Value 1" over both.
    Generate the sample data

    The key picks the value and the existing type picks its shape. firstName gets a first name, email an address at example.com, candidate_id a UUID, createdAt an ISO 8601 timestamp, age a number between 18 and 79, isActive true or false, price a number with two decimals. Keys are split into words first — camelCase, snake_case and kebab-case all — so width is read as a width rather than as something with an id buried in it.

    A null takes the type its key suggests, so "age": null comes back as a number. An "" stays a string, because you wrote the quotes. Keys that match no rule get Value 1, Value 2 and on, which makes the fields still needing a human easy to find.

    Names and domains are made up. Every address lands on example.com, example.org or example.net, which RFC 2606 reserves for exactly this.

    Review the populated JSON

    The right pane holds the filled document, highlighted, with its size in the header. It is printed fresh at two-space indent, and that reprint is the only thing about your document that changes. Every literal you did not ask to fill is copied across as text: a 19-digit id keeps all 19 digits, 1.10 keeps its trailing zero, 1e3 stays 1e3.

    Key order is document order. A key called "2" stays where you put it, which a round trip through JavaScript would not do — integer-like keys jump to the front of the object. Duplicate keys survive too, and the panel under the tool says which line the first one was on.

    The tool with a document holding an accountId of 9007199254740993, a total of 24 point 10 and a weightGrams of 1e3 on the left, and the same three values character for character on the right. The two blanks beside them are filled: customer reads Priya Costa and orderedAt reads 2026-08-10T14:09:49Z, and the status line reads Filled 2 blanks, everything else is exactly as you pasted it.
    The three literals a JSON.parse round trip rewrites, unchanged on the way out. Only the two blanks were touched.
    Copy the result

    Copy puts the filled document on the clipboard. Download writes it to filled.json. Regenerate makes a different set of values for the same document, and Clear generated turns every Value N back into an empty string, so the fields the tool could not infer are ready to fill by hand.

    On a phone the two panes become tabs and the buttons are full-height targets.

    The tool on a phone. A Fill 11 blanks button sits above two tabs, Your JSON and Filled, with Filled open on a document reading accountId 9007199254740993, a candidate_id UUID, firstName Sven, email dev.kofi96 at example.org, age 75, a createdAt timestamp and isActive false.
    On a phone the panes become tabs, and Download and Copy stay in the pane header.

    Need a hand?

    Still have questions?

    If you can't find the answer you're looking for, feel free to contact our support team.

    Contact Us

    Frequently Asked Questions

    How do I fill JSON with sample data?

    Paste your JSON structure — a skeleton with empty strings and nulls, or a partly-filled object — and the tool populates the blanks with context-aware sample data, guessed from your key names and value types. Your keys and nesting stay intact. Review the result and copy the filled, valid JSON. Everything happens in your browser; nothing is uploaded.

    Does this upload my JSON, and does it work offline?

    No upload, and yes it works offline. All generation happens in your browser using JavaScript — there's no server receiving your structure, no logging, and no tracking. Once the page has loaded it keeps working with no internet connection, which you can confirm in your browser's network tab. Your JSON, even a proprietary schema, never leaves your device.

    What does it fill in — empty and null values?

    By default, yes — it targets empty strings and null values, leaving anything you have already filled untouched. That lets you paste a mostly-complete object and only top up the blanks. It walks the whole structure, including nested objects and arrays, so empties buried deep inside get filled too. An empty array or an empty object is left alone, because inventing a shape for it would be changing your structure.

    The button counts them before you press it. If you want every value replaced instead, switch the control to Every value.

    What does "Every value" mode do?

    Every value regenerates every value in the structure, not just the empty or null ones — so values you typed in get replaced too. It is useful when you want a fresh mock from an existing example, or to reshuffle placeholder data that has gone stale. Types are kept: a number is replaced by a number, a boolean by a boolean, a string by a string.

    The trade-off is that it discards your existing values. Use the default Blanks only mode when you need to preserve what is already there.

    How does context-aware data generation work?

    The tool reads each key as words and pairs that with the existing value type. email gets an address at example.com, firstName a first name, candidate_id a UUID, createdAt an ISO 8601 timestamp, age a number between 18 and 79, price a number with two decimals, and isActive a boolean. Splitting into words is what keeps width a width: a rule that tested for the letters id anywhere in the key would call it an identifier.

    Keys that match no rule get Value 1, Value 2 and on, so the fields the tool could not infer are the ones you can see at a glance.

    Is the generated data real?

    No — it's mock/placeholder data, created for testing, prototyping, and demos. Names, emails, and dates are made up to look plausible; they don't correspond to real people or records, and you shouldn't treat them as accurate or use them as production data. That's exactly what you want for filling a UI or a test fixture — realistic-looking values without touching anyone's real information.

    Will it change my keys or structure?

    No. Fill JSON only touches values — it never renames keys, adds or removes fields, or reshapes your nesting. Key order is your document order, including a key like "2" that a round trip through JavaScript would move to the front of the object. Duplicate keys both survive, with a note under the tool saying which line the first one was on.

    Literals you did not ask to fill are copied across as text, so a 19-digit id keeps all 19 digits, 1.10 keeps its trailing zero and 1e3 stays 1e3. The one thing that does change is layout: the filled copy is printed at two-space indent.

    Can I use it for mock API responses and testing?

    Yes — that's a primary use. Paste the shape of an API response and fill it to get a realistic mock you can wire into a front-end, a test, or a demo before the real endpoint exists. Because it preserves your structure and outputs valid JSON, the result behaves like the real payload for development purposes. Just remember the values are placeholders, not real data.

    What data types does it generate?

    Strings, numbers, booleans and date-like strings, plus filled entries inside arrays and nested objects. The type you already had is kept, so a numeric field gets a number and a text field gets text.

    A blank is the one case where there is a type to decide. null carries no type, so it takes the one its key suggests — "age": null comes back as a number. "" is a string blank and stays a string, because you wrote the quotes.

    Does it always output valid JSON?

    Yes. Your input is parsed by the same scanner the JSON Validator uses, the blanks are filled in the parsed tree, and the tree is printed back — so what you copy is well-formed by construction. Generated strings are quoted and escaped on the way in, which is why a name with an apostrophe or a path with a backslash cannot break the document.

    If your input is not valid JSON to begin with, the tool says so on the keystroke that broke it, with the line and the column. Fix that first; there is nothing to fill until it parses.

    Can it handle nested objects and arrays?

    Yes. It walks the entire structure, so empty or null values inside nested objects and inside array items are filled too, not just top-level fields. Arrays of objects — a common API shape — get each object's blanks populated, and an item in an array takes its name from the key the array itself sits under. Deeply nested structures work the same way.

    The nesting is preserved exactly, and values are supplied only where they are needed, or everywhere in Every value mode.

    Is it free, and are there limits?

    Yes, completely free — no payment, no signup, no account, and no usage caps or watermarks. Since everything runs in your browser, there's nothing for us to meter; the only practical limit is your device's performance on very large structures. Use it as much as you like, including offline once the page has loaded.

    Still have questions?

    If you can't find the answer you're looking for, feel free to contact our support team.

    Contact Us