Developer Utilities
A fast, privacy-first collection of everyday developer utilities - encoders, generators, decoders and converters.
UUID Generator
Generate cryptographically random v4 and time-ordered v7 UUIDs in bulk.
Nano ID Generator
NewCreate compact, URL-safe Nano IDs with a custom size and alphabet.
Base64 Encode
Encode text or files to Base64, with an optional URL-safe variant.
Base64 Decode
Decode Base64 back to readable text, including URL-safe input.
JWT Decoder
Decode a JWT to inspect its header, payload, and claims instantly.
URL Encoder
Percent-encode text for safe use in URLs and query strings.
URL Decoder
Decode percent-encoded URL strings back to plain, readable text.
Hash Generator
Compute SHA-1, SHA-256, SHA-384, and SHA-512 hashes of text or files.
Password Generator
Generate strong, random passwords with a live strength estimate.
Unix Timestamp Converter
Convert between Unix timestamps and human-readable dates, both ways.
Lorem Ipsum Generator
Generate placeholder lorem ipsum text by paragraphs, sentences, or words.
PlantUML Editor
NewWrite, preview and export PlantUML diagrams in your browser - rendered 100% locally.
Encoding, hashing and encryption are three different things
This is the single most consequential distinction in this category, and conflating the terms causes real security incidents. Encoding - Base64, percent-encoding - is a reversible change of alphabet with no key and no secret. Anyone can undo it instantly. Its purpose is transport: letting binary or reserved characters survive a channel that only handles plain text.
Hashing - SHA-256, and the legacy MD5 and SHA-1 - is deliberately one-way. It maps input of any size to a fixed-size digest that cannot be reversed. Its purpose is integrity and identity, not confidentiality: verifying a download, deduplicating files, or comparing values without storing them.
Encryption is the only one of the three that provides confidentiality, and none of the tools here perform it. If you need something to be unreadable by whoever holds it, Base64 will not do it and neither will a hash. cGFzc3dvcmQ= is not a protected password; it is the word password in a different alphabet.
Decoding is not verifying
The same trap appears with JSON Web Tokens. A JWT is three Base64url segments joined by dots, and reading the header and payload requires no key whatsoever - which is why the decoder can show you the claims entirely in your browser. That is decoding.
Verifying is checking the third segment, the signature, against the issuer's secret or public key, and confirming that exp, nbf, iss and aud are acceptable. Only that step tells you the token is genuine. Reading a token's claims and acting on them without verifying the signature means trusting a string that anyone could have written, and it is a recurring source of authentication bypasses.
Randomness, identifiers and where they come from
The generators here draw from crypto.getRandomValues(), the browser's cryptographically secure random source, rather than Math.random(). That distinction matters for passwords and tokens, where a predictable generator is equivalent to no generator, and it is why these values are produced locally in your tab and never transmitted or stored.
Choosing between identifier formats is mostly a question of what you need from them. UUIDv4 is 122 random bits with universal library support but no ordering, which fragments database indexes when used as a primary key. UUIDv7 keeps the same format while prefixing a millisecond timestamp, so values sort chronologically and index well. Nano IDs are shorter and URL-safe by default, which suits public-facing identifiers where a 36-character UUID is unwieldy.
Everything here runs in your browser
None of these developer utilities send your input anywhere. LocalOnly is a static site with no application backend, so the work happens in your tab and the payload you paste - API keys, tokens, customer records - stays on your machine. Read more about how and why the site is built this way, or the Privacy Policy for what the site itself does collect.