npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

domaingenie

v1.0.1

Published

A fast and intelligent domain name generator from natural language

Downloads

75

Readme

Domain Genie

Build Test NPM License

A library for generating and ranking domain name suggestions including AI-generations.

Features

  • Expands queries with synonyms
  • Generates permutations with prefixes, suffixes, and hyphen variants
  • Filters and ranks domains based on TLD popularity and heuristics
  • Modular generation strategies execute in parallel and tag results with their source

Installation

npm install domaingenie

Usage

import { DomainSearchClient } from 'domaingenie';

const client = new DomainSearchClient();
const results = await client.search({ query: 'foo bar' });
console.log(results.results);

API

new DomainSearchClient(initOptions?)

Create a client with default search configuration.

Init Options

| Name | Type | Default | Description | | --- | --- | --- | --- | | supportedTlds | string[] | all known TLDs | TLDs allowed in results. | | defaultTlds | string[] | ['com','ng'] | TLDs always included when generating names. | | limit | number | 20 | Maximum number of domains returned. | | prefixes | string[] | – | Prefixes used for generating variants. | | suffixes | string[] | – | Suffixes used for generating variants. | | maxSynonyms | number | 5 | Maximum number of synonyms to expand (capped at 10). | | tldWeights | Record<string, number> | – | Weights used when ranking TLDs. | | checkAvailability | boolean | false | Remove registered domains using DNS-over-HTTPS lookups. |

client.search(options)

Search for domain names. options extend the init options so each call can override them.

Search Options

| Name | Type | Default | Description | | --- | --- | --- | --- | | query | string | – | Search term to expand. | | location | string | – | ISO country code used to include a ccTLD. | | debug | boolean | false | When true, includes extra debug fields. | | useAi | boolean | false | Expand ideas using AI generation. | | supportedTlds | string[] | inherits from init | TLDs allowed in results. | | defaultTlds | string[] | inherits from init | TLDs always included when generating names. | | limit | number | inherits from init | Maximum number of domains returned. | | checkAvailability | boolean | inherits from init | Enable availability lookups after ranking. |

Response

| Field | Type | Description | | --- | --- | --- | | results | DomainCandidate[] | List of generated domains ordered by score. | | invalidCandidates | DomainCandidate[] | Candidates filtered out because they appear registered or invalid. | | success | boolean | Indicates whether the search completed successfully. | | message | string? | Error message when success is false. | | includesAiGenerations | boolean | Whether AI-generated names were requested. | | metadata | object | Runtime details about the search (see below). |

DomainCandidate

| Field | Type | Description | | --- | --- | --- | | domain | string | Fully qualified domain name. | | suffix | string | TLD without the leading dot. | | score | { total: number, components: Record<string, number> } | Final score and contributing factors. | | availability | 'unregistered' \| 'registered' \| 'unsupported' \| 'invalid' \| 'unknown' | Status derived from DNS lookups. | | aiGenerated | boolean? | Marks names produced by AI. | | variantTypes | string[]? | Types of permutations used (only with debug). | | strategy | string? | Strategy that generated the domain. |

Metadata

| Field | Type | Description | | --- | --- | --- | | searchTime | number | Time in milliseconds spent generating suggestions. | | totalGenerated | number | Count of candidates evaluated before limiting. | | filterApplied | boolean | Whether a custom supportedTlds filter was used. |

Development

  • npm run build – build the library
  • npm test – run the test suite