• Why not use UUIDs for this? They're unique so you don't have to worry about checking if an ID is already taken and you can avoid the encoding/decoding issues. There's even lexicographically sortable UUIDs (ulid) which can be a rather useful proprety and don't use any characters that can trip you up.

    I would also caution against assigning meaning to names. Even though something like MEET_ or USR_ might seem innocuous such naming conventions are likely to eventually be broken. Instead make the object tell you what it is, a user vs a meeting or something else entirely.