something sluggish, like? s:='utf8 string with german umlauts'; s2:=UTF8Encode(WideLowerCase(UTF8Decode(s))); I'd suggest to use WideStrings for the internal processing. thanks, dmitry