The Developer Hub is now deprecated and information on this page may no longer be accurate. To see our new and improved documentation, please click here. You can read more about the future of documentation here.
Collapse Sidebar




The Character property contains a reference to a Model containing a Humanoid, body parts, scripts and other objects required for simulating the player’s avatar in-game. The model is parented to the Workspace, but may be moved. It is automatically loaded when Players/CharacterAutoLoads is true, but can be manually loaded otherwise using Player/LoadCharacter.

Initially, this property is nil then set when the player’s character first spawns. Use the Player/CharacterAdded event to detect when a player’s character properly loads, and the Player/CharacterRemoving event to detect when the character is about to despawn. Avoid using Instance/GetPropertyChangedSignal on this property.


LocalScripts that are cloned from StarterGui or StarterPack into a player’s Backpack or PlayerGui are often run before the old Character model is deleted. Player.Character still refers to a model, but that model’s parent is nil and it is has been destroyed. Because of this, if the Character already exists, you should check to make sure that the Character’s parent is not nil before using it.

So if you’re writing a LocalScript under the StarterGui or StarterPack that requires access to the player’s character, use this:

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
if not character or not character.Parent then
    character = player.CharacterAdded:wait()