.customer.profile or .employees[*].nameEach feature below has a "Try it" button that loads a sample into the relevant tab so you can see exactly how it works. Pick the format you want using the dropdown in the header, then come back here to try the examples.
The first tab takes raw text and parses it. Auto-fix repairs common mistakes — missing commas, single quotes, trailing commas, unquoted keys, smart quotes, tabs in YAML, BOM, and more. Once parsed you can view the data as an interactive tree, a table, formatted, or raw — and download in any format (JSON, CSV, XLSX, HTML, PDF, TXT).
Paste or upload a CSV, TSV, or Excel file. Smart auto-detect picks the right shape — array of objects, single object, keyed, columns, or nested (using dot-notation headers like customer.profile.name). Cells containing JSON strings are auto-expanded into real nested arrays/objects. Multi-sheet Excel workbooks let you pick which sheet to load.
Paste a document and get a key-by-key breakdown showing each field's type, length, and example values. Click any key in the breakdown to jump to its location in the source text. Use the Find bar to find keys instantly across deeply nested structures — partial matches, paths, and non-contiguous parts all work. Use the Query bar to extract specific values with JSONPath syntax.
The Convert tab takes your input in the active format and produces it in another. Auto-fix runs on the input so even messy data converts cleanly. The "Use output as input" button chains conversions — convert JSON to YAML, then immediately convert the YAML back, for example.
Drop a PDF containing one or more JSON blocks. Every embedded JSON (objects and arrays, even those spanning multiple pages) is detected automatically. When 2+ are found, a document dropdown appears so you can switch between them. Labels come from headings above each block or from identifying fields like name / id / transaction_id.
PDF upload uses the file picker on the first tab — drop a real PDF there to try this feature.
In the Explain tab, the Find bar finds keys instantly. Type partial names like email, full paths like customer.profile.contacts, or non-contiguous parts like items sku. Press Enter to jump between matches; Esc to clear. The Query bar accepts JSONPath syntax — try .employees[*].name to get all employee names at once.
The Schema tab gives you three tools in one. Generate infers a Draft-07 JSON Schema from sample data — useful when you want to document an API response or validate future inputs. Validate checks a document against a schema and lists every error with its path. Mock produces 1, 10, 100, or 1000 realistic fake records matching a schema — great for seeding databases or testing UIs.
The Diff tab does a deep structural comparison. Paste your "before" and "after" documents and click Compare — every added, removed, and changed path is highlighted. Switch between Side-by-side, Unified, and Changed paths only views. Toggle Ignore array order when you care that items exist, not their position.
REST endpoints for parsing, converting, and analyzing JSON/YAML documents. Use them from any language that can make HTTPS requests.
These toggles affect this browser only. Settings persist via localStorage. Other users see defaults unless they enter the code too.
All changes save automatically. Settings are stored in localStorage under the key jsonpi.devSettings and apply only to this browser. Anyone else visiting the site sees defaults.
For real site-wide control (settings that affect every visitor), a backend with a database would be required.
⚠ The developer code is enforced client-side only. Anyone with browser DevTools can bypass this gate. Treat it as a convenience gate, not a security boundary.
A future API layer will appear here. (Not built yet — placeholder.)
GET /api/parse · POST /api/convert · POST /api/explain
All contact form submissions, newest first. Requires an admin token to fetch from the database.
To view contact submissions, paste the admin token. This token is stored as a Netlify environment variable and is checked server-side.