Developer tool chain
Every step happens in this tab, so a three-step pipeline sends nothing anywhere. CyberChef made chaining famous and does far more of it, also in your browser. What is different here is that every step's output stays on screen in its own panel, with a note on what that step did, so you can see exactly where a value changed.
Build a pipeline
That share link could not be read. Nothing was restored.
Steps, in order
- No steps yet. Add one above and the result appears as you go.
What each step produced
Paste text, JSON, base64, or a URL, then add a step.
- Steps
- ·
- Output bytes
- ·
- Stopped on a failed step
- ·
- Network requests
- ·
- Our own script
- ·
Was this tool useful?
What is different about chaining here
The share link carries the chain and your input in the part of the URL after the
#. Browsers never send a fragment, so opening that link does not put your paste
on a server, including ours. A query string would.
Here the whole pipeline is a series of function calls on one string in one tab. Adding a step just runs one more function on that string and sends nothing, so once the page has loaded, the chain keeps working with the network off.
The three chains worth knowing
Read a JWT payload
Take the middle segment of the token, add Base64 decode, then Format JSON. Two steps, and the claims are readable. Pasting a whole token into a decoder site is one of the more common ways a credential ends up in somebody else's logs, and it is worth doing this one locally on principle.
Here it is on a sample segment: eyJzdWIiOiJ1c2VyLTQyIiwicm9sZSI6ImVkaXRvciIsImV4cCI6MTc2NzIyNTYwMH0.
The Base64 decode panel shows {"sub":"user-42","role":"editor","exp":1767225600} and reports that
it read 67 Base64 characters, 0 of them padding, and decoded them to 50 bytes. The Format JSON
panel prints the same three members over 5 lines with 2-space indentation and says the value
came back unchanged. The exp claim is a Unix time in seconds: 1767225600 is midnight UTC on
January 1, 2026.
A caveat the tool cannot enforce: a JWT payload is base64url encoded and unpadded, so a strict decoder rejects it. Ours accepts it, which is described on the base64 page. Decoding a token does not verify it, either. Reading the claims tells you what it says, not whether the signature is genuine.
Compare a payload against a checksum
Sort JSON keys, then SHA-256. Sort JSON keys sorts the top-level keys and prints the result as compact JSON with no spaces, so two copies of an object that differ only in spacing or in the order of their top-level keys produce the same digest. It does not reorder keys inside nested objects. {"b":{"y":1,"x":2},"a":1} and {"a":1,"b":{"x":2,"y":1}} hold the same data, but the inner keys keep their written order, so the digests differ: one starts 55b65323, the other 966ca4f1. Adding Format JSON before the sort changes nothing, because the sort step replaces its layout. Use this chain when the two copies differ only at the top level. If parsing would rewrite a number or drop a duplicate key, that step still produces the rewritten document and says so beside the panel; SHA-256 then hashes those visible bytes, not the original paste.
Clean up a pasted list
Trim every line, then Sort lines, then Unique lines. Copying a column out of a spreadsheet or a terminal picks up trailing spaces that make otherwise identical entries look different, so trimming has to come first. The order of the steps is the whole trick.
When a step fails
The chain stops at the failing step and says which one and why. Everything above it
already ran and its output is still shown; nothing below it ran at all. Downstream
panels read upstream step failed rather than inventing an answer from
the last good value.
That is usually the fastest way to find the real problem. A five-step pipeline that fails at step four tells you that steps one to three were fine, which narrows things considerably compared with a single error at the end.
The formula and standard behind each step
Eight of the thirteen steps name a specification beside the panel. Base64 follows
RFC 4648, including the URL-safe alphabet in section 5 when - or
_ is in the input. Percent-encoding follows the WHATWG URL Standard
component set; a literal + on decode stays a plus, the RFC 3986 reading.
JSON follows RFC 8259. SHA-256 comes from the browser's own SubtleCrypto
implementation of FIPS 180-4, not from a copy of the algorithm shipped in this page.
The other five steps name their behavior instead, in a different style, because no
specification governs them.
Each step follows the same rules as its own tool page, so a value is decoded, sorted or hashed the same way here and there. Layout can differ: Sort JSON keys here prints compact JSON, while the JSON formatter's Sort keys prints it indented, so hash the chain's output rather than a copy taken from the formatter.
Questions
What steps can it chain?
Thirteen. Base64 decode and encode, URL decode and encode, Format JSON, Minify JSON, Sort JSON keys and SHA-256, plus Lowercase, Uppercase, Trim every line, Sort lines and Unique lines. Paste once, add steps in order, and each step's output appears in its own panel, in the same order. If a step fails, the chain stops there and says which one.
Is it an alternative to CyberChef?
For everyday jobs, it can be. CyberChef has far more operations, and like this page it runs in your browser. This page is smaller on purpose: thirteen steps, each one's output shown in its own panel, and nothing kept between visits.
Does anything get sent between steps?
No. Each step is a function running in this tab on text in memory. Open a network tab and build a five-step chain: no request carries your text.
Can I share a whole pipeline with someone?
Yes. The share link carries your text and the list of steps after the # in the address, and browsers don't send that part to a server. Want to share only the steps? Clear the input first, and the other person pastes their own text.
Can I reorder the steps?
Yes. Drag a step, or use Move up and Move down. Order matters. Trim every line before Unique lines and entries that differ only by trailing spaces merge. Run them the other way and both copies stay.
Related tools
Each step also has a page of its own, with the detail this one skips: base64, URL encoding, the JSON formatter and the hash generator. If what you actually want is to compare two results rather than transform one, use the diff checker.