Developer Utilities
21 free toolsCron, regex, chmod, Docker, .env, and other developer reference tools.
Developer utilities cover the reference tasks that interrupt real work: parse a cron expression into plain English, test a regex, calculate chmod bits, convert docker run to Compose, generate nginx or .htaccess redirects, scan a package.json for known vulnerabilities, and check what an .env line really parses to. Most come with a cheat sheet that explains the rules the tool applies.
These run in your browser, except the dependency scanner, which queries the OSV.dev vulnerability API with your package names and versions.
All 21 tools
ASCII Table
Searchable ASCII character code reference
JSON Path Finder
Paste JSON and explore all paths to values
XPath Tester
Evaluate XPath expressions against XML or HTML live, with matched node types, namespaces, and copy-ready document.evaluate and Playwright snippets.
Chmod Calculator
Visual permission calculator for Unix
.gitignore Generator
Select presets and generate a combined .gitignore
Environment Variable Parser
Parse .env files and convert between formats
Tailwind → CSS Converter
Paste Tailwind classes and see equivalent CSS
Aspect Ratio Calculator
Calculate dimensions from aspect ratios
Bytes / Filesize Converter
Convert between B, KB, MB, GB, TB
Package.json Explorer
Paste package.json to see a clean breakdown of dependencies and scripts
SSH Key Generator
Generate Ed25519 or RSA SSH key pairs in your browser
robots.txt Generator
Build robots.txt files with user-agent rules and presets
Docker Run → Compose
Convert a docker run command to docker-compose.yaml
Dependency Vulnerability Scanner
Scan npm lockfiles for known vulnerabilities (CVEs) via the OSV database
AI Token Counter
Count GPT-4o and GPT-4 tokens with real BPE encodings, plus a Claude estimate and an LLM API cost calculator
.htaccess Generator
Build .htaccess files with redirects, security, caching, and more
Email Normalizer
Normalize emails and find duplicates
.editorconfig Generator
Generate an .editorconfig file from a form
cURL → Code
Convert curl commands to JavaScript fetch, Python requests, Node, or Go
.dockerignore Generator
Generate a curated .dockerignore for your stack
Nginx Redirect Generator
Build nginx 301/302 redirects, www and HTTPS rules, and rewrite maps
Guides
From the blog: the mechanisms, standards, and edge cases behind these tools.
- EditorConfig vs Prettier vs ESLint: Who Does What EditorConfig vs Prettier vs ESLint: three layers, not three competitors. What only .editorconfig can do, how Prettier reads it, and why yours isn't working. Aug 28, 2026 · uses Package.json Explorer, .editorconfig Generator, .dockerignore Generator
- XPath vs CSS Selectors: When Each One Wins, with 12 Copy-Paste Expressions CSS can't match by text and needs :has() to look up the tree. XPath does both. 12 side-by-side expressions for scraping and tests, plus the //tag[1] trap. Oct 16, 2026 · uses JSON Path Finder, XPath Tester
- npm Caret vs Tilde: What ^1.2.3 and ~1.2.3 Really Allow (and the 0.x Exception) ^ allows minor and patch updates, ~ allows only patch, and below 1.0.0 the rules change. Every range resolved, plus why the lockfile usually wins. Oct 15, 2026 · uses Package.json Explorer, Dependency Vulnerability Scanner
- nginx Redirects: return vs rewrite, $request_uri vs $uri When to use return and when rewrite in nginx, why $request_uri keeps the query string and $uri does not, how location modifiers pick a winner, and the redirect loops to avoid. Sep 27, 2026 · uses .htaccess Generator, Nginx Redirect Generator
- npm audit Says 47 Vulnerabilities. How Many Are Real? Why a fresh project reports a wall of critical findings, why two scanners disagree about the same package, and how to triage a dependency report in the right order — reachability before severity, lockfile before package.json, and what a CVSS base score is actually claiming. Aug 24, 2026 · uses Package.json Explorer, Dependency Vulnerability Scanner
- Your .dockerignore Is Not Broken — It Just Is Not .gitignore The classic bug — "why is node_modules still in my build context?" — is not a bug at all. Docker matches patterns with Go's filepath.Match against the context root, not with gitignore rules: bare names don't recurse, negation is last-line-wins, and the Dockerfile is sent to the builder even when you exclude it. Aug 20, 2026 · uses Docker Run → Compose, .dockerignore Generator
- chmod 755 vs 644: Linux File Permissions Without the Guesswork What the three digits actually mean, why directories need the execute bit, when to use 600, and the recursive chmod mistake that breaks every folder on your server. Jul 25, 2026 · uses SSH Key Generator, .htaccess Generator
- 301 vs 302 Redirects: Which to Use, and How to Check What You Actually Send Permanent vs temporary redirects, where 307 and 308 fit, why redirect chains cost you rankings, and the config snippets for Apache, nginx, Cloudflare, Netlify, and Next.js. Jul 25, 2026 · uses .htaccess Generator, Nginx Redirect Generator
- docker run to docker-compose: Convert Any Command, Flag by Flag A practical guide to converting a docker run command into a docker-compose.yaml file — what each flag maps to (-p, -e, -v, --restart, --name, --network), with copy-paste examples for Postgres, Redis, and Nginx. Jul 17, 2026 · uses Docker Run → Compose, .dockerignore Generator
- CORS Errors Explained: Why curl Works and fetch Doesn't The server got your request. The browser just won't let your JavaScript read the reply. What preflight is, the three wrong fixes, and the missing header. Oct 16, 2026 · uses cURL → Code
- "Permissions 0644 Are Too Open": Fix the SSH Private Key Warning OpenSSH refuses any private key readable by group or others. Fix: chmod 600. If chmod 'does nothing', you're on a Windows drive under WSL. Oct 13, 2026 · uses SSH Key Generator
- What an LLM API Call Actually Costs in October 2026 (GPT-6 vs Claude 5.5 vs Gemini 3.8) Per-call and per-1,000-call costs for GPT-6, Claude 5.5 and Gemini 3.8, worked out with real arithmetic, plus the billing traps that make naive estimates wrong. Oct 6, 2026 · uses AI Token Counter