Payload Workbench

A browser-local workbench for formatting JSON, converting between JSON and YAML, and encoding or decoding Base64. Paste a payload, pick a transform, and get deterministic output — with explicit errors that tell you exactly where a payload is malformed.

Private by default: your payload is processed entirely in this tab. It is never sent to a server, never logged, and never stored. This page makes no network requests with your data.

Workbench

JSON transforms need valid JSON. YAML transforms accept YAML 1.2 core scalars, lists, and mappings. Base64 decode expects UTF-8 text.

Paste JSON, YAML, or Base64 text. Input size is limited only by this tab's memory.

Ready. Paste a payload and choose a transform.

When do you need to format or convert a payload?

JSON, YAML, and Base64 show up in almost every developer workflow — usually in a form that is awkward to read or that another tool refuses to accept. Four situations come up most often:

A worked example, step by step

Suppose an API returns this single-line JSON, and you need to read it, convert it for a YAML-based tool, and prove nothing was lost:

{"user":{"id":42,"name":"Aisha","roles":["admin","editor"],"active":true},"meta":{"source":"api","retries":0}}

One line, 110 characters — valid JSON, but the nesting is invisible.
  1. Paste it and choose Format JSON. The output is a 15-line document with two-space indentation: user and meta become readable top-level keys, and roles becomes a clear two-item list.
  2. Choose Convert JSON to YAML. The same data becomes an 11-line YAML document — the shape Docker Compose and CI files use, with user:, meta:, and list items indented consistently.
  3. Choose Convert YAML to JSON. The result is byte-for-byte identical to the Step 1 output — the round trip loses nothing.
  4. Try a Base64 round trip. Encoding hello world gives aGVsbG8gd29ybGQ=; decoding it returns the original text exactly.

Every step is deterministic: the same input always produces the same output, with no timestamps, randomness, or reordering — and a malformed payload fails with an explicit line and column instead of a generic message.

How it works

Each transform is a small, deterministic function:

Identical input always produces identical output — there is no randomness, no timestamps, and no network in the pipeline.

Supported inputs and limits

This prototype intentionally does not validate JSON Schema, decode JWTs, or transform CSV. Those are candidates for future versions.

Frequently asked questions

Does my payload leave my computer?

No. The page is a static bundle of JavaScript; the transform functions run in your browser tab and the page contains no code that sends your input anywhere.

Why does YAML output sometimes quote my strings?

YAML quotes values when they would otherwise be misinterpreted (for example strings that look like numbers, booleans, or contain special characters). The quoting is deterministic and safe to paste back into YAML files.

Can I convert YAML with comments?

Comments are stripped, because JSON cannot represent them. Use the JSON-to-YAML direction if you want a YAML document that keeps structure intact.

Why does Base64 decoding reject my input?

Either the text contains characters outside the base64 alphabet, or the decoded bytes are not valid UTF-8. If you are decoding binary data, it cannot be shown as text — the error message tells you which case you hit.

Does formatting or converting change my data?

No. Formatting and minifying only re-serialize the parsed values with different whitespace, and a JSON → YAML → JSON round trip returns the identical document. The transforms are deterministic: the same input always produces the same output, with no timestamps, randomness, or reordering.

Why is there no JWT decoder or JSON Schema validator?

This prototype intentionally covers JSON formatting and validation, JSON ⇄ YAML conversion, and Base64. Decoding JWTs and validating against JSON Schema are on the roadmap but not implemented yet — the page will not pretend to do them.

Part of Local Toolworks. Last reviewed: 2026-08-16. When to use · Worked example · Privacy & limitations · FAQ