Split into teams
A number of groups, or groups of a size. Shuffled properly, and dealt so the remainder spreads out instead of landing on one group.
Saved in the address bar — bookmark or share this page and the list comes with it.
crypto.getRandomValues, the browser's cryptographic random source, mapped to your list length using rejection sampling so no entry is even slightly favoured by the arithmetic. It is cryptographic-quality pseudorandomness — not "true" randomness harvested from physical noise, which is a different and stronger claim we are not making. Nothing about your list is sent anywhere, and nothing is weighted unless you say so.Shuffled, then dealt
The split works the way you would deal cards: the list is shuffled with a Fisher–Yates shuffle using the cryptographic random source, then dealt one at a time around the groups. The consequence is that when the numbers do not divide evenly, the remainder is spread — nineteen people into four groups gives 5, 5, 5, 4, not 5, 5, 5 and a lonely 4 built last.
That is a small thing that matters in a classroom, where a visibly short group reads as a punishment.
The two modes are not interchangeable
Choosing "four groups" fixes the number of groups and lets the sizes fall out. Choosing "groups of four" fixes the size and lets the number of groups fall out — including a possible undersized final group. If you have four tables, use the first. If you have an activity that needs exactly four people, use the second and deal with the remainder deliberately.