Théo William est formé au CS Bourgoin-Jallieu au poste de troisième ligne[2], avant de rejoindre le Lyon OU. Il fait ses débuts en professionnel le contre le Stade toulousain, en remplaçant Alex Tulou à vingt minutes du terme de la rencontre. Au cours de ce match, il reçoit un carton jaune à une minute de la fin.
Il est titularisé pour la première fois le contre Agen.
Il est prêté à l'US bressane en qualité de joker médical en 2021[3]. Pour son premier match de Pro D2, il marque un essai face au FC Grenoble. Après un match nul contre Provence Rugby, il fait partie de l'équipe de la semaine dans les colonnes du Midi olympique[4].
En , après seulement deux matchs dans l'Ain, il est rappelé par le LOU pour pallier les blessures de Killian Geraci et de Mathieu Bastareaud, ainsi que le départ en équipe de France de Dylan Cretin. Il fait tout de même son retour au club en février après avoir joué un match avec le LOU[5].
Le , William dispute son premier match de Champions Cup sur le terrain des Bulls.