The debugging toolkit
This is the broadest category on the site, and most of what's in it exists for one situation: you have a blob of data or code in front of you, something about it is wrong, and you need to see it clearly before you can fix it.
Format first
Formatting is usually the first move. A minified JSON response or a single-line SQL query is technically complete and practically unreadable, and a great many bugs become obvious the moment the structure is visible — a value nested one level deeper than expected, an array where an object should be, a join condition that isn't what you thought.
Formatters also act as validators. If a document won't format, it won't parse, and the error position tells you where the malformed part is. For JSON that's usually a trailing comma or an unescaped quote — errors that are invisible when everything is on one line.
Then compare
When something works in one environment and fails in another, a diff is the fastest route to the answer. A structural JSON diff is more useful than a text diff here, because it ignores key ordering and whitespace and reports only genuine differences in the data.
Then test the assumption
Regex testing and cron parsing both exist because the syntax is write-once, debug-forever. A regex that looks correct routinely matches more or less than intended, and the only reliable check is running it against real examples, including the ones that should not match. Cron has the same property, and a misread field means a job firing every minute instead of once a month.
Hashes and identifiers
Hashing tools verify integrity: computing a checksum tells you whether a file matches what it should be. Note that MD5 and SHA-1 are broken for security purposes and remain fine as non-adversarial checksums — use SHA-256 or better for anything where someone might try to fool you.
Type generation
Generating TypeScript interfaces from a sample JSON payload turns an undocumented
API response into checked types in one step. Treat the result as a first draft:
it can only describe the sample it saw, so optional fields absent from your
example will be typed as required, and a field that's null in the
sample can't be inferred properly.
Everything stays in your browser
All of these run locally in JavaScript — no uploads, no logging. That's the reason to use them on production payloads, tokens, and real query output rather than a server-side equivalent.