Unprofane

Can this username be shown?

A username is the one text every user writes and every other user sees, and it is where word lists fail worst: a handle has no spaces, no context, and every trick a person can type. This is the check built for it.

Enter to check

Live, on the real engine. Try your own.

How a handle is read

Split into words

ilovesh1t is read as i love sh1t: camelCase, digits and underscores are split, then the handle is segmented against a frequency list, so a word glued to its neighbours still matches.

Read backwards

tihs_xX is checked reversed. Usernames are the one context where a reversed word is worth trying, so it is tried only there.

Reserved names

admin, support, moderator and your own brand come back as the reserved category, so the form can say "that name is taken" rather than "that name is rude".

  1. 0.0%

    false positives on innocent names and words

    Dickinson gets through

    Dickinson, Scunthorpe, cockatoo and Sussex are on the innocent list, and each one is a test.

    The Scunthorpe Test, rules alone, 15,530 public items, 2026-10-12

  2. 0.918

    F1, rules alone

    F1 on the public split

    Precision and recall in one number: profanity caught, weighed against innocent text wrongly flagged.

    The Scunthorpe Test, rules alone, 2026-10-12

Recipes

A username hook for the stack you already have. Each is a complete file; replace the key.

Or raw HTTP in eight languages, and the MCP server for an agent that adds the hook for you.