Skip to content

A jar of small tools, and no server.

What's in it, why it exists, and the one rule anything new has to meet.

ToolJar is the kind of tool you reach for a dozen times a week and then close again. Nothing in it asks you to sign up, and nothing in it sends your data anywhere.

Why it exists

Most of the utilities a search turns up will happily take whatever you paste and send it off to a server. That's a bad deal when the thing on your clipboard is a production response with someone's personal details in it. None of this work needs a server, so ToolJar doesn't have one — open your network tab and you won't find what you pasted in any request, or go offline entirely and keep using it.

What’s in it

The jar opens with JSON, because that’s what I spend the most time squinting at:

  • Format and minify, with 2-space, 4-space, or tab indentation
  • Validate against the strict RFC 8259 grammar, with the exact line and column
  • Browse a document as a collapsible, searchable tree
  • Get the JSONPath for any value, or resolve a path you already have
  • Compare two documents by structure rather than by line
  • Convert to CSV and back, without a spreadsheet eating your leading zeros
  • See size, nesting depth, and what a document is actually made of

The second shelf is JWTs, because tokens are the other thing I paste into websites I shouldn’t:

  • Decode a token’s header, payload and claims
  • Verify an HS256/384/512 signature with WebCrypto, secret kept in the tab
  • Read iat, nbf and exp as real dates, with a live countdown
  • Generate signed test tokens, and encode or decode Base64URL

More go in as I need them. The rule for anything that gets added is the same: it has to work without a server, and it has to be genuinely better than the first search result for the same job.

About this build

A static React and TypeScript app, built as a personal tool and deliberately kept small. The JSON engine underneath — the parser, formatter, diff, and statistics — is written from scratch with no dependencies, mostly so the error messages could be genuinely useful instead of whatever JSON.parse feels like telling you.

Keyboard shortcuts

Global

  • Show this shortcuts dialogShift?
  • Toggle light / dark themeCtrlShiftL
  • Close dialogsEsc

Formatter & Validator

  • Format JSONCtrlEnter
  • Minify JSONCtrlShiftM
  • Copy outputCtrlShiftC
  • Download output as .jsonCtrlShiftS
  • Clear input and outputCtrlShiftX

Tree Viewer

  • Focus the search box/
  • Expand all nodesCtrlShiftE
  • Collapse all nodesCtrlShiftR

Diff

  • Swap document A and BCtrlShiftS

JSON tools

JSON FormatterPretty-print or minify
JSON ValidatorCheck strict JSON validity
JSON Tree ViewerBrowse JSON as a tree
JSON DiffCompare two documents
JSON Path FinderExplore JSONPath expressions
JSON → CSVFlatten JSON into rows
CSV → JSONTurn rows back into objects

JWT tools

JWT DecoderRead header, payload, claims
JWT VerifierCheck an HMAC signature
JWT Expiry Checkeriat, nbf and exp in local time
JWT GeneratorBuild a signed test token
Base64URL EncoderEncode or decode a segment

Code formatters

SQL FormatterBeautify or minify SQL
HTML FormatterBeautify or minify HTML
CSS FormatterBeautify or minify CSS
JavaScript FormatterBeautify or minify JS
Markdown to HTMLConvert with a live preview

Pages

JSON toolsFormat, validate, compare and convert JSON.
JWT toolsDecode, verify and generate JSON Web Tokens.
Code formattersBeautify and minify SQL, HTML, CSS and JavaScript.
HomePopular tools and categories
All categoriesBrowse tools by category
AboutWhat ToolJar is and why
PrivacyWhat is and is not collected

Theme

Switch to light theme
Switch to dark theme