DevFormatLab
← Back to blog

JSON Formatter Hidden Features You Probably Missed

By DevFormatLab Editorial·6 min read
JSONProductivityHidden featuresTools

Most users open the JSON Formatter, paste, copy, leave. There are six features on the same page that quietly make debugging faster, and each one has a use case where it earns its keep within the first minute. None require setup or configuration; they are all visible once you know to look.

1. Hover any time-shaped key to read the date

Hold the mouse over the value of any key that reads like a timestamp — createdAt, updatedAt, timestamp, created_at, expire-at, anything that ends with Date, time, _at, -at, or DateTs — and a tooltip appears showing the human-readable date and the ISO-8601 form. If the number is ambiguous between epoch seconds and epoch milliseconds, the tool tries both interpretations and shows the latest sensible date. The feature lights up only on plain numeric values; ISO-8601 strings and RFC 2822 strings render through Intl.DateTimeFormat regardless of key name.

Use it when: you're staring at a 10,000-line webhook payload and trying to find the most recent record. The hover tooltip skips the "open a separate tab, paste into the timestamp tool" dance.

2. Per-node copy and delete in the tree view

Hover any row in the tree view and two buttons appear on the right: copy and (for non-root rows) delete. Copy sends the subtree (the row plus everything beneath it) to the clipboard as a JSON literal; delete removes that subtree from the in-memory document. The change is in-memory; if the result is wrong, Apply-to-input can roll you back, or just paste fresh input.

The copy action is "copy the smallest meaningful JSON" — a single object, a single array element, a primitive. Useful when you want to share one record out of a 50-record array with a colleague, or pull a configuration block out of a giant payload to put in a unit test fixture. The delete action is "mask this part" — useful when you're preparing a redacted version of a payload for sharing in a bug report.

3. Path-aware search with autocomplete

The tree view has a search box at the top that accepts paths like root.user.email, root.users[3].name, root.items[*].price. End the query with a slash and a dropdown of valid next-segment choices appears; pick one and continue. The matched row highlights in the tree, and the value renders next to the search bar — including an inline time tooltip if the value is epoch-shaped.

Wildcard [*] expands across every array element; the result is a list of values indexed by array position. Use it when: you have a JSON path you've been copy-pasting from a Stack Overflow answer and you want to know whether the field exists in this payload.

4. Local history with restore and per-entry delete

Every successful format operation auto-saves the input to localStorage under json-formatter:history, capped at 20 entries and 200 KB each. Click any chip in the history strip to restore; hover and click the red × on a chip to remove that single entry; click Clear all to wipe. Inputs larger than 200 KB are not cached — an amber banner at the top of the strip explains why when it happens.

Use it when: you've been iterating on a config for the last ten minutes and want to find the version that worked five minutes ago. The history is browser-local; nothing syncs anywhere.

5. JSON Patch export from the diff tool

The JSON Diff tool (separate page) has a structural view that lists every changed, added, and removed path in the comparison. Right next to it is an RFC 6902 JSON Patch view — a machine-readable list of operations that would transform the original into the modified. The "Export patch" button at the top downloads the patch as patch.json.

Use it when: you need to explain to a downstream service, in a format its software can apply, exactly what changed. RFC 6902 is supported by jsonpatch in Python, fast-json-patch in Node.js, and JsonPatch.Net in .NET, so the patch file becomes input to a wide range of automation.

6. Apply-to-input after formatting

The toolbar has an "Apply" button (or Ctrl/Cmd+B). When you click it, the formatted output on the right becomes the new input on the left. This is the round-trip control. Use it to verify that a "pretty-print" round-trip is exactly byte-identical to a re-parsed + re-serialised version, or to convert a minified payload into its indented form for further editing.

Apply is also the safety net for delete-in-tree-view: if you delete too much, Apply commits the change to the input, and the next Apply reverses it.

Closing

Six features, six situations. None of them are hidden — they are all in the toolbar or tree header — but they get overlooked when users only paste-and-copy. Try the time-thing hover first; it pays for itself within ten lines.

Related Tools