The name gender database
Eight million names across 198 countries, assembled from named public sources rather than scraped and blended into an opaque blob. Every answer reports which layer it came from.
100 free credits every day. No card.
The counted layer
These seven sources publish real birth-registration volumes, which is what makes an observed probability possible rather than an asserted one.
They are named rather than summarised because the provenance is the product. If a result surprises you, you can go to the statistics office that published the underlying file and check it yourself, which is not something a blended proprietary corpus lets you do.
The counted layer is also why coverage looks lopsided by country. It is heavily European and North American — not because those names are more important, but because those governments publish name counts and most do not.
| Source | Coverage | Counted records |
|---|---|---|
| SSA | United States, 1880–2024 | 104,745 |
| ONS | England and Wales | 77,940 |
| INSEE | France, 1900–2025 | 48,471 |
| StatCan | Canada, table 17-10-0147 | 18,305 |
| INE | Spain, national totals | 9,900 |
| CSO | Ireland, VSA50 + VSA60 | 6,021 |
| SSB | Norway, table 10467 | 1,964 |
The uncounted layer
Everything outside those seven countries rests on WGND 2.0, a CC0 dataset covering 195 countries and territories. It records that a name is attested with a gender in a place. It does not record how many people that was.
We do not blur the two together. Answers from this layer return total_names: 0 and confidence: unverified, and their probability is capped at 95. You can filter on that field, which is the entire point of exposing it.
Versioned, and reversible
The live lookup is a compiled snapshot, swapped in atomically. Every API response carries a data_version, so when a result changes between two runs the first question has an answer instead of a theory.
A snapshot only goes live after a benchmark run and the full test suite pass, and a bad one can be rolled back to the previous version without a redeploy.
php artisan lookup:build
php artisan lookup:benchmark --min-coverage=95 --min-accuracy=95
php artisan test
What is deliberately not in it
There is no Hebrew name data, so Hebrew names return null rather than a guess. Thai coverage sits at 3% because the only way to raise it today would be to widen the index until short skeletons collide, which we measured: coverage would jump to 20/20 and eight of those twenty answers would be wrong.
We publish those rows rather than averaging them away. The full table is in the coverage notes.
Questions
Can I download the database?
No. The service is the API and the bulk file processor. The underlying public sources are named above and are downloadable from the statistics offices themselves.
How often is it updated?
When a source publishes. Imports are idempotent per source, so a re-import rewrites the same key rather than duplicating it, and each rebuild produces a new data_version.
Where does an individual answer come from?
The source field on every response: db for a direct match, script for a bridged non-Latin input, fuzzy for a near-spelling match with matched_as naming the entry, llm for the opt-in model fallback, none when there is no answer.
Do you store the names I send?
What is retained and for how long is set out in the data processing agreement, which is short and specific.
Related pages
Every name lookup returns a probability, a sample size and a confidence tier. What each one measures, how the tiers are set, and where to put your threshold.
Append a gender column to a customer list, CRM export or lead database, with a confidence field you can filter on and no monthly credit expiry.
Upload a CSV or XLSX name list and get a gender column back, with confidence fields, automatic deduplication and the cost shown before charging.
A reproducible benchmark across 4,610 names, 25 countries and nine writing systems. Two scripts return almost nothing, and we publish those numbers too.
What to measure before you pick a vendor, why a single accuracy percentage tells you nothing, and how to run the same test on all of them — including us.
Check it against your own list
Every number on this page is reproducible with a free key. If your data breaks it, that is the more interesting result.