Release notes
What changed in each release, in plain terms. Every version runs entirely in your browser.
v0.16.2 — 2026-09-14
The Base64 tool and the JSON editor now hand work to each other, and the Base64 site explains — in checkable terms — what it does with your data.
- Decode Base64 to JSON, then open it straight in the editor. When the Base64 tool decodes something that turns out to be JSON, it offers to open that result here. Your document is carried across without ever being put in a web address, so a decoded API token or key is not left sitting in your history, your bookmarks, or a link you might paste to someone. If you were part-way through editing when you arrive, that work is saved first rather than discarded.
- A link back to the Base64 tool from the editor, so the two are reachable in both directions.
- A privacy page for the Base64 tool at /base64/privacy.html that states what the page can and cannot do rather than promising good behaviour — including how to verify each claim yourself in your browser's developer tools, in a few seconds.
- The Base64 tool cannot make network requests at all, and now says so precisely. Relaxing that restriction in future requires a dated, written exception in the same file — a build check enforces it, so it cannot be loosened quietly.
v0.16.1 — 2026-09-09
A second tool joins the site.
- Base64 Tool Kits is live at /base64/. Encode and decode Base64 in the browser — standard or URL-safe, with padding, line wrapping and per-line modes, 41 character sets, and errors that name the offending character and its position instead of just failing. Like everything else here it runs entirely in your tab: its security policy forbids network requests outright, so there is nowhere for your data to go.
- Internal: the service worker no longer claims
/base64/, so the two tools cache independently. No change to how the JSON editor behaves.
v0.16.0 — 2026-09-09
Graph mode gets the look it should always have had, and stops making you convert your data by hand before you can see it.
- The graph sits on graph paper now. A fine grid backs the canvas — 20px minor lines with a heavier one every 100px — so panning and zooming give you a sense of distance instead of drifting through empty space. It follows your light/dark/system theme like everything else, and it deliberately does not appear in exported or copied images: graph paper baked behind a diagram you paste into a document is noise you cannot remove.
- Paste YAML, XML, TOML, JWT or CSV into graph mode and it converts itself. Previously you had to convert to JSON elsewhere, then come back. Now the paste is recognised and converted, with a note telling you what it did, and a single undo puts your original text back exactly as it was. Valid JSON is never touched, and text that starts like broken JSON is treated as broken JSON rather than guessed at as something else. There is also a format selector in the graph toolbar for when you want to state the format yourself.
- Choose the filename and background when you export the graph as an image. The export dialog now lets you name the file and pick a background colour, including fully transparent for PNG and SVG. JPEG has no transparency, so it uses white and the dialog says so rather than silently producing a black rectangle.
- Scrolling over the graph can pan instead of zoom. A new preference switches the mouse wheel between zooming and panning, for anyone whose trackpad made the old behaviour feel like a fight. Ctrl and pinch still zoom either way.
- Fixed: a monospace font that never loaded on Macs. The font stack asked for “SF Mono” with a space, which is not what that typeface is actually registered as, so Mac users silently fell through to a worse fallback everywhere in the app. It now asks for the font the system really has, and prefers whatever your OS considers its best monospace face.
- The default editor font size is now 12. It was 14. If you have already set your own size in Settings, yours is kept — this only changes the starting point for someone opening the app fresh.
v0.15.0 — 2026-09-03
The graph becomes something you can interrogate, not just look at — click any node to inspect it — and the two image buttons in the graph toolbar both work properly for the first time.
- Click any node in the graph to inspect it. Selecting a card opens the details panel showing that node's own fields as formatted JSON, along with its JSON Path — and you can copy either one. Child containers are deliberately left out, so you see the node you clicked rather than everything beneath it. Until now the graph was read-only scenery; the only clickable thing on a card was its collapse arrow.
- Fixed: exporting the graph as PNG or JPEG now works. On the live site both raster formats failed — you clicked export, nothing downloaded, and you got a message suggesting SVG instead. This had been broken since the feature shipped, for every user, and it is now fixed. SVG export was never affected and is unchanged.
- Copy the graph as an image. The Copy as image button in the graph toolbar has sat there greyed out, labelled “not built yet”, since it was first added. It now copies the graph to your clipboard as a real image, ready to paste into a document or a chat. If your browser refuses clipboard access, it tells you so rather than doing nothing.
- The JSON graph visualizer page now links to the dedicated graph tool at /jsongraph, instead of the general editor.
- Fixed: zooming in on the graph no longer makes the connecting lines disappear. Introduced in v0.14.0 alongside the graph restyle — an over-eager rule for deciding which edges were off-screen could drop lines that were still visible, so zooming in to read a card left it apparently unconnected to anything. Edges are now judged on their own geometry. Very wide documents still lay out and fit exactly as before.
v0.14.1 — 2026-08-31
A fix for the graph opening too small to read on larger documents.
- Fixed: the graph now opens at a readable size. On a large document it was zooming out far enough to fit the whole diagram on screen, which left the text too small to read — the bigger your document, the worse it got. It now opens at a legible zoom, centred on the top of your document, and you can still press the fit button in the graph toolbar whenever you want the zoomed-out overview. Smaller documents that already fitted comfortably are unchanged.
v0.14.0 — 2026-08-30
The graph gets its own page, a new look, and full control over which way it flows.
- A dedicated graph page at /jsongraph — one document, the editor on the left and the diagram on the right, with nothing else in the way. The two-panel editor at the home page is unchanged; this is simply a focused place to go when the graph is what you came for.
- The graph looks considerably better. Keys, text, numbers, booleans and nulls each get their own colour, cards are cleaner, and edges now have arrowheads so the direction of nesting reads at a glance. Both light and dark themes were designed and contrast-checked rather than one being an afterthought — every value in every theme meets the WCAG AA contrast standard for small text.
- The graph can flow in any of four directions — right, down, left, or up — from the rotate button in the graph toolbar. It now opens flowing rightward by default, which suits most documents better than the old top-down default, and it remembers the direction you chose instead of resetting every time you come back. The button also tells you which way the graph is currently flowing, which the old one never did.
v0.13.0 — 2026-08-20
JSONPath joins the query languages, the tree explains more about what a value means, and CLI redaction gets more precise. Plus two real fixes: a deeply nested document no longer breaks queries, and generated types for a few languages no longer silently overflow on a very large number.
- JSONPath — a third query language, alongside JMESPath and jq, in the same Transform dialog you already know. If you arrived knowing JSONPath from another tool, you can use it here directly instead of learning a new syntax.
- The tree now tells you what some values mean — a timestamp becomes a real date, a byte count becomes "2.3 MB", a UUID or ULID is labelled as one (and a ULID's embedded timestamp is shown too). The real value is always still there and still what gets copied; this is an annotation beside it, and it turns off with one checkbox in Settings if you'd rather not see it. It only shows up when the app is genuinely confident — a bare number never gets guessed at just because it looks date-shaped.
- Type generation now covers seven languages, not three — Python, Java, C#, and Kotlin join TypeScript, Go, and Rust. Each is also its own page: JSON to Python, JSON to Java, JSON to C#, JSON to Kotlin.
- CLI redaction can now target specific findings —
jwv secrets redact --write --only <id> redacts just the findings you name, or --except <id> redacts everything but those. Useful when a scan turns up a real secret alongside something that only looks like one.
- Fixed: a deeply nested document no longer breaks Transform. Past roughly a thousand levels of nesting, running any query — in any of the three languages — could show a confusing error or simply never finish. Neither happens anymore.
- Fixed: a very large integer no longer silently overflows in generated Java, C#, or Kotlin types. A number bigger than a 64-bit integer can hold now generates as a proper big-integer type in those three languages, instead of quietly generating a type too small to hold it.
v0.12.0 — 2026-08-17
A correctness and safety release. Two ways a large document could freeze the tab are gone, an undo bug that could swallow your own typing is fixed, and the secret scanner now works from the command line.
- Scanning a large capture no longer freezes the tab. A single large response body — an embedded image, say — could take minutes to scan, with no sign anything was happening. Two separate causes, both fixed: a 385 KB body that took over two minutes now takes about a twentieth of a second, and a document containing many truncated key blocks that took 42 seconds now takes a fraction of one.
- Undo no longer takes more than you asked for. If you formatted, compacted, repaired or redacted a document within about half a second of typing, a single Ctrl+Z could undo your typing as well as the action. That included the "Undo this repair" button on the automatic repair notice, which is the one place the app changes your document without being asked. Every whole-document action is now its own separate undo step.
- Find secrets from the command line —
jwv secrets scan reports what it found and writes nothing; jwv secrets redact --write prints a redacted copy to standard output, leaving your original file untouched. Reported values are always masked, so a report is safe to paste into a ticket or leave in a CI log. The AI assistant integration can read a document for secrets but deliberately cannot rewrite one.
- The secret scanner is also more thorough than it was: a fix to how it reads web addresses means keys sitting next to an email address in a URL are now found, where before they could be missed.
v0.11.0 — 2026-08-14
The privacy release. Find the secrets hiding in a document — or in a network capture — and replace them with stand-ins that keep the document readable.
- Find secrets and personal data in a document — API keys, JWTs, private keys, card numbers, emails, phone numbers and more, matched by shape rather than by a fixed field list. Findings are shown to you; nothing is changed without your say-so.
- Redact without destroying the document — this is the part most tools get wrong. Blanking every value to
[REDACTED] makes a document safe and useless: you can no longer tell that records 3, 17 and 200 belonged to the same customer, which is usually the thing you were debugging. Here, the same value becomes the same stand-in everywhere it appears, so relationships survive while the real values do not. An email becomes a plausible email, a card number a plausible card number. Dates all shift by one offset, so the intervals between them stay exact. You review every finding and can keep any of them before anything is applied.
- HAR mode — open, browse and compare network captures — load a
.har file from your browser's DevTools and read it as a sortable, filterable list of requests, with headers, cookies, query strings and JSON bodies laid out properly instead of as one wall of text. Two captures can be diffed against each other to see what changed between them.
- Make a network capture safe to send — vendors routinely ask for a HAR file when you file a support ticket, and a HAR is full of your own credentials. Chrome already strips a couple of well-known headers; nothing strips the tokens sitting in JSON bodies, query strings, or oddly named fields. This scans all of it, shows you what it found grouped by request, and exports a sanitised copy that still opens in Chrome DevTools and other HAR tools. The same token stays consistent across every request, so whoever you send it to can still follow a session through the capture. It also writes you a plain-text summary of exactly what changed, to paste into the ticket. It is detection-based and says so plainly — review the list before you send anything.
- Column view — browse deep documents one level per column, drilling left to right, instead of scrolling a deeply indented tree.
- A security page that shows its work — what the app does and does not do with your data, written so you can verify each claim yourself rather than take our word for it.
- Honest comparisons with other JSON tools — how this app compares to JSON Editor Online, JSON Crack and json.site, including the places where they are genuinely better than us.
- A page for JSON Join — running SQL joins across multiple JSON documents now has a page explaining what it does, including the ~34 MB engine download it needs.
- Selecting a node in the inspector now survives switching to another view and back — a rough edge in v0.10.0's new inspector.
v0.10.0 — 2026-08-14
The release that answers a question the tools could not answer before: not "what is this value?" but "is this value normal?"
- See how a field varies across every record — select a field inside an array of records and the inspector now shows that field across all of them: how many distinct values it takes, which records hold a different type, which are explicitly
null, and which are missing the field entirely. Those three are counted separately, because they are three different bugs. Click any of them to jump straight to the record. Finding the one broken record in a 500-record API response used to mean writing a query; now it is on screen.
- A node inspector — a drawer in tree mode showing the selected node's path, its type, and its JSON subtree, with its own copy button. Available from the panel's overflow menu. It follows your selection in tree mode; in the other modes it says plainly that nothing is selected rather than showing you something stale.
- Generate a schema for one node, not the whole document — right-click any node and generate a JSON Schema for just that subtree. The result is labelled with the path it came from, so a schema for one nested object can never be mistaken for a schema for the whole response. Whole-document schema generation is unchanged.
- Every value now carries a type icon — strings, numbers, booleans,
null, objects and arrays each get their own glyph in tree and table rows. Type was previously conveyed by colour alone, which is invisible to anyone who cannot distinguish the colours. The null icon is the one that matters most: null, empty, and missing used to look alike at a glance.
- Graph cards are labelled and collapsible — each card in graph mode now carries a header naming what it is, and rows can be collapsed to shrink a card you have finished with.
- Smaller pages — build-time comments are now stripped from the shipped HTML. The homepage dropped from roughly 49 kB to 35 kB, without changing anything you can see.
- A new for teams page, for organisations whose policies rule out pasting internal data into any external website. Nothing is built or priced yet — the page exists to find out whether it should be.
v0.9.0 — 2026-08-10
The release that brings JSON Join onto this site, teaches the command-line tool and the MCP server to explain JWT claims, and makes the mode switcher readable by screen readers.
- JSON Join now lives at jsonwebviewer.com/jsonjoin/ — run SQL joins across multiple JSON documents, entirely in your browser, on the same site as the rest of the tools rather than at a separate address.
- The
jwv command-line tool and the MCP server now explain JWT claims — the same plain-English descriptions of what each standard claim means, and whether a token is expired, that the app has shown since v0.7.0. The CLI's existing output is completely unchanged; the explanations are opt-in behind a new --explain flag, so scripts that already parse its output keep working. The MCP server includes them automatically, as structured data an AI assistant can read directly.
- The mode switcher now tells screen readers when Types mode is active — it had stayed silent about it, so there was no way to tell by ear which mode you were in. Sighted users get a fix too: the "Types" label was being drawn on screen in every mode, and now appears only when it is actually true.
- Two more landing pages — a JSON tree viewer page and a JSON graph visualizer page. These are new pages, not new features: the tree view has been in the app since v0.2.0 and graph mode since v0.4.0. Each now has a page of its own to arrive on and read about it.
- Corrected FAQ answers on several tool pages — a handful of answers now match what the tools actually do. The clearest one: converting to Excel also flattens nested fields such as an address into their own columns, which the JSON to Excel FAQ had not been saying.
v0.8.2 — 2026-08-10
The release that fixes this very page: production had been quietly running newer code than its own footer and release notes claimed, for two versions in a row, and this closes the gap for good rather than patching the symptom again.
- The version you see is now the version that's running — the footer's version number and this page's newest entry are both checked against a single source of truth before every deploy, and the deploy is blocked if they disagree. This was hand-typed in three separate places before; it won't drift silently again.
- Cleaned up
sitemap.xml and llms.txt — a Google Search Console ownership-verification file (not a real page) had been listed in both as if it were one, since v0.8.1. Removed; the count of real pages listed is unaffected, since a real new page (the jq playground) landed in the same window.
v0.8.1 — 2026-08-10
The release that turns on real search-visibility measurement — no new feature, just making the site findable.
- Google Search Console verification — the site is now verified with Google, the first step toward showing up in search results and eventually measuring real traffic.
v0.8.0 — 2026-08-10
The release that adds jq — the query language most people actually know — alongside the existing one.
- Real jq, in the browser — the Transform modal now offers jq 1.8.2 as a second query language next to JMESPath. This is the genuine jq, compiled to WebAssembly, not a partial reimplementation: programs that work in your terminal work here, and error messages are jq's own. A long-running program can still be cancelled.
- The jq engine downloads only the first time you actually use jq, so it costs nothing if you never touch it.
- The no-code query wizard stays JMESPath-only for now, and says so plainly when jq is selected rather than generating something it can't.
v0.7.0 — 2026-08-10
The release that makes the new design the default for everyone, and adds a single page listing every tool in one place.
- The new design is now the default — the control system, segmented mode switcher, icon set, and branded header that were opt-in under Settings in v0.6.0 are simply the design now. The "New design (preview)" checkbox is gone.
- All tools in one place — a new tools directory lists every converter, viewer, and generator, grouped by what you're trying to do, and is linked from the footer of every page.
- JWT claims explained in plain English — decoding a token now describes what each standard claim means, converts timestamps to readable dates, tells you whether a token is expired and by how much, and warns explicitly when a token is unsigned.
- Keyboard fix across every menu — pressing Escape in any dropdown now returns focus to the button you opened it from, instead of dropping you to the top of the page. Screen readers are also now told which view mode is active.
- Five more landing pages — JSON to TypeScript, JSON Schema generator, JSON to YAML, CSV to JSON, and NDJSON viewer.
- Better link previews — sharing any page now shows a proper preview card.
v0.6.0 — 2026-08-10
The release that split the app into a real package (a jwv command-line tool and an MCP server for AI-assistant integration), added JSON Patch generate/apply and Excel/NDJSON support, and opened five more landing pages — while deliberately leaving jq and the finalized new design for a later release.
- jwv CLI — command-line access to format/validate/repair/diff/schema/type-generation/convert/JWT-decode/share-link operations.
- MCP server — lets AI coding assistants call this app's JSON operations directly as tools.
- JSON Patch generate and apply (RFC 6902) — diff two documents into a patch, or apply a patch to the current document.
- Excel (.xlsx) export and NDJSON import/export — two more structured-data formats, alongside the existing CSV/YAML/XML/TOML support.
- Copy path as… — copy a selected node's path as jq, JSONPath, JavaScript, or JSON Pointer notation.
- Generate mock data from a JSON Schema.
- A new design, in preview — a new control system, segmented mode switcher, and branded header, available now under Settings → "New design (preview)." Not the default yet.
- Five more landing pages for individual conversion tasks (JSON formatter, JSON to CSV, JWT decoder, JSON diff, JSON to Excel).
v0.5.0 — 2026-08-07
The release that made undo/redo trustworthy everywhere, closed out menu keyboard navigation and a toolbar/UI consistency pass, and gave the query language a no-code wizard and real cancellation.
- Transform wizard — a no-code builder for the query language, plus real query cancellation: a stuck query can now actually be stopped.
- Open from URL — load a JSON document directly from a public URL over a direct, CORS-enabled fetch.
- Large-document performance — Format/Validate/Compact/Smart-format now run off the main thread, so big documents no longer freeze the tab while the app works on them.
- Inline nested-cell expansion in table mode — a nested cell expands in place, recursively, instead of opening a popup.
- Full keyboard navigation across every menu — arrow keys, Home/End, and type-ahead now work everywhere in the app, including the tree's own right-click menu.
- A reorganized toolbar and more consistent modal/dropdown keyboard behaviour across the app.
- Colour-coded toast notifications — errors, warnings, and success messages are now visually distinct.
- Fixed: text-mode redo (Ctrl+Shift+Z), an auto-repair notice that could outlive a cleared document, table mode's missing Ctrl+Z, two flat-key collisions affecting sort and table mode, duplicate-key precision loss, and a mobile layout bug.
v0.4.0 — 2026-08-05
The release that made it a spreadsheet query tool and a schema validator, and finally gave graph mode room to fail safely instead of freezing the tab.
- Graph mode — a full node-link view of any document, with pan/zoom/fit/center and export to PNG/JPEG/SVG.
- Query language — JMESPath queries over the current document.
- Search across modes, with match counts and next/previous navigation.
- Sort modal — sort arrays and objects by field, with a single-undo-step guarantee.
- Table mode nested values, CSV import with a nested-object option, and CSV export with a flatten preview.
- Schema validation — validate a document against a JSON Schema.
- This release notes page, replacing a static FAQ that had gone stale.
v0.3.0 — 2026-08-03
The release that made it a spreadsheet, a diff tool, and a code generator, not just an editor.
- Table mode — an array of objects renders as a spreadsheet: sortable columns, click-to-edit cells, cut/copy/paste, row insert/delete, and a nested-value popup for anything that isn't a flat field.
- Compare — a side-by-side diff between the two panels, with added/changed/removed highlighting and next/previous navigation.
- Type generation — turn a JSON document into TypeScript, Go, or Rust type definitions in one click.
- Share links — send a document as a URL; nothing ever touches a server.
- Settings — font size, indentation, max line length, and escaping behaviour.
- Keyboard shortcuts reference, cross-panel copy actions, and a document properties panel.
v0.2.0 — 2026-08-01
The release that made it a real editor rather than a formatter.
- Tree mode — collapsible nodes, type-aware colouring, keyboard navigation, and inline editing.
- Breadcrumb path bar and search across text and tree mode.
- Smart format and one-click auto-repair for common JSON mistakes.
- Multi-format import/export — YAML, XML, TOML.
- JSON Schema generation, DeepParse, and JWT decode.
- Autosave, recent documents, and theming (light/dark/system, accent colours).
v0.1.0 — 2026-08-01
First production baseline: the two-panel editor, syntax-highlighted text mode, format/compact, live validation with click-to-jump errors, undo/redo, and open/save from disk.