Imagine you’re a guy named Richard in the 1300s. Your mates aren’t going to call you Rich; they’re going to call you Dick. Why? Because “Rick” rhymes with “Dick.” It sounds ridiculous, but that’s exactly how the system worked. Same thing with Robert becoming Bob (Rob rhymes with Bob) and, you guessed it, William becoming Bill (Will rhymes with Bill).
It was a casual, almost cheeky way to form nicknames. People weren’t trying to be logical; they were just having fun with sounds. And once these rhymes caught on, they spread like wildfire through pubs and villages.
Why Not Just “Will”?
So why didn’t they stick with the obvious? Well, “Will” was already a nickname, but it felt too formal or too common. The English love a good double nickname—take a name, shorten it, then give it a totally different sound. It’s like the linguistic equivalent of adding a silly hat to an outfit.
Plus, “Bill” has a nice, punchy, no-nonsense feel to it. It’s the kind of name you’d trust to fix your car or buy you a round of drinks. Will sounds a bit poetic; Bill sounds like a guy who shows up on time.
President William McKinley's America - CBS News