12 tools · client-side · keyboard first
Paste. Transform. Done.
Fast developer utilities that run entirely in your browser. No signup and no uploads: every tool is one fast page, and every one is two keystrokes away.
- No uploads
- No accounts
- Works offline after one visit
// all tools
One payload, four tools, zero round trips.
Scroll to send an illustrative API response through the formatter, the JWT decoder and the timestamp converter. The outputs are computed live in this tab by the same code the tool pages run, and timed.
Minified JSON
What the API gave you: one line, a token buried inside.
// 1 line, 202 bytes, as the API sent it
{"user":"ada","role":"admin","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZGEiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE3NjEwMDAwMDAsImV4cCI6MTc2MTAwMzYwMH0.aWxsdXN0cmF0aXZlLXNpZ25hdHVyZQ","ttl":3600}Format it
Indented and colored, keys kept in the order they arrived, with a count of what is inside.
open json-formatter →{
"user": "ada",
"role": "admin",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZGEiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE3NjEwMDAwMDAsImV4cCI6MTc2MTAwMzYwMH0.aWxsdXN0cmF0aXZlLXNpZ25hdHVyZQ",
"ttl": 3600
}
// 1 object, 3 strings, 1 numbers, depth 1Decode the token
The JWT split into header and claims. The signature is never checked or sent anywhere.
open jwt-decoder →eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZGEiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE3NjEwMDAwMDAsImV4cCI6MTc2MTAwMzYwMH0.aWxsdXN0cmF0aXZlLXNpZ25hdHVyZQ // header { "alg": "HS256", "typ": "JWT" } // claims { "sub": "ada", "role": "admin", "iat": 1761000000, "exp": 1761003600 } // status: expired (signature not checked)
Read the timestamps
iat and exp converted to UTC, your local time and how long ago, then checked against the ttl field.
open timestamp-converter →// iat 1761000000 (seconds, auto-detected) utc 2025-10-20T22:40:00.000Z relative 1 year ago // exp 1761003600 (seconds, auto-detected) utc 2025-10-20T23:40:00.000Z relative 1 year ago // exp - iat = 3600 s ✓ matches "ttl": 3600
Your input stays in this tab.
Developer inputs often contain tokens, customer records and internal configuration. Every tool here runs in your browser, so none of it is sent to a server. Read how that works.
The scan on the right is computed when the site is built. The test suite fails the build if any count is not zero.
$ grep -cE "fetch|XMLHttpRequest|sendBeacon|WebSocket" assets/*.js
assets/json-formatter.js:0
assets/jwt-decoder.js:0
assets/cron-explainer.js:0
assets/regex-tester.js:0
assets/base64.js:0
assets/url-encoder.js:0
assets/uuid-generator.js:0
assets/timestamp-converter.js:0
assets/yaml-json.js:0
assets/text-diff.js:0
assets/cidr-calculator.js:0
assets/color-converter.js:0Built for the keyboard.
Every action has a key. Press ? on any page for the full list.
- Open the command paletteCtrlK
- Open the palette (outside a text field)/
- Show these shortcuts?
- Toggle light and dark themet
- Go homegh
- Go to all toolsgt
- Run the main actionCtrl↵
- Copy the outputc
- Load the next samples
- Focus the inputi
- Leave a text fieldEsc
- Previous or next tool[]