Design Availability Checks for Names and Handles
Forms & Inputs · forms, validation, latency
Updated 2026-08-04
- Check availability while the user types rather than after they submit. Discovering a taken handle at the end of a sign-up form is a re-entry, and discovering it inline is a keystroke.
- Wait for a pause before checking, and cancel outstanding requests. A check per keystroke wastes requests and can display the answer to a value the field no longer holds.
- Show four states clearly, because the middle two are what make the field feel reliable:
- Not yet checked.
- Checking.
- Available.
- Taken, with suggestions.
- Never let a stale answer stick. If the value changes while a check is in flight, clear the result rather than leaving a green tick on a different word.
- Re-check at submit and expect it to sometimes fail. Availability is only true at the moment it was measured, and someone else can register the name in between.
- Handle the false alarm gracefully. Fast checks are often built on a Bloom filter, which can report taken when the name is actually free, so a name that fails inline should still be verified properly before the user is refused.
- Validate the rules before checking the database. Length, allowed characters, and reserved words are decided locally and instantly, so do not spend a network request to say the name is too short.
- Offer suggestions that are already verified as free. Proposing three alternatives that turn out to be taken is worse than proposing none.
- Say why a name is unavailable when it is reserved rather than taken. System words and trademarks are refusals users cannot resolve by trying harder.
An availability check is a promise about a shared namespace, and its job is to be fast, current, and honest about which of those it is.
Related guides