Developer tools
Developer utilities split by what you have in your hands. A blob you cannot read means base64 or URL decoding. Something unreadable means the JSON formatter. Two versions of one file means the diff checker. Everything here runs in your browser and needs no account.
Tools
-
JSON formatter that cites the RFC section for each rewrite
Format or minify JSON, see the RFC section behind any lossy rewrite, and find errors by line and column.
-
Developer tool chain
Chain base64, URL, JSON and SHA-256 steps on one paste, and see each step's output.
-
Diff checker
Compare two versions of text or JSON side by side and highlight changes by line, word or character.
-
Base64 encoder, decoder, and JWT viewer
Encode and decode base64, and read a JWT's header and payload as JSON without checking its signature.
-
URL encoder
URL-encode text three ways at once, or decode it, and learn when a space is %20 or a plus.
-
UUID generator
Generate up to 1,000 v4 or v7 UUIDs, or paste one to read its version and any v7 timestamp.
-
Hash generator
Hash text or files with MD5 or SHA-256 and more, make an HMAC, and check it against an expected checksum.
-
Password generator
Create a random password that fits your rules, and see its strength in bits and what your restrictions cost.
-
Passphrase generator
Build a passphrase from a 2,048-word list you can download, with 11 bits per word and a crack-time estimate.
-
Password strength checker
Check how easy a password is to guess, and how strong it'd be if a generator had made it.
Guides
-
Is it safe to paste JSON online?
Answers whether it's safe to paste JSON online, with a thirty-second network tab test you can run on any formatter.
-
Are online password generators safe
Gives two quick checks for whether an online password generator makes your password in your browser or on a server.
Start from what you are holding
Every tool here answers one question, and the fastest way to the right one is to describe what is on your clipboard rather than to guess a tool name. Before any update goes live, an automated check types into every tool and blocks the update if what it typed turns up in a request.
You have JSON and you cannot read it
That is the JSON formatter. It indents, it validates, and when the parse fails it tells you the line and the column and prints that line back to you. This formatter names the line and the column. A JavaScript engine throw is a byte offset into a document that might be forty thousand characters long. "Unexpected token at position 21847" is a puzzle. "Line 812, column 5" is an answer.
Formats and validates JSON, and sorts top-level keys. Two responses from the same API often serialize their keys in different orders, so a diff of them reads as a rewrite when one field changed.
You have a string of characters that is obviously not text
Base64 or percent-encoding, and it is usually obvious which. A run of letters and
digits ending in one or two equals signs is
base64. A string full of %20 and
%2F is percent-encoded.
Both pages handle the details that usually send people to a second tool. The base64 page accepts the URL-safe alphabet a JWT uses, adds missing padding, and lets you pick the character encoding. The URL encoder shows all three encodings side by side, so a space that should be + rather than %20 is visible before it corrupts a value.
You have two versions of something and you need to know what moved
The diff checker. It compares two blocks of text side by side at line, word or character granularity. Unchanged stretches can collapse, Jump to next change walks the regions, and when the table would be longer than 200 rows it says so rather than quietly dropping the middle.
For JSON it can sort keys on both sides first so a reordered payload stops reading as a hundred changed lines. That saves you sorting both sides by hand.
You need an identifier or a checksum
The UUID generator makes version 4 or time-ordered version 7 UUIDs in bulk from the browser's cryptographic random source, and shows which bits of the result are actually random. Six of the 128 are fixed by the standard: the version and variant fields. Version 7 also encodes a millisecond timestamp in the first 48 bits. A generator that hands you thirty-two random hex characters with hyphens in the right places has given you something that passes most regular expressions and fails a strict parser.
The hash generator hashes text or a local file into MD5, SHA-1, SHA-256, SHA-384 and SHA-512 at once, each with a sentence about what it is still fit for, and can create a keyed HMAC. Files stay in this tab; none of these is a password hash.
You need a password or a passphrase
The password generator prints the entropy of what it produced and what each restriction costs, with the arithmetic named. The passphrase generator publishes its wordlist size and the bits per word. The password strength checker estimates the other direction, for something you already have.
Generating a secret in a web page is a reasonable thing to be uneasy about, and the honest answer is that you should not take our word for it. Open a network tab, generate a password, and check that no request carries it. That is a thirty-second check and it is worth more than any assurance on this page. Is it safe to use an online password generator is that check written out, including what to do when the answer is no.
You need three of these in a row
That is the tool chain: several of these tools in sequence on a single paste, still in your browser. The real workflow is almost never one tool: it is decode this base64, then format the JSON that came out, then hash one field of it. Doing that as three separate pastes is slower and usually means three round trips through somebody's server.
Which of these will actually be the best tool you can find
Two of them, maybe three, and it is worth saying which so the rest of this page is worth reading.
The tool chain. Chaining is not new: GCHQ's CyberChef has chained operations in the browser for years, across a far larger set than this. What matters is that every step here runs in the tab. A chain that runs on a server has to upload the intermediate result at every stage, which is slower and shares far more of your data than any single tool would.
The JSON formatter, on the specific question of working once the page has loaded. Its error reporting is better than most, and the fact that what you paste never goes into a request is enforced rather than claimed, which is the part we can prove.
The entropy pages, on honesty rather than features. A strength meter that shows a colored bar is telling you nothing you can check. Printing the bits, the alphabet size and the guess rate that produced every figure is not clever, it is just a decision most of the category has declined to make.
Everything else here is a competent version of a tool that already has a good version somewhere. Use ours if it is closer to hand. That is a real reason, and it is the only one we will claim.
What "runs in your browser" means here, precisely
It means the page loads, and after that the tool does its work with the network off. No upload, no round trip, no queue. You can test that in about thirty seconds: open your browser's network tab, paste something in, use the tool, and check that no request carries what you pasted.
Every release is checked by an automated test. Before any update to these tools goes live, that check types into every box and presses every button, and blocks the update if what it typed turns up in a request. It also loads each page a second time at a URL that already carries tool state, the way a shared link arrives, and fails if anything reads that state and sends it onward. That second check exists because it is the failure an analytics script would introduce, silently, on a site where every other rule was still being obeyed.
This is not a novel idea and we did not invent it. Toolcroft publishes the same guarantee: their about page says continuous-integration tests verify the privacy promise on every change to the site, and that a change introducing an unexpected outbound request fails the build. It is the right bar and we would rather meet it than write a better sentence about privacy.
Two consequences worth knowing, because they are the cost of the design. Nothing is
saved unless you explicitly turn saving on, so refreshing loses your work. And share
links carry their payload in the part of the URL after the #, which
browsers never transmit, so a link works for whoever you send it to without the
contents ever passing through us. The full mechanism is written up in
how we build tools.
Where the formulas and the standards come from
Every tool here that implements a specification names it, in the source and on the page: RFC 8259 for JSON, RFC 4648 for both base64 alphabets, RFC 3986 for percent-encoding, RFC 9562 for UUID versions 4 and 7, and FIPS 180-4 for the SHA family. Entropy is computed as the base-two logarithm of the search space, which is what entropy means for a secret drawn at random. That framing is ours to defend rather than a standard we can point at: NIST SP 800-63B-4 appendix A is informative rather than normative, and it argues against entropy as a measure of passwords a person invented. Which is why the strength checker reports two numbers instead of one.
That is not decoration. A tool that agrees with another tool is unremarkable; a tool that disagrees is only useful if you can find out why. Naming the rule means the disagreement is resolvable instead of being a matter of which site you trust.
What these tools do not do
Three tools can open a file from your computer, and they read it in the tab; nothing is uploaded. Nothing here is a linter, a schema validator or a formatter for anything other than JSON. If you need YAML, XML, SQL or a language formatter, this is the wrong page and there is no point sending you round the site to find that out.
None of these tools is a substitute for the ones in your editor, either. If you have a JSON file open in an editor that already formats it, use that. These exist for the moment when what you have is a blob in a chat message, a log line or a support ticket, and the alternative is pasting it into whichever site is first in the results.
Questions
Which developer tool do I need?
Start from what's on your clipboard. JSON you can't read goes in the JSON formatter. A string ending in = signs is probably base64, and one full of %20 is URL-encoded. Two versions of a file go in the diff checker. For a checksum, use the hash generator. For an ID, use the UUID generator.
Which password tool should I use?
For a password your manager will fill in, use the password generator. It draws every character at random and starts at 20 characters. For one you'll type or remember, the passphrase generator picks random words worth 11 bits each. To rate one you already have, try the password strength checker with a variation, not the real thing.
Do these tools work offline?
Yes, once the page has loaded. Open a tool, let it load, then switch off your network, and it keeps working, because the work happens in your browser tab. A page you haven't opened yet won't load without a connection. The site doesn't install anything for offline use. How we build tools has the details.
Is anything I paste uploaded?
No. Every tool here does its work in your browser tab. Files you open in the JSON formatter, hash generator or diff checker are read there too. Before any update to one of these tools goes live, an automated check types into every box and presses every button, and blocks the update if what it typed turns up in a request. Share links carry your input after the # in the address. Browsers don't send that part to any server.
Can I run several tools on one paste?
Yes, in the tool chain. Pick from thirteen steps, such as Base64 decode, Format JSON and SHA-256, and add them in the order you want. Each step's output shows in its own panel. If a step fails, the chain stops there and tells you which one.
Other tools you might want
Building the front end too? The color tools check every color pair in a palette against WCAG contrast, suggest the nearest passing shade for a color that fails, show which colors blur together under color blindness, and export a palette as CSS variables.