Skip to main content

Check whether a domain name is available

3 min readStableBeginner

Every way to name what to check, and what the table looks like each time.

Prerequisites

  • reserve installed and on your PATH. See Install reserve.
  • Outbound network access to reach a registry.

Check one name across a group of extensions

CONSOLE
CONSOLE
$ reserve your-domain-name --group tech
 
   DOMAIN                STATUS     SOURCE      TIME  NOTE
-  your-domain-name.com  TAKEN      registry  1104ms
+  your-domain-name.net  AVAILABLE  registry   842ms
+  your-domain-name.xyz  AVAILABLE  registry   917ms
-  your-domain-name.io   TAKEN      registry  1288ms
+  your-domain-name.app  AVAILABLE  registry   963ms
 
3 available  2 taken  0 unknown   (5 checked)

--group (short -g) takes a group name. Repeat it or comma-separate several values to check the union of two groups:

Bash
Bash
reserve example -g tech -g creative

Check specific extensions

CONSOLE
CONSOLE
$ reserve your-domain-name --tld com,net,io
 
   DOMAIN                STATUS     SOURCE      TIME  NOTE
-  your-domain-name.com  TAKEN      registry  1104ms
+  your-domain-name.net  AVAILABLE  registry   842ms
+  your-domain-name.io   AVAILABLE  registry   917ms
 
2 available  1 taken  0 unknown   (3 checked)

--tld (short -t) takes one or more extensions, comma-separated or repeated.

Check a full domain exactly as typed

CONSOLE
CONSOLE
$ reserve example.com.bd
 
   DOMAIN          STATUS     SOURCE   TIME  NOTE
+  example.com.bd  AVAILABLE  text    656ms
 
1 available  0 taken  0 unknown   (1 checked)

A name carrying a dot is treated as a domain you're asking about directly, and is checked exactly as given, whatever extensions the run otherwise selected. This works even for a domain under an extension that isn't in reserve's catalog.

Check several names at once

CONSOLE
CONSOLE
$ reserve alpha bravo charlie --tld com
 
   DOMAIN       STATUS     SOURCE      TIME  NOTE
-  alpha.com    TAKEN      registry  1050ms
+  bravo.com    AVAILABLE  registry   889ms
-  charlie.com  TAKEN      registry   931ms
 
1 available  2 taken  0 unknown   (3 checked)

A name repeated in the input, whether typed twice or given once as an argument and once inside --names-from, is asked once, and the answer is copied to every row that named it.

Read names from a file

Bash
Bash
reserve --names-from shortlist.txt

One entry per line. Commas also separate, # starts a comment, blank lines are skipped, and duplicates are dropped:

shortlist.txt
Plain Text
alpha
bravo, charlie
# delta is not a real contender
echo

Use --names-from - to read the list from standard input instead of a file:

Bash
Bash
printf 'alpha\nbravo\n' | reserve --names-from - --tld com

--tlds-from zones.txt reads a list of extensions the same way. Only one of the two can read from standard input at once.

Choose extensions by group

Run reserve groups to list every group you can pick from, grouped by family:

CONSOLE
CONSOLE
$ reserve groups
 
By popularity
top-10    10  The ten most registered extensions
top-25    25  The twenty-five most registered
top-50    50  The fifty most registered
top-100  100  The most registered extensions in the catalog
 
Hand-picked
popular         25  A short sweep of the extensions most people actually type
classic          5  The original generic extensions
country-codes  149  Every two-letter country extension
domain-hacks    19  Country extensions used away from their country meaning
registrable    272  Every extension the public can buy
everything     314  Every known extension, including zones nobody can buy
 
By industry
tech         34  Software, infrastructure, and developer tools
shop         15  Online stores and direct selling
business    154  General company and corporate use
media        27  Publishing, news, video, and audio
finance      25  Banking, investment, and payments
health       10  Clinics, wellbeing, and medical practice
education    15  Schools, courses, and training
food         10  Restaurants, cafes, and hospitality
travel        9  Tourism, flights, and holidays
realestate   11  Estate agents, rentals, and listings
legal         9  Law firms and professional practice
crypto        7  Digital assets and exchanges
creative     31  Design, art, and portfolios
nonprofit    12  Charities, foundations, and causes
 
By region
south-asia      26  Bangladesh, India, Pakistan, and neighbours
southeast-asia  15  Singapore, Malaysia, Indonesia, and neighbours
east-asia       10  China, Japan, Korea, Taiwan, and Hong Kong
europe          40  European country codes and the EU zone
north-america    3  United States, Canada, and territories
latin-america   13  Central and South America
africa          18  African country codes
middle-east     13  Gulf states, Israel, and Turkey
oceania         13  Australia, New Zealand, and the Pacific

See one family at a time:

Bash
Bash
reserve groups --family region

Accepted --family values: industry, region, popularity, curated.

Browse a group's extensions without checking anything:

CONSOLE
CONSOLE
$ reserve extensions --group south-asia
 
EXTENSION  RANK  KIND     USED FOR
in           16  country  India · business
pk          105  country  Pakistan · business
np          108  country  Nepal · business
af            -  country  Afghanistan · business
ai.bd         -  country  Bangladesh · tech
bd            -  country  Bangladesh · business
co.bd         -  country  Bangladesh · business
...
 
1-23 of 23 extensions · page 1 of 1 · sorted by popularity (most used first)

Checking a name contacts every extension the selection holds, however large the group. Ask for --page or --page-size to work through it in slices instead; see Filtering, sorting, and paging.

Or let the picker choose for you

Bash
Bash
reserve your-domain-name

Run reserve with just a name, at a terminal, and it opens an interactive picker instead of guessing which extensions to check. See Use the interactive picker.

How casually typed names are handled

A name typed as a person would speak it is converted to a form a registry accepts, and the change is reported rather than applied silently:

CONSOLE
CONSOLE
$ reserve "My Cool Startup!" --tld com
 
note: `My Cool Startup!` is not a name a registry can hold, so `my-cool-startup` is being checked
 
   DOMAIN               STATUS     SOURCE      TIME  NOTE
+  my-cool-startup.com  AVAILABLE  registry  874ms
 
1 available  0 taken  0 unknown   (1 checked)

Names written in Bengali, Arabic, or any other script keep every mark their writer typed (only runs of whitespace collapse to a hyphen) because stripping punctuation from those scripts deletes characters that carry meaning and would check a different name. Typing a name that's already lowercase and clean, like example, triggers no notice at all.

Reading the result table

CONSOLE
CONSOLE
$ reserve your-domain-name --tld com,net,io,dev,com.bd,net.bd
 
   DOMAIN                   STATUS     SOURCE      TIME  NOTE
-  your-domain-name.com     TAKEN      registry  1322ms
+  your-domain-name.com.bd  AVAILABLE  text       656ms
+  your-domain-name.dev     AVAILABLE  registry  1354ms
+  your-domain-name.io      AVAILABLE  registry  1286ms
-  your-domain-name.net     TAKEN      registry  1113ms
+  your-domain-name.net.bd  AVAILABLE  text       627ms
 
4 available  2 taken  0 unknown   (6 checked)

Each row is marked + for available or - for taken, so the symbol carries the meaning too and the table still reads correctly without colour. STATUS is one of AVAILABLE, TAKEN, or UNKNOWN; a zone the public can't register under comes back UNKNOWN with not publicly registrable in its note column. UNKNOWN means the lookup couldn't be answered; it's never a synonym for available. See How a verdict is reached for what each status actually means and why.

The table goes to stdout; progress and the start/finish notes go to stderr, so a pipe receives only data. Add -a/--available-only to print and save only the free names, or --json for machine-readable output:

CONSOLE
CONSOLE
$ reserve your-domain-name --tld com,net --available-only
 
   DOMAIN                STATUS     SOURCE     TIME  NOTE
+  your-domain-name.net  AVAILABLE  registry  842ms
 
1 available  0 taken  0 unknown   (2 checked)

The exit code is 0 when at least one name is available, 1 when the sweep ran and nothing is, and 2 when the arguments were wrong. See Output and exit codes for the full contract, or CLI commands and flags for every flag reserve accepts.

Was this page helpful?

© 2026 Reserve. All rights reserved.