...
Trim leading and trailing whitespace
Transform characters to their ASCII equivalents (see above)
Lowercase all ASCII characters
Convert all non-normal characters (alphanumeric, dashes, underscores, colons) to dashes
Remove all leading and trailing dashes
Merge multiple dashes into a single dash
Merge multiple colons into a single colon
Remove all leading and trailing dashes next to colons (e.g.
fragment:-test
→fragment:test
)Remove all leading and trailing dashes next to underscores (e.g.
_-template-
→_template
)Remove all leading and trailing colons
Modifications by Wikijump
Because the current normalization strategy is very ASCII / Latin-centric, languages such as CJK ones are entirely excluded from having valid characters in page slugs, which makes it difficult to create native pages. As part of WJ-792, Wikijump added additional characters which are supported by normal form, while still retaining the general properties of normalization.
See (TODO) for more information on internationalized normal form.