Last month I was debugging an API response that returned a 500 error, and the only clue was a chunk of minified JSON buried in the browser console. I copied it, pasted it into the first JSON formatter that showed up on Google, hit "format," and immediately got hit with a pop-up demanding I create an account before I could see my own data. My data. The API response from my own server. I closed the tab and decided right then that I'd had enough.

That wasn't an isolated incident. Over the past three years working as a web developer, I've wasted embarrassing amounts of time on tools that force you to create accounts, accept cookies for fourteen different trackers, watch a five-second interstitial ad before you can even see your output, or flat-out upload your code to their server for "processing." For a minifier. Something that JavaScript can do in 40 milliseconds locally. The whole thing is ridiculous when you think about it.

So we built six tools that do exactly what you need and nothing else. No accounts, no uploads, no data leaving your browser. I'm going to walk through each one — what it does, how it works, and the situations where I've found it genuinely useful. Some of these get used daily in my workflow. Others I reach for maybe once a week. But all of them have saved me from that specific kind of frustration where you just need one quick thing done and the internet refuses to cooperate.

HTML/CSS/JS Minifier: Shrink Your Code for Production

Tool #1

Code Minification for the Web

If there's one tool I use more than any other on this list, it's the minifier. Every single time I push code to production, I run my HTML, CSS, and JavaScript through it. The savings aren't dramatic on small files — maybe 15-20% — but on larger codebases they add up fast. I've seen a 340 KB JavaScript bundle get knocked down to about 215 KB after minification, which on a slow 3G connection translates to roughly a one-second faster page load. That matters more than people think.

Here's how it works: the minifier parses your code using a JavaScript-based AST (Abstract Syntax Tree) parser, identifies everything that can be safely removed — comments, whitespace, unnecessary semicolons, line breaks — and then reconstructs the code without any of it. For JavaScript, it can also shorten variable names and simplify certain expressions. For CSS, it collapses overlapping rules and removes redundant declarations. For HTML, it strips comments, collapses whitespace between tags, and removes optional attributes like type="text/javascript" on script tags.

One thing I want to be clear about: this is not a bundler. It's not Webpack, it's not Rollup, and it's not esbuild. If you're working on a large React project with complex module dependencies, you should use a proper build tool. Our minifier is designed for the other 80% of situations — formatting a quick landing page, minifying a WordPress theme's custom CSS, compressing a standalone JavaScript widget that you're embedding in someone else's site, or prepping a small project for production when setting up an entire build pipeline feels like overkill.

The typical savings you can expect vary by language. CSS usually compresses the most because it tends to have the most whitespace and comments relative to actual code. HTML compresses the least since the markup structure itself is already fairly compact. JavaScript sits somewhere in the middle, and the savings depend heavily on your coding style — if you write clean, well-commented code (which you should), the minifier has more to work with.

What makes it actually useful in daily work:

  • Paste and go — drop in your code, click one button, copy the result. No config files, no npm install, no build step setup. It just works
  • Language auto-detection — you don't have to tell it whether you're pasting HTML, CSS, or JavaScript. It figures that out from the content itself and applies the right minification rules
  • Size comparison — after minification, it shows you the original size, the minified size, and the percentage reduction. That last number is oddly satisfying to look at
  • Safe output — it won't break your code. The parser respects string literals, template literals, and regular expressions, so it won't accidentally mangle something inside a quoted string

JSON Formatter & Validator: Stop Staring at Walls of Text

Tool #2

JSON Formatting and Error Detection

I honestly can't count the number of hours I've spent staring at unformatted JSON, trying to figure out where a missing comma went wrong. A single trailing comma somewhere deep in a 200-line configuration file can take twenty minutes to track down by hand. That's the exact problem this tool was built to solve, and it does it faster than anything else I've tried.

When you paste your JSON into the formatter, it runs through a full validation pass first. If the JSON is valid, it gets pretty-printed with proper indentation (2 spaces by default, but you can switch to 4 spaces or tabs). If there's an error, it tells you exactly where — line number, character position, and a plain-English description of what went wrong. "Missing comma after property on line 47" or "Unexpected token } at position 892." That kind of specificity saves you from the worst part of debugging JSON, which is just not knowing where to start looking.

The validator catches all the common mistakes that trip people up. Trailing commas (which are valid in JavaScript objects but not in strict JSON). Unquoted property keys. Single quotes instead of double quotes. Comments, which technically aren't allowed in JSON even though many parsers accept them. Control characters hiding in string values. And mismatched brackets or braces, which are surprisingly easy to introduce when you're hand-editing a large config file at 11 PM.

There's also a tree view mode that lets you collapse and expand nested objects, which I've found really useful for exploring large API responses. Instead of scrolling through 500 lines of formatted JSON looking for one specific field, you can collapse everything except the branch you care about. It's a small feature but it saves real time when you're working with complex data structures.

Pro tip: if you're working with an API that returns minified JSON and you need to debug a specific field, paste the response into the formatter, switch to tree view, and collapse everything except the path you're investigating. Beats scrolling endlessly.

Key features developers actually care about:

  • Instant validation — paste your JSON and you immediately know if it's valid or broken, with exact error locations
  • Configurable indentation — 2 spaces, 4 spaces, or tabs. Matches whatever your team's style guide demands
  • Tree view — collapse and expand nested objects for easier navigation of large JSON structures
  • Copy to clipboard — one click copies the formatted or minified output, ready to paste wherever you need it
  • No character limit — I've tested it with JSON files over 2 MB and it handles them fine, since processing happens locally on your machine

Base64 Encoder/Decoder: When You Need Text Where Only Text Can Go

Tool #3

Base64 Encoding and Decoding

Base64 is one of those things you don't think about until you need it, and then you need it badly. I ran into this last year when I was building an email template that needed to include a small logo image directly in the HTML. External image URLs get blocked by most email clients, so the only option was to inline the image as a Base64-encoded data URI. The problem was, I had no quick way to convert my PNG file into a Base64 string without either writing a Node script or uploading the image to some random website.

That's exactly the scenario this tool handles. You paste in text or upload a file, and it spits out the Base64-encoded version. For decoding, you paste in a Base64 string and get the original content back. The whole process takes under a second, and nothing leaves your browser — which matters when you're encoding sensitive content like authentication tokens or API keys that happen to use Base64 format.

The technical details: Base64 works by taking binary data and representing it using a 64-character alphabet (A-Z, a-z, 0-9, +, /). Every three bytes of input become four characters of output, which means the encoded string is always about 33% larger than the original. That's why you shouldn't Base64-encode large files for web performance — the size increase defeats the purpose. But for small images in email templates, inline SVGs, data URIs in CSS, or encoding binary data for transmission over text-based protocols, Base64 is exactly the right tool for the job.

I also use the decoder surprisingly often when debugging. Sometimes an API returns a field that's Base64-encoded and I need to see what's actually inside. Instead of writing a one-off Python script or opening a terminal, I just paste it into the browser tool and get the decoded result instantly. It's one of those tools that doesn't seem important until you need it, and then you're glad it's there.

The most common use cases I've run into:

  • Email templates — embedding small images as data URIs so they display correctly in Gmail, Outlook, and Apple Mail
  • API debugging — decoding Base64 fields in API responses to see the actual data
  • Authentication tokens — decoding JWT tokens (the payload section is Base64-encoded JSON) to inspect claims
  • Data URIs — creating inline images or fonts for single-file HTML pages or CSS
  • Binary data in JSON — encoding file contents or binary payloads for transport in JSON APIs

URL Encoder/Decoder: Making URLs Safe for Transit

Tool #4

URL Percent-Encoding and Decoding

URL encoding is one of those fundamentals that every web developer understands in theory but still manages to trip up in practice. The basic idea is simple: certain characters — spaces, ampersands, question marks, non-ASCII characters, basically anything that isn't a letter, number, or one of the safe URL characters — need to be converted into percent-encoded format before they can be safely included in a URL. A space becomes %20. An ampersand becomes %26. An emoji becomes %F0%9F%98%80 (or longer, depending on the character).

Where this actually matters in day-to-day development: query string parameters. If you're constructing a URL with search terms, user names, or any user-generated content, you need to encode those values before appending them to the URL. Forget to encode a space in a search query and the URL breaks. Forget to encode an ampersand and it gets interpreted as a parameter separator, silently corrupting your data. These are real bugs that make it to production more often than developers like to admit.

The encoder handles both full URL encoding and component encoding. The difference matters more than you'd think. Full URL encoding preserves the structure of the URL — the protocol, domain, path, and query string delimiters — while only encoding the values. Component encoding encodes everything, which you need when you're encoding a single value that will be inserted into a larger URL. Getting this wrong is a common source of double-encoding bugs, where something like %20 gets encoded again into %2520, and suddenly your URLs are a mess.

The decoder side is just as useful. When you're debugging a web application and you see a URL full of percent-encoded characters in the network tab, being able to quickly decode it back to readable text makes the debugging process way faster. I probably use the decoder two or three times a week for this exact reason, and it's always faster than trying to mentally parse %E2%9C%93 back into a checkmark.

Where developers run into encoding issues most:

  • Query parameters with user input — search terms, names with special characters, international text that needs to be URL-safe
  • API endpoint construction — building URLs with path parameters or query strings that contain reserved characters
  • Debugging network requests — decoding URLs from browser DevTools or server logs to understand what's actually being sent
  • OAuth and authentication flows — callback URLs, redirect URIs, and state parameters that contain encoded data
  • SEO and canonical URLs — ensuring special characters in page titles and slugs are properly encoded

Color Picker & Converter: Because Hex and RGB Still Don't Play Nice

Tool #5

Color Selection and Format Conversion

Every frontend developer has been in this situation: a designer hands you a Figma file with colors specified in HSL, the brand guidelines document lists everything in HEX, and the CSS framework you're using expects RGB. You end up opening three different tools just to convert between formats, and inevitably one of the conversions is slightly off because of rounding differences between tools. This color picker was built to solve that exact workflow headache.

The visual picker itself gives you a full HSV color wheel combined with a brightness/saturation square, which lets you zero in on exactly the shade you want. But the part I use most is the conversion panel — it shows you the same color in HEX, RGB, RGBA, HSL, HSLA, and CMYK simultaneously, and updating any one format instantly updates all the others. So if you type #FF6B35 into the HEX field, you immediately see rgb(255, 107, 53), hsl(21, 100%, 60%), and rgba(255, 107, 53, 1.0). No switching between tools, no rounding errors from converting back and forth.

There's also a contrast checker that I didn't expect to use as much as I do. You enter your text color and background color, and it calculates the WCAG contrast ratio. Anything above 4.5:1 passes for normal text, and anything above 3:1 passes for large text. I've caught a handful of accessibility issues this way — color combinations that looked fine to me but failed contrast requirements for users with color vision deficiencies. It's one of those checks that's easy to skip when you're moving fast, and having it built into the tool means there's really no excuse.

The palette generator is a bonus feature I added after a designer friend complained about spending too much time in dedicated color tools when she just needed a quick complementary palette. It generates harmonious color schemes — complementary, analogous, triadic, and split-complementary — based on whatever color you've selected. Not a replacement for a real design tool, but handy when you're prototyping and need a starting point.

The conversions that matter most to developers:

  • HEX to RGB and back — the most common conversion, needed constantly when moving between CSS and design tools
  • RGB to HSL — useful for creating color variations (lighter/darker) by adjusting the lightness value
  • RGBA transparency — adding alpha values for semi-transparent overlays and backgrounds
  • WCAG contrast checking — verifying that your text and background color combinations meet accessibility standards
  • Color palette generation — quick complementary, analogous, or triadic color schemes for prototyping

Regex Tester: Making Regular Expressions Less Painful

Tool #6

Regular Expression Testing and Debugging

I have a confession: despite writing code every day for the better part of a decade, I still can't write complex regular expressions from scratch without testing them. I know the syntax — character classes, quantifiers, lookaheads, backreferences, all of it — but knowing the syntax and writing a regex that actually works on the first try are two very different things. If you're honest with yourself, you probably can't either. Nobody can.

The regex tester gives you a text area for your test string, an input field for your pattern, and checkboxes for flags (case-insensitive, multiline, global, dotall). As you type your pattern, it highlights every match in the test string in real-time and shows you the captured groups below. No "run" button to click — it updates as you type, which makes the feedback loop fast enough that you can actually iterate on a regex without losing your train of thought.

The feature that makes this genuinely useful rather than just "another regex tester" is the explanation panel. It breaks down your regex pattern into its components and explains what each part does in plain English. The pattern ^(?=.*[A-Z])(?=.*\d)[A-Za-z\d]{8,}$ gets explained as: "start of string, followed by (any characters followed by an uppercase letter), followed by (any characters followed by a digit), followed by 8 or more letters or digits, end of string." For anyone who's stared at a regex they wrote three months ago and thought "what does this even do," that explanation is worth its weight in gold.

I keep the regex tester open in a pinned tab pretty much all the time. Not because I'm constantly writing regex, but because when I do need one, the cost of context-switching to figure it out is high. Having a tool that's already there, already loaded, no account to log into, no page to navigate — it removes just enough friction that writing regex goes from "ugh, fine" to "okay, that wasn't so bad."

The regex patterns developers test most often:

  • Email validation — matching and extracting email addresses from text while avoiding false positives
  • Phone number formats — handling the absurd variety of international phone number formats
  • URL parsing — extracting domains, paths, query parameters, or protocol from URLs
  • Password strength — enforcing complexity rules like minimum length, required character types
  • Data extraction — pulling specific patterns from logs, CSV files, or scraped text
  • String replacement — complex find-and-replace operations that go beyond simple text matching

How to Use Each Tool

All six tools follow the same basic workflow because we deliberately designed them to be predictable. Once you've used one, you know how to use all of them. No learning curve, no hidden settings panels, no "advanced options" that you have to dismiss before you can do anything.

For the Code Minifier: paste your HTML, CSS, or JavaScript into the input area. The tool auto-detects the language. Click "Minify" and copy the compressed output. That's it. If you want to compare the original and minified versions, both are displayed side by side with size statistics.

For the JSON Formatter: paste your JSON (formatted or minified, valid or broken) into the input area. If it's valid, you'll see the pretty-printed version instantly, along with a tree view option. If it's broken, you'll see the exact error location and description. Fix the error, and it re-validates automatically.

For the Base64 Encoder/Decoder: switch between "Encode" and "Decode" mode. Paste your text or Base64 string into the input area, and the converted result appears immediately. For file encoding, drag and drop a file onto the input area instead.

For the URL Encoder/Decoder: paste your URL or query string into the input area. Choose between "Full URL" encoding (preserves URL structure) and "Component" encoding (encodes everything). The result updates in real-time as you type.

For the Color Picker: either use the visual picker to select a color, or type a known value (HEX, RGB, HSL) directly into any of the format fields. All other formats update simultaneously. The contrast checker accepts your text and background colors separately.

For the Regex Tester: type or paste your test string into the text area, then enter your regex pattern in the input field. Select any flags you need. Matches are highlighted in real-time with captured groups displayed below.

Privacy & Browser Processing

This is the part I care about most, and the reason we built these tools in the first place. Every single tool on this page runs entirely in your browser using client-side JavaScript. Your code, your JSON data, your URLs, your text — none of it ever gets sent to our servers, Google's servers, or anyone else's infrastructure. There is no server component to these tools. The processing happens on your CPU, using your memory, in your browser tab.

I know "browser-based" sounds like a marketing claim, so let me be specific about what that means technically. When you paste code into the minifier, a JavaScript function running in your browser parses the AST and reconstructs it. When you format JSON, a validation function checks the syntax in your browser. When you encode Base64, the btoa() and atob() browser APIs handle the conversion. When you test a regex, the JavaScript RegExp engine does the matching. None of these operations involve a network request.

You can verify this yourself. Open your browser's Network tab (DevTools → Network), paste something into any tool, and watch. You won't see any outgoing requests except to load the initial page. No XHR, no fetch calls, no analytics tracking on the tool actions. The only network activity is loading the page itself.

Why does this matter? If you're a developer working on a commercial project, your code might contain proprietary business logic, API keys (even if they shouldn't be in the codebase, they sometimes are), database schemas, or internal URLs. Sending that to a random online tool means trusting that service with your intellectual property. Most developer tools have privacy policies that explicitly say they can log and store input data. Ours can't, because we never receive it.

The quickest way to check if an online dev tool is safe: open the Network tab before using it. If you see POST requests or XHR calls when you click "process," your data is leaving your browser. Our tools show zero network activity after the initial page load.

Real-World Use Cases

These are the situations where I've personally reached for these tools over the past year. Not hypothetical scenarios — actual things that came up during real projects.

Frontend development is the obvious one. I minify CSS and JS before deploying static sites. I format API responses during development to understand the data structure. I convert colors between formats when implementing designs. And I test regex patterns for form validation. That's probably four or five tool uses per day, just in normal frontend work.

Backend debugging is less obvious but equally common. When a backend API returns a 400 error with a cryptic JSON body, I paste that JSON into the formatter to read it. When I'm building URL query strings for API requests, I encode the parameters to make sure special characters don't break anything. When I need to inspect a JWT token, I decode the Base64 payload section to see the claims.

Technical writing and documentation is a use case I didn't anticipate. When writing documentation that includes code examples, JSON payloads, or API endpoints, I frequently need to format, encode, or convert the content. The color picker comes in handy for creating consistent color palettes in design system documentation.

Code review and pair programming — when reviewing someone else's code, I sometimes paste a chunk into the minifier to see how much dead code or unnecessary comments are in there. It's not a thorough analysis, but it gives a quick signal about code quality. And the JSON formatter is indispensable when reviewing API contracts or configuration files.

Feature Tool Xeno Online Alternatives Desktop IDEs
Processing speed Instant (local JS) 1-3 sec (round trip) Instant (built-in)
Privacy 100% local Code uploaded to server 100% local
Cost Free Free / Freemium Free / Paid license
Setup required None None Full IDE install
Offline support Yes (after first load) No Yes
File size limit Limited by device RAM Often capped at 1-5 MB Limited by device RAM

Comparison with Alternatives

Desktop IDEs like VS Code have built-in support for many of these tasks — JSON formatting, regex testing, color picking — through extensions. If you already have VS Code open, those extensions work great. But what about when you're on someone else's machine? Or working from a tablet? Or helping a non-developer debug an API response over a screen share? In those situations, a browser-based tool that requires zero setup is significantly more practical than asking someone to install an IDE and configure extensions.

Online alternatives exist for every tool on this list — you can find dozens of JSON formatters, minifiers, and regex testers with a quick Google search. The difference is in the experience. Many of them are cluttered with ads, require account creation for basic features, or have file size limits that kick in just when you need to process something large. Some of them log your input data for "analytics purposes." We don't do any of that. The tools are clean, fast, and private, and that's the whole value proposition.

Command-line tools like uglifyjs, jq, base64, and grep -P are powerful and I use them regularly in my terminal. But not everyone is comfortable with the command line, and even for experienced developers, the GUI feedback of a visual tool can be faster for quick one-off tasks. The regex tester, for example, shows matches highlighted in context, which is something you don't get from a grep command without additional formatting.

Try All Six Developer Tools
X
Tool Xeno Team
Built by developers who got tired of juggling twelve browser tabs just to format some JSON. Free, private, no strings attached.