Skip to main content

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.