Roblox Studio error

TweenService:Create property named 'X' cannot be tweened due to type mismatch

What TweenService:Create property named 'X' cannot be tweened due to type mismatch means in Roblox Studio, the three things that cause it with the code that triggers each, and the fix for each one.

Updated 23 October 20263 min readErrorLuau

In short

The third argument of TweenService:Create is a table of goals: property names and the values to tween to. Each value must be the same type as the property, and each name must be a real property of that object. The message tells you which: (property is a 'Vector3', but given type is 'CFrame') means the goal for Position was a CFrame. no property named 'Colour' means the object has no property with that name.

On this page
  1. What it means
  2. Causes and fixes
  3. Fix it with RoCode
  4. Find the line
  5. Questions
  6. Sources

What the message means

Output (example)
ServerScriptService.DoorTween:6: TweenService:Create property named 'Position' cannot be tweened due to type mismatch (property is a 'Vector3', but given type is 'CFrame')

Other forms of the same message:

  • TweenService:Create no property named 'Colour' for object 'Door'

Only some types can be tweened: numbers, booleans (they switch at the end), CFrame, Vector3, Vector2, Color3, UDim2, UDim, Rect and EnumItem. A string goal can never be tweened.

The object to tween must be the first argument. Passing a value there instead gives Unable to cast value to Object.

Causes and fixes

Three things cause this error in practice. Each one below has the smallest code that triggers it, then the fix.

The goal value is the wrong type

Position is a Vector3 and CFrame is a CFrame. Mixing them up, or giving a number for a UDim2 UI size, fails.

Breaks Script in ServerScriptService named DoorTween
local TweenService = game:GetService("TweenService")

local door = workspace:WaitForChild("Door")
local info = TweenInfo.new(1)

-- Position wants a Vector3, this is a CFrame
local tween = TweenService:Create(door, info, { Position = door.CFrame * CFrame.new(0, 8, 0) })
tween:Play()

Give each goal the type of its property, or tween the property that matches the value you have.

Fixed Script in ServerScriptService named DoorTween
local TweenService = game:GetService("TweenService")

local door = workspace:WaitForChild("Door") :: BasePart
local info = TweenInfo.new(1)

local tween = TweenService:Create(door, info, { CFrame = door.CFrame * CFrame.new(0, 8, 0) })
tween:Play()

The property name is wrong or does not exist on that object

Goal names are plain strings, so a typo is only caught when the tween is created: Colour for Color, Transparancy, or BackgroundTransparency on a part (that is a UI property).

Breaks Script in ServerScriptService named DoorTween
local TweenService = game:GetService("TweenService")

local door = workspace:WaitForChild("Door")

-- TweenService:Create no property named 'Colour' for object 'Door'
TweenService:Create(door, TweenInfo.new(1), { Colour = Color3.new(1, 0, 0) }):Play()

Use the exact property name shown in the Properties window for that object.

Fixed Script in ServerScriptService named DoorTween
local TweenService = game:GetService("TweenService")

local door = workspace:WaitForChild("Door") :: BasePart

TweenService:Create(door, TweenInfo.new(1), { Color = Color3.new(1, 0, 0) }):Play()

A Model was tweened like a part

A Model has no Position, CFrame or Color property of its own, so TweenService:Create(model, ...) with those goals fails with no property named.

Breaks Script in ServerScriptService named Elevator
local TweenService = game:GetService("TweenService")

local elevator = workspace:WaitForChild("Elevator") -- a Model

-- TweenService:Create no property named 'CFrame' for object 'Elevator'
TweenService:Create(elevator, TweenInfo.new(2), { CFrame = CFrame.new(0, 20, 0) }):Play()

Tween the model's PrimaryPart if every other part is welded to it, or tween a CFrameValue and move the model with PivotTo as it changes.

Fixed Script in ServerScriptService named Elevator
local TweenService = game:GetService("TweenService")

local elevator = workspace:WaitForChild("Elevator") :: Model

local driver = Instance.new("CFrameValue")
driver.Value = elevator:GetPivot()
driver.Changed:Connect(function(value: CFrame)
	elevator:PivotTo(value)
end)

local goal = elevator:GetPivot() + Vector3.new(0, 20, 0)
TweenService:Create(driver, TweenInfo.new(2), { Value = goal }):Play()

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.

For example: ServerScriptService.DoorTween:6: TweenService:Create property named 'Position' cannot be tweened due to type mismatch (property is a 'Vector3', but given type is 'CFrame')

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

  1. Open Output (Window menu, or the Script tab), clear it with Ctrl+K (⌘K on Mac), and press Play.
  2. Find the first red line. It starts with the script's place in the Explorer and the line number, such as ServerScriptService.Shop:12:.
  3. Click the red line. Studio opens that script with the cursor on the failing line.
  4. Read the lines between Stack Begin and Stack End under it: they list the calls that led there, newest first, so you can see which function called the broken one.
  5. Still not sure which value is wrong? Add print(typeof(x), x) just above the line, or set a breakpoint on it and read the values in the Watch window.

Questions

What types can TweenService animate?

Numbers, booleans, CFrame, Vector3, Vector2, Color3, UDim2, UDim, Rect and EnumItem properties. Strings cannot be tweened.

How do I tween a whole model?

Weld the parts to the PrimaryPart and tween the PrimaryPart, or tween a CFrameValue and call model:PivotTo(value) each time it changes, as in the code above.

Why does tweening Position on a UI frame fail?

On UI, Position and Size are UDim2 values. Use UDim2.new(...) or UDim2.fromScale(...) as the goal, not a Vector3 or numbers.

Can RoCode fix it?

Yes. Paste the Output line into RoCode. It reads the tween in the script in your open place and corrects the property name or the goal type.

Sources and further reading

How the code was checked: every block marked Fixed passes Luau's strict type checker against Roblox's API definitions (luau-lsp, 23 October 2026), and every block marked Breaks compiles and fails only when it runs. The message wording was checked against the message format strings in Roblox Studio itself (macOS build of 13 October 2026) on 23 October 2026. A type check catches misspelt APIs and wrong types, not game logic, so playtest in Studio before you publish.

Stop hunting errors line by line.

RoCode reads the scripts in your open place, fixes the error where it happens and tells you what it changed. Free every day, no card required.