CharacterAdded fires off when the model of the character enters the workspace for the very first time. To my understanding. Which means that it doesnt wait for its children to replicate before running some code. Thats why I prefer CharacterAppearanceLoaded in a LocalScript inside StarterPlayerScripts. In any case, if you want scripts to modify your players character, its better off anyway to place it inside StarterCharacter as that script is placed inside the character model each time the player spawns and then you can more reliably manipulate the rest.