How the strings are generated
Every character comes from crypto.getRandomValues(), the browser's cryptographically secure random number generator, which is seeded by the operating system. It is not Math.random(): that function is fast but predictable, and its output can be reconstructed from a few samples, so it must never be used for tokens, passwords or invite codes.
Turning random bytes into characters has a classic trap. With a 62-character alphabet, byte % 62 makes the first 8 characters slightly more likely, because 256 is not a multiple of 62. This generator uses rejection sampling: any byte at or above 248 (the largest multiple of 62 below 256) is thrown away and a new one is drawn, so every character has exactly the same probability. Alphabets larger than 256 characters draw two bytes at a time.
Nothing is sent to a server. The strings exist only in your browser tab until you copy or download them.