The problem with base64url is that ~ and . are not letters. This means that double-clicking on something encoded with base64url isn’t going to select the whole thing if you want to copy-paste it. This is annoying needless friction in a huge number of use cases. Base62 encoding (0-9A-Za-z) is almost as efficient as base64url and retains URL safety but is more easily copy-pasted.
If you want to eliminate ambiguity for human readers, you can drop to Base58 but in almost all cases, if you are BaseXX-encoding something, it’s long enough that copy-pasting is the norm, so it doesn’t usually matter.
Base32 is far more efficient than that. Base32 allows you to encode 5 bytes in 8 symbols, as compared to Base64, which allows you to encode 6 bytes in 8 symbols. While the exact efficiency will vary based on how many bytes your message is, for the most part Base32 produces output that is only 20% larger than Base64, let alone Base62.
The issue remains: "-" breaks double clicking to select the full string, which means you'll have to manually select all the characters before copying.
Same thing happens with UUIDs: using double clicking, you can only select one block at a time.
This isn't a major issue, which means there's no easy answer and it generally comes down to preference if this is a requirement or not.
> The problem with base64url is that ~ and . are not letters. This means that double-clicking on something encoded with base64url isn’t going to select the whole thing
Well, you're in luck: tilde and dot aren't part of base64url
The issue remains: "-" breaks double clicking to select the full string, which means you'll have to manually select all the characters before copying.
Same thing happens with UUIDs: using double clicking, you can only select one block at a time.
This isn't a major issue, which means there's no easy answer and it generally comes down to preference if this is a requirement or not.
Since the encoding is explicitly for use in URLs and filenames, and those generally aren’t selectable by double-clicking either, I don’t see what the problem is.
If you want to eliminate ambiguity for human readers, you can drop to Base58 but in almost all cases, if you are BaseXX-encoding something, it’s long enough that copy-pasting is the norm, so it doesn’t usually matter.
https://en.wikipedia.org/wiki/Base62