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:
- Ordered substitutions (regex, applied top to bottom, global):
| # | pattern | replacement |
|---|---|---|
| 1 | QU | KW |
| 2 | PH | F |
| 3 | CK | K |
| 4 | SCH | SK |
| 5 | C(?=[EIY]) | S |
| 6 | C | K |
| 7 | Q | K |
| 8 | X | KS |
| 9 | Z | S |
| 10 | D(?=G) | — (delete) |
| 11 | G | K |
| 12 | W(?=[^AEIOUY]|$) | — (delete) |
| 13 | H | — (delete) |
- Collapse runs of the same character
(
KOOKLE→KOKLE). - 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
- No availability verdicts. It reports live filings that share your name’s keys. “0 matches” means exactly that — not “free to use”: dead marks can retain rights, design marks and state and common-law rights are invisible here, and likelihood of confusion is a legal judgment about more than spelling.
- No similarity scores. Match or no match per documented key; no proprietary 87%-similar numbers.
- No goods/services analysis. International class numbers are republished as filed; whether classes conflict is legal analysis.
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.