Own tool
Prevent unclaimable usernames.
Strict, fast username and identifier validation for .NET. Check a handle, slug, or account name before it can be claimed.
This is a library you add to a product, not a live web app. The default policy is intentionally strict — for most applications, configuration is optional. Private product names stay out of the global lists; those go in AdditionalReserved.
View on GitHub
- Author
- Perry3Dnl
- License
- MPL-2.0
- Frameworks
- .NET Standard 2.0+
- Status
- Active development
- NuGet
- 0.1.0 coming soon
What it protects against
- Reserved names
- Blocks critical usernames like admin, support, and system, plus global brand and technology impersonation.
- Separator tricks
- Compact matching still catches variants such as admin_user, admin-user, and admin.user when those characters are allowed.
- Leetspeak
- Bounded substitutions such as adm1n, 4dm1n, and @dm1n.
- Unicode lookalikes
- Stops selected Cyrillic, Greek, and diacritic impersonation characters that look the same at a glance.
- Fast and strict
- No heavy dependencies. English by default; Dutch, German, or all three together. Length, numbers, and -/_ are rejected unless you opt out.
What it catches
- admin → reserved role
- supportive → support (strict partial match)
- john-doe → blocked character
- ordinary2 → numbers not allowed
- аpple → apple (Cyrillic lookalike)
- N1k3 → nike (when numbers are allowed)
Quick start
builder.Services.AddUnclaimable();
if (UnclaimableChecker.Default.IsClaimable(userName))
{
// Passed the strict English default plus global datasets.
}
Packages
- Unclaimable
- netstandard2.0 dependency-free core and embedded datasets
- Unclaimable.AspNetCore
- net8.0 DI, live character policy, and [ClaimableUsername] validation
Not on NuGet yet. After 0.1.0 is published: dotnet add package Unclaimable --version 0.1.0
github.com/Perry3Dnl/Unclaimable
Write-up on Projects
Back to projects