In short
An animation can only be loaded on an Animator whose character (or rig) is in the game world, under Workspace. When LoadAnimation runs on one that is not, Roblox cannot reach the service that fetches animation data and prints this error. The usual reasons: the script ran before the new character was parented to Workspace, it kept using the old character after the player died and respawned, or the rig sits in ReplicatedStorage or ServerStorage.
- Before loading, make sure the character is in Workspace:
character:IsDescendantOf(workspace), or wait forAncestryChanged. - Load animations again for every new character, from
CharacterAddedor a script in StarterCharacterScripts, never from a character saved before a respawn. - Load NPC animations only after the NPC model is moved into Workspace.
What the message means
Players.Builderman.Backpack.Sword.SwingAnimation:11: Cannot load the AnimationClipProvider Service.
The wording sounds like a problem with Roblox itself, but in almost every case it is about where the Animator is when you call LoadAnimation. Nothing is wrong with your animation ID; that would be a different message, such as Failed to load animation with sanitized ID.
It often appears only sometimes, for example on a slow join or right after a death, because it depends on timing. That is a sign to add a check rather than a task.wait that only hides it on fast machines.
Causes and fixes
Three things cause this error in practice. Each one below has the smallest code that triggers it, then the fix.
- Loading as soon as CharacterAdded fires
- The script kept the character from before a respawn
- The NPC or rig is still in storage
Loading as soon as CharacterAdded fires
CharacterAdded can fire before the new character has been parented to Workspace. Loading straight away in that moment hits a character that is not in the world yet.
local Players = game:GetService("Players")
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507770239"
Players.PlayerAdded:Connect(function(player: Player)
player.CharacterAdded:Connect(function(character: Model)
local humanoid = character:WaitForChild("Humanoid") :: Humanoid
local animator = humanoid:WaitForChild("Animator") :: Animator
-- the character may not be in Workspace yet:
-- Cannot load the AnimationClipProvider Service.
animator:LoadAnimation(animation):Play()
end)
end)
Wait until the character is inside Workspace, then load. AncestryChanged fires when it gets there.
local Players = game:GetService("Players")
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507770239"
local function onCharacterAdded(character: Model)
while not character:IsDescendantOf(workspace) do
character.AncestryChanged:Wait()
end
local humanoid = character:WaitForChild("Humanoid") :: Humanoid
local animator = humanoid:WaitForChild("Animator") :: Animator
animator:LoadAnimation(animation):Play()
end
Players.PlayerAdded:Connect(function(player: Player)
player.CharacterAdded:Connect(onCharacterAdded)
end)
The script kept the character from before a respawn
A LocalScript in StarterPlayerScripts runs once per session. If it saves player.Character at the top, that variable still points at the old, removed character after the player dies, and every load after the first death fails. Tools that keep an Animator reference from their first equip do the same.
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
-- saved once: after a respawn this is the old, removed character
local character = player.Character or player.CharacterAdded:Wait()
local animator = (character:WaitForChild("Humanoid") :: Humanoid):WaitForChild("Animator") :: Animator
local wave = Instance.new("Animation")
wave.AnimationId = "rbxassetid://507770239"
UserInputService.InputBegan:Connect(function(input: InputObject, processed: boolean)
if not processed and input.KeyCode == Enum.KeyCode.G then
-- Cannot load the AnimationClipProvider Service. (after the first death)
animator:LoadAnimation(wave):Play()
end
end)
Look the Animator up from the current character each time, or load the track again in CharacterAdded. Simplest of all: move the LocalScript to StarterCharacterScripts, which runs it again for every new character.
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local wave = Instance.new("Animation")
wave.AnimationId = "rbxassetid://507770239"
local waveTrack: AnimationTrack? = nil
local function onCharacterAdded(character: Model)
waveTrack = nil
while not character:IsDescendantOf(workspace) do
character.AncestryChanged:Wait()
end
local animator = (character:WaitForChild("Humanoid") :: Humanoid):WaitForChild("Animator") :: Animator
waveTrack = animator:LoadAnimation(wave)
end
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
task.spawn(onCharacterAdded, player.Character)
end
UserInputService.InputBegan:Connect(function(input: InputObject, processed: boolean)
if not processed and input.KeyCode == Enum.KeyCode.G and waveTrack then
waveTrack:Play()
end
end)
The NPC or rig is still in storage
A rig in ReplicatedStorage or ServerStorage, or a clone that has not been given a parent yet, is not in the world. Loading its animations before moving it into Workspace fails the same way.
local ServerStorage = game:GetService("ServerStorage")
local idle = Instance.new("Animation")
idle.AnimationId = "rbxassetid://507766388"
local npc = (ServerStorage:WaitForChild("Shopkeeper") :: Model):Clone()
local animator = (npc:WaitForChild("Humanoid") :: Humanoid):WaitForChild("Animator") :: Animator
-- the clone has no parent yet: Cannot load the AnimationClipProvider Service.
animator:LoadAnimation(idle):Play()
npc.Parent = workspace
Parent the clone to Workspace first, then load and play.
local ServerStorage = game:GetService("ServerStorage")
local idle = Instance.new("Animation")
idle.AnimationId = "rbxassetid://507766388"
local npc = (ServerStorage:WaitForChild("Shopkeeper") :: Model):Clone()
npc.Parent = workspace
local animator = (npc:WaitForChild("Humanoid") :: Humanoid):WaitForChild("Animator") :: Animator
local track = animator:LoadAnimation(idle)
track.Looped = true
track:Play()
An NPC built in Studio needs an Animator inside its Humanoid (or AnimationController). Insert one if the model has none.
Fix it in your place
Paste the error, RoCode fixes it in your place
Copy the line from Output and paste it here. RoCode opens the script it names in the place you have open in Studio, works out which of the causes above it is, and edits the code there instead of handing you a snippet to paste.
RoCode is an AI agent for Roblox Studio: it reads the scripts in the place you have open, finds the line and edits it there, and every change is an undo point. It runs on Windows or macOS with a desktop browser. Free to start, with free credits every day.
How to find the line that causes it
- Click the red line in Output to open the script at the
LoadAnimationcall. - Above the call, add
print(animator:IsDescendantOf(workspace)).falseconfirms the cause; then work out where the character or rig is at that moment. - If it only happens after dying, look for a character or Animator stored in a variable at the top of the script.
Questions
Is Cannot load the AnimationClipProvider Service a Roblox bug?
Almost always not. It means LoadAnimation ran on a character or rig that is not in Workspace at that moment. Check where it is before loading.
Why does it happen after I respawn?
The script still holds the character from before the death, which Roblox removed. Load again for each new character, or put the LocalScript in StarterCharacterScripts.
Does adding task.wait fix it?
Sometimes, by luck of timing. Waiting until character:IsDescendantOf(workspace) is true fixes it every time.
Can RoCode fix it?
Yes. Paste the Output line into RoCode. It reads the scripts in your open place and makes the animation load on the current character once it is in Workspace.
Sources and further reading
- Roblox Creator Docs: Animator. LoadAnimation and replication
- Roblox Creator Docs: Player.CharacterAdded
- Roblox Developer Forum: Cannot load the AnimationClipProvider Service. characters parented to nil
- Roblox Developer Forum: Error - Cannot load the AnimationClipProvider service. respawns and tools
How the code was checked: every block marked Fixed passes Luau's strict type checker against Roblox's API definitions (luau-lsp, 5 November 2026), and every block marked Breaks compiles and fails only when it runs. The message wording was checked against the message strings in Roblox Studio itself (macOS build installed 2 November 2026) and the Animator:LoadAnimation reference on 5 November 2026; the causes against the Roblox Developer Forum threads listed in Sources. A type check catches misspelt APIs and wrong types, not game logic, so playtest in Studio before you publish.