Why a toolbox instead of twelve pages
Encoding is a solved problem, and search results reflect that: a page per encoding, each one a single input box that gives you one answer. What they do not give you is the thing that actually eats time — doing it to forty rows, and then explaining to a colleague (or to CI) exactly how the string was produced.
So this page is deliberately shaped like a batch job rather than a single converter:
- One row per line, one error per row. Paste a column out of a spreadsheet or a log, and every line is converted independently. A line that is not valid Base64 gets its own error message and does not stop the other thirty-nine — and the total is stated up front instead of hiding a failure at the bottom.
- The command line comes with the answer. Every conversion shows its shell equivalent (`base64`, `xxd -p`, `node -e …`) with the exact input already quoted. That is the part generic encoder pages omit, and it is the part you need when the same transformation has to run in a pipeline.
- Strict decoding, no silent repair. If the bytes are not valid UTF-8, the tool says so rather than printing replacement characters and calling it success. The same goes for hex with an odd digit count, a lone “%” in a URL, or an unknown HTML entity.
- The tedious conversions are here too. Binary with or without spaces, hex with or without 0x prefixes and spaces, HTML entities both ways, \uXXXX escapes including surrogate pairs for emoji, ROT13/Caesar, and the naming-style family (camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case) derived from any input spelling.
Everything runs in your tab: nothing is uploaded, there is no share link, and no value you paste ever reaches a server — which matters for the strings people actually want to decode here (tokens, cookies, payload fragments). Two honest limits: “decode” means reversing the encoding, not decrypting anything, and this page deliberately leaves out byte-level work — hashing, HMAC, AES-GCM and TOTP live in the companion crypto toolbox because they need Web Crypto and are asynchronous.