How I built errno.help - and what broke along the way
Description and use
errno.help consolidates frequently used developer tools into a single web app, providing client‑side processing and secure server requests, improving workflow efficiency and trust.
Problem
Developers repeatedly use multiple online tools for CIDR math, JWT decoding, hashing, etc., leading to fragmented workflows and trust concerns.
Outcome
errno.help consolidates common IT/dev utilities into a single, client‑side first web app with secure server‑side services, robust rate limiting, and a clean design, improving workflow efficiency and trust.
Workflow
- 1. Identify core utilities (CIDR, JWT, hash, UUID, YAML⇄JSON, cron, DNS/WHOIS/ASN/GeoIP, Windows error reference, command builders).
- 2. Implement client‑side logic using native Web APIs (crypto, randomUUID).
- 3. Add server‑side Next.js API routes for DNS, WHOIS, ASN, GeoIP, port checker, ensuring no client‑side API keys.
- 4. Configure GeoIP provider: switch from MaxMind to ipinfo.io for easier auth and commercial‑friendly free tier.
- 5. Implement rate limiting keyed on X‑Forwarded‑For, then adjust to use x‑real‑ip on Vercel and httpOnly cookie IDs elsewhere.
- 6. Resolve layout issue by moving viewport lock to landing page root instead of global body.
- 7. Deploy to Vercel, test, iterate.
- 8. Open‑source under MIT on GitHub.
- 9. Plan future feature additions (Base64, regex, more command builders).
Evidence
Nothing you paste into the JWT decoder ever leaves your machine
The GeoIP service rejected our credentials.
rate limiting keyed on X-Forwarded-For can be trivially bypassed
- Record date: 2026-09-22T02:00:46.947Z