Type a word, findur.link builds every plausible domain out of it — dropped vowels, -ly/-ify/-hq suffixes, plurals, doubled consonants, compounds of your terms, and TLD-hack splits like delicio.us — then checks them. One word against all 523 supported TLDs generates 4,707 candidates; three words generate 17,782. Hacks are drawn from a curated 136-TLD set of endings that actually read as words, and ranked so the good splits float to the top.
The engineering is in the answer, not the guessing. A DNS NXDOMAIN does not mean a domain is buyable — plenty of registered names are parked with no A record. So every candidate goes through two phases: DNS over HTTPS across three providers round-robin, then, for anything that looks free, a query to that TLD's own RDAP registry endpoint, resolved live from IANA's bootstrap file rather than a hardcoded list or a middleman. Registry 404 means available. Registry 200 means taken, even though DNS said otherwise. A rate limit or timeout means likely available, and the app says so instead of pretending. Five states, not a boolean.
There is no backend. The site is a static SvelteKit SPA on GitHub Pages that picks its own resolver at load: a Cloudflare Worker that streams 500-domain batches back over SSE at 20 in flight; the browser itself, running the same DoH + RDAP logic with an 8-way concurrency limiter; or — if you run npx findurlink — a local server that shells out to real dig and whois, parses raw whois text, and rides out registry rate limits with exponential backoff and per-TLD cooldowns. It finds that local server by quietly probing nine localhost ports, and deliberately skips the scan on a first visit so the browser never throws a private-network permission prompt at you. Watch a domain and it re-checks on a timer and keeps its status history. Live Porkbun pricing drives renewal-cost filters and a "sold by all four of my registrars" cross-check. All of it, including the Cloudflare deploy, was built from an Android phone — which took patching esbuild, rollup, lightningcss and workerd to admit that android arm64 and linux arm64 are the same silicon.
// Technical highlights
- 523 TLDs, 13 mutation types, 4,707 candidates from one word (17,782 from three) — measured by running the real generator, not estimated.
- Availability is confirmed against each TLD's own RDAP registry, with endpoints resolved live from IANA's bootstrap file and cached 24 h — catching registered-but-parked domains that DNS-only tools call free.
- Three interchangeable resolvers, auto-detected in parallel at load: Cloudflare Worker (SSE-streamed, 500/batch, 20 concurrent), in-browser DoH (3 providers round-robin, 8 concurrent, 20 ms stagger), or local
dig+whois. npx findurlink— a published npm package (v1.2.2) the live site discovers on localhost and upgrades to; 12-waydig, 4-waywhois, 3 retries at 1s/2s/4s, 500 ms per-TLD cooldown, 15-minute cache.- Localhost discovery that never trips the browser's private-network prompt — 9 ports probed in parallel, but only after the user has opted in once.
- 136 curated hack TLDs, scored by
suffix ÷ wordlength sodelicio.usbeats a marginal split — instead of brute-forcing all 523. - Built and deployed from Termux on Android, via three toolchain patches: esbuild symlink, rollup-WASM swap, and a workerd platform-map injection so
wrangler deployruns from a phone.