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.