PERRY3D SOFTWARE, SIMULATION & WEB DEVELOPMENT

Own tool

Unclaimable icon: a shield blocking stacked user profiles.

Unclaimable

Active development. Preparing the first public NuGet release, 0.1.0.

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

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