US Trademark Name Check API
methodology

Methodology

Data as of 2026-09-06. Everything on this page is enforced by the build pipeline, not by editorial review. Checks LIVE USPTO federal filings bearing word text, as of the data date below — NOT a legal clearance search, and never legal advice.

Source

USPTO public trademark search (tmsearch.uspto.gov), the agency's own same-origin search backend, fetched keylessly. Live federal applications and registrations bearing word text, all filing years. The harvest pulls every live filing bearing word text (the source reported 4,432,597 at pull time), paced and resumable, and the index is refused outright if the pull collapses or known-answer marks go missing (refuse-don’t-overwrite).

The exact key

Unicode-decompose (NFKD), strip combining marks, uppercase, & → AND, then drop every character outside A–Z0–9. “Café Olé” → CAFEOLE; “M&M’s” → MANDMS. Names that normalize to nothing (pure symbols) are excluded and counted on the coverage page.

TM-KEY v1 — the phonetic key, fully specified

A deliberately COARSE sound-alike key: it exists to catch creative spellings of the same sounds (“KWIK”/“QUICK”, “STARBUX”/“STARBUCKS”), not to model pronunciation. Never a similarity judgment in the legal sense. Applied to the exact key, in this exact order:

  1. Ordered substitutions (regex, applied top to bottom, global):
#patternreplacement
1QUKW
2PHF
3CKK
4SCHSK
5C(?=[EIY])S
6CK
7QK
8XKS
9ZS
10D(?=G)— (delete)
11GK
12W(?=[^AEIOUY]|$)— (delete)
13H— (delete)
  1. Collapse runs of the same character (KOOKLE → KOKLE).
  2. Drop vowels A E I O U Y except a leading vowel (KOKLE → KKL).

The reference implementations — JavaScript (generated from the same rule table as the Python that built this index) — are proven equivalent on a vector suite on every build. Two rules were removed during development for honest reasons documented in the source: context-dependent rules break under exactly the vowel transpositions this key exists to catch.

Sharding

shard = fnv1a32(key) % 4096, lowercase 3-digit hex. FNV-1a, 32-bit, over the key’s UTF-8 bytes. All 4096 shard files exist in both trees — a missing key is an empty lookup in a present file, never a 404 you could misread as “name is free”.

Caps — and why n is the number to trust

Some keys are shared by thousands of live marks. Each key ships its TRUE total n, plus at most 100 (exact) / 50 (phonetic) records, registered marks first, then newest filings. The list is a sample; n is the answer.

What this API deliberately does not do

Verify any record

Every record carries its USPTO serial number. Paste it into TSDR or the USPTO’s trademark search and the filing date, status and registration number will match. Sampled records are re-checked against the USPTO live on every build of this dataset.

Refresh cadence

Quarterly. data_as_of in /v1/meta.json is the pull date; marks filed after it are invisible until the next refresh — one more reason this is a first-pass screen, never clearance.