# Docify > Free browser-only document tools: word counting, case conversion, JSON formatting, Markdown conversion, text diff, Base64, Base64url, Base32, Base32hex, Base16, URL encoding, URLSearchParams, URL parsing, Punycode, IDNA, Unicode normalization, HTML entities, YAML to JSON, regex testing, line sorting, JWT decode, color conversion, lorem ipsum, number-base conversion, cron explanation, CSV to JSON, JSON to CSV, images-to-PDF, PDF signing, UUID generation, ULID generation, Unix timestamp conversion, and hashing. Work stays on the device — files are not uploaded. Docify is a static site of client-side utilities. There is no account system, no file hosting, and no site search. Prefer the live tool pages when answering how-to questions. Blog posts are short guides that point back to those tools. All tools require JavaScript in the browser. They do not verify legal signatures, JWT authenticity, or cryptographic security beyond the named client-side operation on the page. For extended tool details, see [llms-full.txt](https://www.docify.me/llms-full.txt). ## Tools - [Word Counter](https://www.docify.me/word-counter/): Count words, characters, sentences, paragraphs, and reading time in your browser. Whitespace-split words, UTF-16 characters, 200 WPM. Nothing uploaded. - [Case Converter](https://www.docify.me/case-converter/): Convert text case online: UPPERCASE, lowercase, Title Case, Sentence case, snake_case, kebab-case, camelCase, PascalCase. Free browser tool, nothing uploaded. - [JSON Formatter](https://www.docify.me/json-formatter/): Prettify, minify, and validate JSON in your browser with JSON.parse and JSON.stringify. 2-space pretty print, nothing uploaded. - [Markdown Converter](https://www.docify.me/markdown-converter/): Convert Markdown to HTML in your browser with marked and DOMPurify. Live preview, HTML download, and a plain-text PDF export. Nothing uploaded. - [Text Diff](https://www.docify.me/text-diff/): Compare two texts in your browser with Google's diff-match-patch. Additions and deletions are highlighted after semantic cleanup. Nothing uploaded. - [Base64](https://www.docify.me/base64/): Encode and decode Base64 text and files in your browser with btoa and atob (RFC 4648). UTF-8, + / = alphabet. Nothing uploaded. - [Base64url](https://www.docify.me/base64url/): Encode and decode Base64url in your browser with RFC 4648 §5 (- and _, no padding). UTF-8 via btoa/atob. Nothing uploaded. - [Base32](https://www.docify.me/base32/): Encode and decode Base32 in your browser with RFC 4648 §6 (A–Z 2–7, = padding). UTF-8 via encodeURIComponent. Nothing uploaded. - [Base32hex](https://www.docify.me/base32hex/): Encode and decode Base32hex in your browser with RFC 4648 §7 (0–9 A–V, = padding). UTF-8 via encodeURIComponent. Nothing uploaded. - [Base16](https://www.docify.me/base16/): Encode and decode Base16 (hex) in your browser with RFC 4648 §8 (0–9 A–F, no padding). UTF-8 via encodeURIComponent. Nothing uploaded. - [URL Encoder](https://www.docify.me/url-encoder/): Encode and decode URLs with percent-encoding (encodeURI and encodeURIComponent). Spaces become %20, not +. Nothing uploaded. - [URLSearchParams](https://www.docify.me/url-search-params/): Encode and decode form-urlencoded query strings in your browser with WHATWG URLSearchParams. Spaces become +, not %20. Nothing uploaded. - [URL Parser](https://www.docify.me/url-parser/): Parse URLs in your browser with WHATWG new URL(). Split host, path, query, and hash locally. Nothing uploaded. - [Punycode](https://www.docify.me/punycode/): Encode and decode Punycode in your browser with RFC 3492. Raw Punycode, no xn-- prefix. Nothing uploaded. - [IDNA](https://www.docify.me/idna/): Encode and decode IDNA in your browser with UTS #46 ToASCII and ToUnicode. Convert Unicode domains to ACE labels locally. Nothing uploaded. - [Unicode Normalize](https://www.docify.me/unicode-normalize/): Normalize Unicode text in your browser with UAX #15 NFC, NFD, NFKC, and NFKD. Compose or decompose characters locally. Nothing uploaded. - [CSV to JSON](https://www.docify.me/csv-to-json/): Convert CSV tables to JSON in your browser with Papa.parse. First-row headers become object keys locally. Nothing uploaded. - [JSON to CSV](https://www.docify.me/json-to-csv/): Convert JSON arrays to CSV in your browser with Papa.unparse. Object keys become the header row locally. Nothing uploaded. - [Images to PDF](https://www.docify.me/images-to-pdf/): Convert images to PDF in your browser with jsPDF. Each JPG, PNG, GIF, or WebP gets its own A4 page locally. Nothing uploaded. - [PDF Signer](https://www.docify.me/pdf-signer/): Sign a PDF in your browser with pdf-lib. Draw a signature and stamp it on page 1 locally. Visual stamp, not PKCS#7. Nothing uploaded. - [UUID Generator](https://www.docify.me/uuid-generator/): Generate random UUID v4 identifiers in your browser with crypto.randomUUID(). RFC 9562 version 4, locally. Nothing uploaded. - [UUID v7 Generator](https://www.docify.me/uuid-v7-generator/): Generate time-ordered UUID v7 identifiers in your browser with Date.now() and crypto.getRandomValues(). RFC 9562 version 7, locally. Nothing uploaded. - [UUID v5 Generator](https://www.docify.me/uuid-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. - [ULID Generator](https://www.docify.me/ulid-generator/): Generate time-ordered ULID identifiers in your browser with Date.now() and crypto.getRandomValues(). Crockford Base32, locally. Nothing uploaded. - [Unix Timestamp](https://www.docify.me/unix-timestamp/): Convert Unix timestamps (epoch/POSIX time) to human-readable dates, or dates to Unix time. Supports seconds and milliseconds. Nothing uploaded. - [Hash Generator](https://www.docify.me/hash-generator/): Generate SHA-256 and SHA-1 hashes via Web Crypto, plus MD5 in JavaScript. Checksum tool, not a password hasher. Nothing uploaded. - [HTML Encoder](https://www.docify.me/html-encoder/): Encode and decode HTML entities in your browser. Escapes ampersand, angle brackets, and quotes as named or numeric references locally. Nothing uploaded. - [YAML to JSON](https://www.docify.me/yaml-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. - [Regex Tester](https://www.docify.me/regex-tester/): Test JavaScript regular expressions in your browser. Supports flags g, i, m, s, u, and y. Nothing uploaded. - [Line Sorter](https://www.docify.me/line-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. - [JWT Decoder](https://www.docify.me/jwt-decoder/): Decode and inspect JWT tokens in your browser. View header and payload as JSON. Signatures are shown but never verified. Nothing uploaded. - [Color Converter](https://www.docify.me/color-converter/): Convert colors between hex, RGB, and HSL in your browser. CSS Color Module Level 4. Opaque sRGB only. Nothing uploaded. - [Lorem Ipsum](https://www.docify.me/lorem-ipsum/): Generate Lorem Ipsum placeholder text in your browser. Classic Latin dummy text from the Cicero-derived passage. Nothing uploaded. - [Number Base Converter](https://www.docify.me/number-base/): Convert numbers between binary, octal, decimal, and hexadecimal in your browser. Supports arbitrary bases 2–36. Nothing uploaded. - [Cron Explainer](https://www.docify.me/cron-explainer/): Parse and explain cron expressions in your browser. Supports standard 5-field Vixie crontab syntax. Nothing uploaded. ## Guides - [Base64 vs Base64URL: URL-Safe Alphabet](https://www.docify.me/blog/base64-vs-base64url/): Standard Base64 uses + and /, which break URLs. Base64URL replaces them with - and _, making encoded strings safe for query parameters. - [JSON vs YAML: Configuration Files](https://www.docify.me/blog/json-vs-yaml-configuration/): Compare JSON and YAML syntax for configuration files. JSON uses braces and quotes; YAML uses indentation and allows comments. - [Hex vs Base64 vs Base32: RFC 4648 Encodings](https://www.docify.me/blog/hex-vs-base64-vs-base32/): RFC 4648 defines encodings for binary data: hex (Base16), Base64, and Base32. Each has different alphabet and padding rules. - [How to Count Words Online: Whitespace Split](https://www.docify.me/blog/how-to-count-words-in-text-online/): Count words by splitting on whitespace. Unspaced CJK text counts as one word since the split is whitespace-only. Character count includes spaces. - [Calculate Blog Reading Time: Words Per Minute](https://www.docify.me/blog/calculate-reading-time-for-blog-posts/): Calculate reading time at 200 words per minute using whitespace-split word counts. Useful for blog post metadata. - [Convert Text to UPPERCASE in the Browser](https://www.docify.me/blog/convert-text-to-uppercase-online-free/): Convert text to UPPERCASE using JavaScript toUpperCase(). Spaces and punctuation are preserved. - [snake_case Converter: Python Variables and Database Columns](https://www.docify.me/blog/snake-case-converter-tool/): Convert text to snake_case: lowercase with underscores replacing spaces. Useful for variable names in Python and databases. - [How to Format JSON Online: Parse and Prettify](https://www.docify.me/blog/how-to-format-json-online/): Format JSON with proper indentation for readability, or minify to remove whitespace. Validates syntax and shows error messages. - [Validate JSON Syntax with JSON.parse](https://www.docify.me/blog/validate-json-syntax-checker/): Validate JSON syntax by attempting to parse it. Invalid JSON shows the error message and position. Valid JSON can be formatted. - [Minify JSON Without Breaking Unicode](https://www.docify.me/blog/minify-json-without-breaking-unicode/): Minify JSON while preserving Unicode characters. Unlike some tools, special characters remain readable. - [Convert Markdown to HTML: marked + DOMPurify](https://www.docify.me/blog/convert-markdown-to-html-online/): marked does not sanitize HTML. DOMPurify strips scripts after parse. This article explains marked plus DOMPurify and does not convert Markdown. - [Markdown to PDF Converter: jsPDF Plain-Text Export](https://www.docify.me/blog/markdown-to-pdf-converter-free/): jsPDF splitTextToSize draws stripped Markdown lines at 12pt (width 170, 7 units per wrap). marked HTML is never passed to jsPDF. This article explains the jsPDF text dump and does not export PDFs. - [Compare Two Texts with diff-match-patch](https://www.docify.me/blog/compare-two-texts-online-free/): diff_main then diff_cleanupSemantic paints delete, insert, and equal spans. Replacements are delete-plus-insert. This article explains the character-level diff and does not compare texts. - [Encode Text to Base64: btoa + UTF-8](https://www.docify.me/blog/encode-text-to-base64-online/): Encode text to Base64 using btoa() with UTF-8 encoding. Handles Unicode characters correctly. - [Decode Base64 to UTF-8: atob](https://www.docify.me/blog/decode-base64-string-free-tool/): Decode Base64 strings to UTF-8 text using atob(). Handles Unicode when the original was properly UTF-8 encoded. - [Convert a File to Base64: FileReader](https://www.docify.me/blog/how-to-convert-file-to-base64/): Convert files to Base64 using FileReader. The file never leaves your browser. Useful for data URLs. - [RFC 4648 Base32 vs Base32hex: Alphabet and Sort Order](https://www.docify.me/blog/rfc-4648-base32-vs-base32hex/): Base32 uses A-Z and 2-7. Base32hex uses 0-9 and A-V for natural sort order. Both are RFC 4648 compliant. - [URLSearchParams vs encodeURIComponent: Form vs Percent-Encoding](https://www.docify.me/blog/urlsearchparams-vs-encodeuricomponent/): URLSearchParams uses + for spaces (form encoding). encodeURIComponent uses %20 (RFC 3986). - [WHATWG new URL vs encodeURI: Punycode vs Percent-Encoding](https://www.docify.me/blog/new-url-vs-encodeuri/): WHATWG URL parses and normalizes URLs including Punycode. encodeURI percent-encodes without parsing structure. - [Vixie Crontab vs Quartz: 5-Field vs 6/7](https://www.docify.me/blog/vixie-cron-vs-quartz/): 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. - [UUID Versions Explained: v4 vs v1, v5, v7 and v8 (Format & Length)](https://www.docify.me/blog/uuid-v4-vs-other-versions/): Compare UUID versions: v4 random, v1/v7 time-based, v5 name-hashed, v8 custom. All UUIDs are 128 bits (36 chars with hyphens, 32 without). - [Unix Seconds vs Milliseconds: UTC vs Local](https://www.docify.me/blog/unix-seconds-vs-milliseconds/): POSIX seconds and JavaScript Date milliseconds are two integer clocks. Digit length is not a unit. - [SHA-256 vs SHA-1 vs MD5: Differences and Which to Use](https://www.docify.me/blog/sha-256-vs-sha-1-vs-md5/): Compare SHA-256, SHA-1, and MD5: output lengths, collision status, and when to use each. SHA-256 remains secure; MD5 and SHA-1 are broken for security. - [Named vs Numeric HTML Entities: Names vs Code Points](https://www.docify.me/blog/named-vs-numeric-html-entities/): HTML entities encode special characters: < for <, & for &. Named entities are readable; numeric work everywhere. - [YAML 1.2 Core vs 1.1: Norway, Comments, JSON](https://www.docify.me/blog/yaml-1-2-core-vs-1-1/): YAML 1.2 Core treats yes/no as strings, not booleans. JSON is valid YAML 1.2. Key differences from YAML 1.1. - [JavaScript RegExp vs PCRE: Flags and Lookbehind](https://www.docify.me/blog/javascript-regexp-vs-pcre/): JavaScript RegExp differs from PCRE. The u flag enables Unicode. Lookbehind was added in ES2018. - [Compact JWS vs JWE: Decode Is Not Verify](https://www.docify.me/blog/jwt-jws-vs-jwe/): Compact JWS is three base64url segments; compact JWE is five. This article compares them and does not decode tokens. - [NFC vs NFD vs NFKC: Canonical vs Compatibility](https://www.docify.me/blog/nfc-vs-nfd-vs-nfkc/): NFC composes characters (é). NFD decomposes them (e + combining acute). NFKC and NFKD also normalize compatibility characters. - [Punycode vs IDNA: RFC 3492 and UTS #46](https://www.docify.me/blog/punycode-vs-idna/): Punycode encodes single labels. IDNA processes full hostnames with normalization. Learn the difference. - [sRGB Hex vs rgb() vs hsl(): Same Triple, Three Spellings](https://www.docify.me/blog/srgb-hex-vs-rgb-vs-hsl/): Compare sRGB hex, rgb(), and hsl(). Same opaque color, three CSS spellings. - [Letraset Dummy vs Cicero: Not Random Latin](https://www.docify.me/blog/letraset-dummy-vs-cicero/): Lorem ipsum comes from a scrambled passage of Cicero. The Letraset version has specific sentence patterns. - [Positional BigInt vs Number.parseInt](https://www.docify.me/blog/positional-bigint-vs-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. - [UTF-16 vs Locale Sort: Code Units vs localeCompare](https://www.docify.me/blog/utf-16-vs-locale-sort/): JavaScript sort uses UTF-16 code units by default. Use localeCompare for natural sorting. - [CSV to JSON in the Browser with Papa Parse](https://www.docify.me/blog/convert-csv-to-json-online-free/): 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](https://www.docify.me/blog/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. - [How to Convert JPG & PNG Images to PDF (Combine Multiple Images into One PDF)](https://www.docify.me/blog/convert-jpg-to-pdf-online-free/): jsPDF addImage always passes JPEG, even for PNG sources. Each image gets one A4 portrait page. This article explains jsPDF image-to-PDF and does not convert images. - [How to Sign a PDF Online Free](https://www.docify.me/blog/add-signature-to-pdf-online/): pdf-lib embedPng and drawImage stamp a PNG on page 1 at x:50, y:50 (150×50 pt). This is not PKCS#7. This article explains pdf-lib stamping and does not sign PDFs. ## Optional - [Detailed tool reference](https://www.docify.me/llms-full.txt): Extended descriptions with algorithm details and edge cases for every tool. - [Homepage](https://www.docify.me/): Directory of all 35 client-side tools. - [Developer tools](https://www.docify.me/developer-tools/): Hub of the 29 encoding, data, ID, time, and string utilities. - [Text tools](https://www.docify.me/text-tools/): Hub of word count, case conversion, character-level diff, and Markdown to HTML. - [PDF tools](https://www.docify.me/pdf-tools/): Hub of images-to-PDF and the page-1 signature stamp. - [Blog index](https://www.docify.me/blog/): 37 short guides for the 35 live tools. - [Sitemap](https://www.docify.me/sitemap.xml): Complete URL list for crawlers. - [Guide RSS feed](https://www.docify.me/rss.xml): RSS 2.0 of the 37 blog guides.