all tools

Dev tools 73

Encoders, formatters, converters and calculators for everyday development work. Base64, JSON, JWT, cron, timestamps, colours, units and more. Nothing is sent anywhere, so pasting a token or a config file here does not leak it into a log on someone else's server.

Encode & decode22

n→nBase64 encodeBase64 encode.Runs on each file you dropn→nBase64URL encodeBase64URL encode.Runs on each file you dropn→nBase32 encodeBase32 encode.Runs on each file you dropn→nBase45 encodeBase45 encode.Runs on each file you dropn→nBase58 encodeBase58 encode.Runs on each file you dropn→nBase62 encodeBase62 encode.Runs on each file you dropn→nBase85 (Ascii85) encodeBase85 (Ascii85) encode.Runs on each file you dropn→nBase92 encodeBase92 encode.Runs on each file you dropn→nBech32 encodeBech32 encode.Runs on each file you dropn→nHex encodeHex encode.Runs on each file you dropn→nBinary encodeBinary encode.Runs on each file you dropn→nOctal encodeOctal encode.Runs on each file you dropn→nDecimal encodeDecimal encode.Runs on each file you dropn→nCharcode encodeCharcode encode.Runs on each file you dropn→nURL encodeURL encode.Runs on each file you dropn→nHTML entity encodeHTML entity encode.Runs on each file you dropn→nQuoted-Printable encodeQuoted-Printable encode.Runs on each file you dropn→nPunycode encodePunycode encode.Runs on each file you dropn→nModhex encodeModhex encode.Runs on each file you dropn→nMorse encodeMorse encode.Runs on each file you dropn→nCOBS encodeCOBS encode.Runs on each file you dropn→nVarInt (LEB128) encode / decodeLEB128-style variable-length integer encoding, the same scheme protobuf and WASM use for compact integers. Encode extracts every digit run from the input text; decode reads raw LEB128 bytes.Runs on each file you drop

JSON & schemas9

n→nJSON format / validateParse, validate and pretty-print JSON, with a clear parse-error message if it is broken.Runs on each file you dropn→nJSON sort / minify / escapeSort object keys, minify to one line, or escape/unescape JSON for embedding inside another string.Runs on each file you dropn→nJSONPath queryQuery JSON with a JSONPath expression: dot/bracket access, wildcards (*), recursive descent (..). No filter expressions (?()) or slices; those need a full JSONPath engine this build does not have.Runs on each file you dropn→nJSON Schema generatorInfer a draft-07 JSON Schema from an example JSON document. Every observed key is marked required, arrays are typed from their first element.Runs on each file you dropn→nJSON to TypeScriptJSON to TypeScript. Infers types from an example JSON document. Nested objects become named types by their key; mixed-type arrays fall back to a broad/any type.Runs on each file you dropn→nJSON to GoJSON to Go. Infers types from an example JSON document. Nested objects become named types by their key; mixed-type arrays fall back to a broad/any type.Runs on each file you dropn→nJSON to RustJSON to Rust. Infers types from an example JSON document. Nested objects become named types by their key; mixed-type arrays fall back to a broad/any type.Runs on each file you dropn→nJSON ↔ CSVConvert a flat JSON array of objects to CSV and back. CSV has no type system: JSON->CSV renders numbers/booleans/null as text and CSV->JSON always comes back as strings. A nested object or array field is refused by name rather than silently flattened. CSV parsing is fully quote-aware, embedded newlines included; a file with an unterminated quote is refused rather than guessed at.Runs on each file you dropn→n.env ↔ JSONConvert a .env file to a flat JSON object and back. Values are treated as strings both ways. No nesting, no type coercion of numbers/booleans on the JSON->env direction beyond JSON.stringify.Runs on each file you drop

Other formats8

n→nJSON ↔ CBOREncode JSON to CBOR bytes (shown as hex) or decode CBOR bytes back to JSON. Covers uint/negint/text/array/map/float/bool/null; no byte strings, tags, or indefinite-length items.Runs on each file you dropn→nJSON ↔ MessagePackEncode JSON to MessagePack bytes (shown as hex) or decode MessagePack bytes back to JSON. Covers nil/bool/int/float64/str/array/map: no bin, ext, or timestamp extension types.Runs on each file you dropn→nJSON ↔ RisonConvert JSON to Rison (the compact URI-safe notation Kibana/Elasticsearch use for query params) and back. This tool's own encoder/decoder for the documented core grammar (no reference implementation in this codebase to check against). Exotic edge cases like embedded control characters or surrogate-pair characters are not guaranteed byte-identical to the reference grammar.Runs on each file you dropn→nPHP serialize / unserializeConvert JSON to PHP's serialize() format and back. Covers null/bool/int/float/string/array. PHP objects (O:) are not implemented since they need a class registry this tool doesn't have.Runs on each file you dropn→nPLIST viewerView an XML property list (.plist) as JSON. Binary plist (bplist00) is not supported. It needs a separate binary-format parser this tool does not implement.Runs on each file you dropn→nGeoJSON ↔ CSVConvert GeoJSON Point features to CSV rows and back. LineString/Polygon geometries export as a flattened coordinate list (one-way; CSV->GeoJSON always builds Points). CSV parsing is fully quote-aware (src/csv.ts), so a quoted field holding a comma or a newline no longer shifts the coordinate columns.Runs on each file you dropn→nKML/GPX to GeoJSONConvert a GPX (waypoints/tracks/routes) or KML (Placemarks: Point/LineString/Polygon) file to GeoJSON. A hand-rolled tag scan, not a general XML parser: no styles, nested Folder hierarchy, MultiGeometry, or extended data.Runs on each file you drop·→1Coordinate format convert (DD/DMS/UTM)Convert between decimal degrees, degrees-minutes-seconds, and UTM. WGS84, standard 6° zones, non-polar only. MGRS grid-square lettering is not implemented (its edge cases are a separate, riskier piece of work).Takes no file

Tokens & IDs5

Minify & format5

Calculators & converters16

·→1Number base converterConvert an arbitrarily large integer between any base 2-36, using exact bigint arithmetic (no float precision loss).Takes no file·→1Bitwise calculatorAND / OR / XOR / NOT / shifts on integers, shown in binary, octal, decimal and hex. 64-bit two's-complement width.Takes no file·→1Chmod calculatorConvert Unix permissions between octal (755) and symbolic (rwxr-xr-x) form, including setuid/setgid/sticky bits.Takes no file·→1CSS unit converterConvert between px, em, rem, pt and % using a configurable root font-size and parent font-size.Takes no file·→1Color converter + paletteConvert between hex, rgb() and hsl(), and generate a shade/tint/complementary/analogous/triadic palette in HSL space. OKLCH is not supported. It needs chroma.js/culori, a dependency this build does not add.Takes no file·→1Gradient generatorBuild a CSS linear/radial gradient from 2+ hex colors, and optionally emit N discrete hex stops. Interpolation is linear in sRGB, not perceptual (that needs OKLCH, which needs chroma.js/culori, not available here).Takes no file·→1Bounding-box calculatorCompute the min/max lat/lon bounding box around a set of points.Takes no file·→1Haversine distanceGreat-circle distance between two lat/lon points on a spherical Earth model.Takes no file·→1Angle converterAngle converter, no network, no rounding surprises.Takes no file·→1Area converterArea converter, no network, no rounding surprises.Takes no file·→1Data size converterData size converter, no network, no rounding surprises.Takes no file·→1Length converterLength converter, no network, no rounding surprises.Takes no file·→1Mass converterMass converter, no network, no rounding surprises.Takes no file·→1Speed converterSpeed converter, no network, no rounding surprises.Takes no file·→1Time converterTime converter, no network, no rounding surprises.Takes no file·→1Volume converterVolume converter, no network, no rounding surprises.Takes no file

Time3

Lookups & references5

Questions

Is it safe to paste a token or a config file here?

Yes, in the sense that nothing you paste leaves the page. There is no request carrying it, which the counter on the homepage shows as zero. The usual caution still applies to what you have on screen and where you paste the result.

Is Base64 encryption?

No. Base64 is an encoding, reversible by anyone, with no key involved. It exists to move binary data through channels that expect text. For actual protection use AES-GCM encrypt in the crypto category.

Does the JWT tool verify signatures?

Partly. HS256, HS384 and HS512 are checked with WebCrypto HMAC against the secret you type. RS, ES and PS tokens are decoded and reported as not verified, because that needs asymmetric key material the tool has no way to be given. It never checks expiry or issuer.

Can I use these from the command line?

Yes. Every tool in this category is the same code on three surfaces: this page, a CLI command and an MCP tool an AI agent can call. The id shown in the URL is the name it goes by on all three.

Why are there so many encoders?

Because each one exists for a different reason. Base58 avoids characters people confuse, Base45 is what QR payloads use, Punycode encodes internationalised domains, COBS frames binary data for serial links. Each tool page explains what its encoding is for.