Username and slug rules.
The naming rules that apply to every namespace identifier on Citadel.
What counts as a slug
A slug is the identifier in URLs and git remotes — the part after @ on a profile page, after the organisation root in a repo path, etc. Citadel uses one global pool for both users and organizations, so the rules are the same for both.
The rules
- Length: 3 to 39 characters. Anything shorter triggers E-too_short; anything longer triggers E-too_long.
- Characters: lowercase ASCII letters a-z, digits 0-9, and hyphens -. No spaces, no underscores, no dots, no Unicode.
- Must start with a letter. A slug like 42-acme is rejected.
- Must end with a letter or digit. Trailing hyphens (acme-) are rejected.
- No consecutive hyphens (acme--corp is rejected).
- Not on the reserved list. A small set of slugs (admin, api, help, etc.) are reserved for Citadel's own surfaces and cannot be claimed.
Why these rules
Slugs land in URLs and git remotes; case-insensitivity prevents collisions between visually-identical-but-byte-different names. The hyphen rule + reserved list keep the URL space clean and predictable. The character set is intentionally small — it has to round-trip cleanly through every shell, every browser, every OAuth provider, and every git server in the world.
What to try
- Strip spaces and special characters: My Company → my-company.
- If your preferred slug is reserved, add a suffix or use a domain root.
- If you got E-slug_taken instead, see the slug-taken page.