Free Developer Tools & Utilities
21 in-browser utilities for JSON, regex, CSV, color, encoding and CSS. Everything runs client-side — nothing you paste leaves your device. No sign-up, no install, paste-and-go.
Twenty-one utilities you can open in a tab and use immediately. No accounts, no upload pipeline, no telemetry on the payload — every tool runs entirely in the browser, so a JSON blob, a log fragment, an API response, a CSV from your CRM, or an internal config file never gets shipped to a remote server. That matters when you are pasting things you do not want logged.
The lineup covers the categories you actually reach for during a workday: JSON formatting, validation, and minification; regex testing with named capture groups and flag toggles; colour manipulation across HEX, RGB, HSL and the wider Display-P3 gamut; CSS generators for gradients and layered box-shadow; encoding helpers for base64 and URL components; hash and UUID generation via the Web Crypto API; and text processing for diff, markdown preview, CSV-to-JSON, and ASCII art.
The sharper edges of these tools matter. Regex catastrophic backtracking on inputs like (a+)+$ against a long non-matching string can lock a thread for seconds — the tester surfaces match time so you spot it before it ships. JSON5 with trailing commas and unquoted keys is not strict JSON; the formatter rejects it with a precise offset. encodeURI and encodeURIComponent behave differently on reserved characters like ?, &, = and / — get them wrong and your URL silently corrupts. CSV files exported from Excel often start with a UTF-8 BOM (EF BB BF) that turns the first column header into name; the converter strips it. sRGB versus Display-P3 matters when you target newer phones — the colour tools show both gamuts so you do not commit a value that clips. Use them like you'd use a scratch buffer.
encodeURIComponent and base64. Handy for fixing query strings and inspecting Authorization headers.crypto.randomUUID() for cryptographically strong v4 output.gimsuy), and per-test execution time so you can spot catastrophic backtracking early.background-image output.box-shadow values.<link> tags. Upload an image or compose from emoji.crypto.getRandomValues().Questions developers actually ask
Real answers to the kind of edge cases that bite you on a Friday afternoon deploy.
. metacharacter does not match newline characters by default. You have two options. The cleaner one is the s flag (dotAll), which makes . match every character including \n — supported in all modern engines. The portable alternative is [\s\S], a character class that matches any character at all and works in older environments. Use s when you control the runtime; use [\s\S] when you need to support legacy targets like older Node versions or constrained worker contexts.encodeURI is for whole URLs and intentionally leaves reserved characters alone — :, /, ?, #, &, = all pass through unencoded because they have structural meaning in a URL. encodeURIComponent encodes those reserved characters too because it expects a single component (a query parameter value, a path segment) where ? or & would corrupt the structure. Rule of thumb: if you're building a query string by concatenating ?key= + value, use encodeURIComponent on the value. Use encodeURI only for an already-structured URL you want to make safe.EF BB BF) that Excel and some Windows tools prepend to UTF-8 files. Naive CSV parsers read those bytes as the start of the first header, so you end up with name instead of name and your downstream code can't find the column. The fix is to strip the BOM before parsing: read the first three bytes, drop them if they match EF BB BF, and continue. The CSV-to-JSON converter does this automatically, but if you're rolling your own, it's the first thing to check when "the column is right there but my code says undefined".color(display-p3 r g b). If your brand colours include saturated reds or greens, mocking them in P3 is worth it — but always provide an sRGB fallback for older monitors and Windows machines without colour management.(a+)+, (a|a)*, (.*)* — applied to a long string that almost matches but ultimately doesn't. The engine retries every combination of subdivisions and time grows exponentially with input length. Two practical defences. First: time your matches against worst-case inputs; if a 100-character string takes more than a few milliseconds, something's wrong. The Regex Tester reports execution time for exactly this reason. Second: rewrite with possessive groups, atomic groups, or by anchoring the pattern so it can't backtrack. If you can switch engines, RE2 (used by Go and available as a JS port) guarantees linear time at the cost of dropping backreferences.JSON.parse rejects. It's convenient for human-edited config (think Babel or webpack configs), but it's not interoperable. If you ship JSON5 to a service expecting JSON, the parse will fail. The JSON Formatter on this site is strict by design — that's what catches the trailing comma you didn't notice. If you specifically need JSON5 parsing, do the conversion in your build step rather than relying on the wire format.crypto.getRandomValues() and maps them into the chosen character class without modulo bias. UUID v4 uses crypto.randomUUID() when available (which is itself defined to use a CSPRNG), with a getRandomValues fallback for older targets. Neither uses Math.random(), which is not suitable for anything security-relevant. The generated values are safe for production use cases like API keys, session tokens, and database row IDs.