Verification codes your users will actually remember

Replace frustrating six-digit codes with memorable two-word phrases. More secure than traditional codes, infinitely better user experience.

Traditional vs. WordAuth
Six-digit code
749382
Hard to remember, easy to mistype
Two-word code
red·cat
Intuitive, memorable, and easy to type
>1 Million
Possible combinations
More secure than 6-digit codes with 1M+ combinations
<10min
Integration time
Docs and SDKs for any tech stack
2 words
Per verification code
Short, pronounceable, and easier to relay
Drop-in
Migration model
Designed to replace numeric OTP flows

Why developers choose WordAuth

Built for modern authentication flows

Better Security

Over one million unique word-pairs provide better security compared to six-digit codes.

Better UX

Users remember words better than numbers. Reduce friction and increase conversion rates.

Easy Integration

Drop-in replacement or addition to your existing verification flow.

Coming Soon

Global Support

Works seamlessly across languages and cultures with our carefully curated word lists.

How it works

Simple integration, powerful results

1

User requests verification

Your app calls our API when a user needs to verify their identity.

2

We generate a word pair

Our system randomly selects two words from our curated lists - like "Swift Falcon".

3

User enters the code

They type two memorable words instead of struggling with digit sequences.

Code Example
import { WordAuth } from "wordauth";

const wordauth = new WordAuth("sk_live_your_api_key");

// Generate a word pair
const { otp_id, code } = await wordauth.generate();
// code: "blue·whale"

// Validate the user's input
const result = await wordauth.validate({ otp_id, code: userInput });
if (result.valid) {
  console.log("Verified!");
}

How we keep word pairs safe

Every word in our corpus goes through a rigorous multi-stage sanitization pipeline before it can appear in a verification code.

Profanity & Slur Filtering

Every candidate word is run against an extensive blocklist covering profanity, slurs, and derogatory speech.

Cross-Cultural Review

Words that are innocuous in one language but offensive or inappropriate in another are flagged and removed, ensuring pairs are safe for a global audience.

Visual Ambiguity Removal

Words that are visually similar (e.g. "rn" vs "m", "l" vs "1") are excluded to prevent transcription errors and impersonation of legitimate codes.

Phonetic Disambiguation

Homophones and near-homophones are culled so that when a word pair is read aloud — in a support call or over the phone — there is no ambiguity about what was said.

Semantic Pair Validation

After individual words pass all checks, the generated pair itself is evaluated to ensure the combination does not form an unintended phrase, idiom, or offensive sequence.

Continuous List Maintenance

Our word corpus is versioned and reviewed on an ongoing basis. Newly reported words are triaged within 24 hours and removed from rotation immediately upon confirmation.

Launching June 1st

Enter your email and we'll notify you the moment we go live.