unstringify for VS Code
The engine behind this site, where VS Code keeps such things: broken JSON fixed with named fixes on the lightbulb and in the Problems panel; CSV, NDJSON and logs read as records through the reading question; conversion into a new editor; comparison by structure in the diff editor; stringified JSON opened in place. Nothing you open is uploaded.
Fourteen days of everything, then Free and Pro
Every install starts a 14-day trial with every feature open. When it ends, the Free set keeps working forever and the Pro set asks for a licence key — a one-time personal licence, three activations, sold through Lemon Squeezy.
Free, forever
- Fix JSON — the fixes named by line in the Refactor Preview; keep the ones you want; undo restores every byte. On a JSON Lines file, each broken record alone
- Quick fixes the three ways VS Code has: ⌘. lists the line’s fix and “Fix all N”, ⇧⌥. applies the line’s fix with no menu, and Fix All applies every fix — on save too, if you write that one setting
- Read as records — the reading question as QuickPick steps: separator · first row · the split decimal for CSV, which measured shape or your regex for a log; then the rows open beside the text
- Convert to YAML · XML · CSV · NDJSON · Markdown table · TypeScript · JSON · minified — and JSON Schema, Zod, Pydantic, Go struct, each in its own language’s editor — from a document, a selection or a rows file, into a new editor
- Copy JSON path, Sort keys, Minify, Generate TypeScript interfaces, Open on unstringify.com (the text travels in the link’s fragment, never to a server)
- Diagnostics on JSON, JSONC and JSON Lines; the status bar reads “Not valid JSON yet · 6 fixable” or “CSV · 1,284 rows”
- Unpack this value — a hover on a string that holds JSON, XML or YAML shows what it holds; its first door opens that one value in place, and undo packs it back
- The MCP server, registered for you — Copilot’s agent mode finds the six tools (fix_json, validate, convert, read_records, unpack, compare) with nothing written to any mcp.json; the server runs on your machine, from npm
Pro
- Unpack all — every packed value in the file, in place or into a new editor, the hover’s door carrying the count; or across the workspace, every file listed with its count and opened in one edit
- Compare by structure with another open document, the clipboard or a file, in VS Code’s own diff editor — keys sorted and whitespace normalised, one record per line for rows
- Filter records with Copilot — your own model through VS Code’s language-model API turns a sentence into filter terms, the engine counts them, and ⏎ opens the matching rows on unstringify.com, in the records view with the Filter bar; too big for a link, they open beside the text instead
- A records view of its own for CSV, TSV, NDJSON and logs — the site’s rows, level chips, Filter bar and record panel as a custom editor beside the text, in your VS Code theme; a row reveals its line in the editor, and Reading… reopens the question
- Coming: Fix across a workspace, one preview
What it looks like
Install
The extension is on the Visual Studio Marketplace and on Open VSX. In VS Code, search the Extensions view for “unstringify”, or use the button; Cursor, Windsurf and VSCodium find it in their own Extensions view through Open VSX. The extension’s own changelog names what each version added.
The Pro licence
A one-time personal licence — $19, three activations, no subscription — bought through Lemon Squeezy, who handle tax and the invoice, and entered once with “unstringify: Pro: enter a licence key”.
Privacy, the same sentence
No telemetry. No document ever leaves the editor on its own. The one network call the extension makes is to the licence service, carrying the key and this machine’s name, and only when you enter, re-check or deactivate a key. The Copilot filter is the exception you choose: when you run it, your sentence with the records’ field names and a few rows go to the model you have in VS Code — to that provider, never to us — and the rows it selects travel to unstringify.com in the link’s fragment, which a browser never sends to a server. The web app’s promise is the same, in full, on the privacy page.