Developer tools that run in your browser
Twenty-nine client-side utilities for JSON, encodings, IDs, time, and strings. This page is an index — open a tool to run it. Nothing is uploaded.
Docify's developer tools run entirely in your browser using standard JavaScript APIs: JSON.parse/stringify, Papa Parse for CSV, js-yaml for YAML, btoa/atob for Base64, encodeURIComponent for URL encoding, crypto.randomUUID for UUIDs, crypto.subtle.digest for hashes, and more. Each tool page names the specific API it uses. All data stays on your device — nothing is uploaded to a server.
What this hub is
An internal-linking map of the developer-classified tools already on the homepage. Each card names the algorithm and a hard limit so you can pick the right page. It is not a search box, an API, or a server-side sandbox.
Data formats
JSON Formatter
Prettify, minify, and validate JSON in your browser with JSON.parse and JSON.stringify. 2-space pretty print, nothing uploaded.
OpenCSV to JSON
Convert CSV tables to JSON in your browser with Papa.parse. First-row headers become object keys locally. Nothing uploaded.
OpenJSON to CSV
Convert JSON arrays to CSV in your browser with Papa.unparse. Object keys become the header row locally. Nothing uploaded.
OpenYAML to JSON
Convert YAML to JSON and JSON to YAML in your browser with js-yaml (CORE_SCHEMA). YAML 1.2 Core. Single document only. Nothing uploaded.
OpenEncode and decode
Base64
Encode and decode Base64 text and files in your browser with btoa and atob (RFC 4648). UTF-8, + / = alphabet. Nothing uploaded.
OpenBase64url
Encode and decode Base64url in your browser with RFC 4648 §5 (- and _, no padding). UTF-8 via btoa/atob. Nothing uploaded.
OpenBase32
Encode and decode Base32 in your browser with RFC 4648 §6 (A–Z 2–7, = padding). UTF-8 via encodeURIComponent. Nothing uploaded.
OpenBase32hex
Encode and decode Base32hex in your browser with RFC 4648 §7 (0–9 A–V, = padding). UTF-8 via encodeURIComponent. Nothing uploaded.
OpenBase16
Encode and decode Base16 (hex) in your browser with RFC 4648 §8 (0–9 A–F, no padding). UTF-8 via encodeURIComponent. Nothing uploaded.
OpenURL Encoder
Encode and decode URLs with percent-encoding (encodeURI and encodeURIComponent). Spaces become %20, not +. Nothing uploaded.
OpenURLSearchParams
Encode and decode form-urlencoded query strings in your browser with WHATWG URLSearchParams. Spaces become +, not %20. Nothing uploaded.
OpenURL Parser
Parse URLs in your browser with WHATWG new URL(). Split host, path, query, and hash locally. Nothing uploaded.
OpenPunycode
Encode and decode Punycode in your browser with RFC 3492. Raw Punycode, no xn-- prefix. Nothing uploaded.
OpenIDNA
Encode and decode IDNA in your browser with UTS #46 ToASCII and ToUnicode. Convert Unicode domains to ACE labels locally. Nothing uploaded.
OpenUnicode Normalize
Normalize Unicode text in your browser with UAX #15 NFC, NFD, NFKC, and NFKD. Compose or decompose characters locally. Nothing uploaded.
OpenHTML Encoder
Encode and decode HTML entities in your browser. Escapes ampersand, angle brackets, and quotes as named or numeric references locally. Nothing uploaded.
OpenIdentifiers and checksums
UUID v4 Generator
Generate random UUID v4 identifiers in your browser with crypto.randomUUID(). RFC 9562 version 4, locally. Nothing uploaded.
OpenUUID v7 Generator
Generate time-ordered UUID v7 identifiers in your browser with Date.now() and crypto.getRandomValues(). RFC 9562 version 7, locally. Nothing uploaded.
OpenUUID v5 Generator
Generate name-based UUID v5 identifiers in your browser with SHA-1 via crypto.subtle.digest. RFC 9562 version 5, locally. Nothing uploaded.
OpenULID Generator
Generate time-ordered ULID identifiers in your browser with Date.now() and crypto.getRandomValues(). Crockford Base32, locally. Nothing uploaded.
OpenHash Generator
Generate SHA-256 and SHA-1 hashes via Web Crypto, plus MD5 in JavaScript. Checksum tool, not a password hasher. Nothing uploaded.
OpenJWT Decoder
Decode and inspect JWT tokens in your browser. View header and payload as JSON. Signatures are shown but never verified. Nothing uploaded.
OpenTime and schedules
Strings and values
Regex Tester
Test JavaScript regular expressions in your browser. Supports flags g, i, m, s, u, and y. Nothing uploaded.
OpenLine Sorter
Sort, deduplicate, and reverse lines in your browser. UTF-16 code unit order (not locale). Ignore case option for sorting and deduplication. Nothing uploaded.
OpenNumber Base Converter
Convert numbers between binary, octal, decimal, and hexadecimal in your browser. Supports arbitrary bases 2–36. Nothing uploaded.
OpenColor Converter
Convert colors between hex, RGB, and HSL in your browser. CSS Color Module Level 4. Opaque sRGB only. Nothing uploaded.
OpenLorem Ipsum
Generate Lorem Ipsum placeholder text in your browser. Classic Latin dummy text from the Cicero-derived passage. Nothing uploaded.
OpenGuides
Short comparisons that point back to the live tools. They are not thin clones of the pages above.
How to Format JSON Online: Parse and Prettify
Prettify and minify JSON with JSON.parse and JSON.stringify. Preserves Unicode characters like é without escaping.
Minify JSON Without Breaking Unicode
Why JSON.stringify preserves Unicode characters by default, unlike Python's ensure_ascii=True.
Validate JSON Syntax with JSON.parse
Check JSON validity using the browser's native JSON.parse. Invalid syntax throws a descriptive error.
Compact JWS vs JWE: Decode Is Not Verify
Compact JWS is three base64url segments; compact JWE is five. This article compares them and does not decode tokens.
SHA-256 vs SHA-1 vs MD5: Differences and Which to Use
Compare hash algorithms: SHA-256 is secure for checksums, SHA-1 is deprecated, MD5 is broken. None are password hashers.
UUID Versions Explained: v4 vs v1, v5, v7 and v8 (Format & Length)
UUID v4 uses 122 random bits. UUID v7 embeds a timestamp for sortability. UUID v5 is deterministic from a namespace and name.
Unix Seconds vs Milliseconds: UTC vs Local
POSIX seconds and JavaScript Date milliseconds are two integer clocks. Digit length is not a unit.
sRGB Hex vs rgb() vs hsl(): Same Triple, Three Spellings
Compare sRGB hex, rgb(), and hsl(). Same opaque color, three CSS spellings.
Positional BigInt vs Number.parseInt
Number.parseInt stops at the first invalid digit. Exact integers end at 2^53-1. This article compares it with Horner's method on BigInt and does not convert numbers.
Letraset Dummy vs Cicero: Not Random Latin
Lorem Ipsum comes from a scrambled passage of Cicero's "de Finibus Bonorum et Malorum" (45 BC), not random Latin words.
UTF-16 vs Locale Sort: Code Units vs localeCompare
JavaScript's default sort uses UTF-16 code units, so "10" < "2". Use localeCompare() for natural sorting.
CSV to JSON in the Browser with Papa Parse
Quoted numeric cells become numbers under dynamicTyping. CSV quotes only escape delimiters. This article explains Papa Parse and does not convert CSV.
Convert JSON to CSV in JavaScript: Papa.unparse vs Papa.parse
Raw Papa.unparse writes [object Object] for nested values. IEEE-754 rounding happens at JSON.parse. This article compares them and does not convert JSON.
JavaScript RegExp vs PCRE: Flags and Lookbehind
JavaScript regex has different flags and features than PCRE. The u flag enables Unicode mode, s flag makes . match newlines.
Named vs Numeric HTML Entities: Names vs Code Points
Encode < as < or <. Named entities are more readable, numeric entities work for any Unicode character.
Encode Text to Base64: btoa + UTF-8
Encode UTF-8 text to RFC 4648 Base64 in the browser with btoa(). Unicode characters stay intact and nothing is uploaded.
Decode Base64 to UTF-8: atob
Decode RFC 4648 Base64 back to UTF-8 text in the browser with atob(). Invalid strings fail locally and nothing is uploaded.
Convert a File to Base64: FileReader
Convert a file to Base64 in the browser and copy a data URL for HTML or JSON. The file never leaves your device.
RFC 4648 Base32 vs Base32hex: Alphabet and Sort Order
Standard Base32 uses A–Z and 2–7. Base32hex uses 0–9 and A–V for better sorting. Both use = padding.
URL Encoder & Decoder
Encode and decode URLs with encodeURIComponent and decodeURIComponent. Covers %20 vs + spaces, URIError handling, and query string encoding.
URLSearchParams vs encodeURIComponent: Form vs Percent-Encoding
URLSearchParams uses + for spaces (form encoding). encodeURIComponent uses %20. Choose based on your server's expectations.
WHATWG new URL vs encodeURI: Punycode vs Percent-Encoding
new URL() converts Unicode domains to Punycode (xn--). encodeURI() percent-encodes them. Use new URL() for standards compliance.
NFC vs NFD vs NFKC: Canonical vs Compatibility
NFC composes characters (é). NFD decomposes them (e + combining acute). NFKC and NFKD also normalize compatibility characters.
Punycode vs IDNA: RFC 3492 and UTS #46
Punycode encodes single labels. IDNA processes full hostnames with normalization. Learn the difference.
Vixie Crontab vs Quartz: 5-Field vs 6/7
Vixie crontab is five fields (minute through day-of-week). Quartz adds seconds and an optional year. This article compares them and does not parse expressions.
YAML 1.2 Core vs 1.1: Norway, Comments, JSON
YAML 1.2 Core keeps yes/no as strings. YAML 1.1 treats them as booleans. This article compares them and does not convert YAML.
FAQ
- Do these developer tools upload my data?
- No. Each page runs entirely in your browser using JavaScript APIs like JSON.parse, crypto.subtle.digest, Papa Parse, and js-yaml. Your files, tokens, and hashes never leave your device.
- Which tools belong on this hub?
- The 29 encoding, data, ID, time, and string utilities listed below — the same set marked DeveloperApplication on the homepage. Word counting, case conversion, Markdown, and text diff are indexed on /text-tools/. Images-to-PDF and the PDF stamp are indexed on /pdf-tools/.
- Does the JWT decoder prove a token is valid?
- No. The JWT decoder only splits a compact JWS into its three base64url segments and pretty-prints the header and payload as JSON. The signature is displayed but never verified. There is no HMAC, RSA, or JWKS check, and JWE tokens (which have five segments) are rejected.
- Is the hash tool a password hasher?
- No. SHA-256, SHA-1, and MD5 are unkeyed message digests — they produce a fixed-size hash from any input. They are suitable for checksums and data integrity, but not for password storage. Use bcrypt, Argon2, or scrypt for passwords.
Related
- All 35 tools on the homepage
- Blog index
- Text tools hub (word count, case, diff, and Markdown preview)
- PDF tools hub (images-to-PDF and the page-1 signature stamp)