Roblox teleport script

Two kinds of teleport: a pad that moves players to another spot in the same map, and TeleportService to send them to another place in your game.

ScriptUpdated November 2, 2026

Where to put it

Script — Inside the pad (Workspace > TeleportPad > Script). It runs on the server, so players can't change what it does.

  1. Make two anchored parts: TeleportPad (where players step) and Destination (where they arrive), both in Workspace.
  2. Insert a Script into TeleportPad and paste the code.

The script

Inside the pad (Workspace > TeleportPad > Script)
local Players = game:GetService("Players")

local pad = script.Parent
local destination = workspace:WaitForChild("Destination")
local cooldown = {}

pad.Touched:Connect(function(hit)
	local character = hit.Parent
	local player = Players:GetPlayerFromCharacter(character)
	if not player or cooldown[player] then return end
	cooldown[player] = true
	character:PivotTo(destination.CFrame + Vector3.new(0, 4, 0))
	task.wait(1)
	cooldown[player] = nil
end)

How it works

  • PivotTo moves the whole character, keeping its parts together.
  • The + Vector3.new(0, 4, 0) places them above the destination so they don't get stuck in it.
  • The cooldown stops a player from being teleported many times in one touch.

Variations

Teleport to another place in your game

Add a place in Asset Manager → Places, copy its Place ID, and use TeleportService. It only works in a published game, not in Studio.

local Players = game:GetService("Players")
local TeleportService = game:GetService("TeleportService")

local PLACE_ID = 0 -- the place to send players to
local pad = script.Parent
local sending = {}

pad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if not player or sending[player] then return end
	sending[player] = true
	local ok, err = pcall(function()
		TeleportService:TeleportAsync(PLACE_ID, { player })
	end)
	if not ok then
		warn("Teleport failed:", err)
		sending[player] = nil
	end
end)

Common mistakes

  • Setting only HumanoidRootPart.Position — it can tear the character apart. Use PivotTo or set the root part's CFrame.
  • Testing TeleportService in Studio: teleports between places only work in live servers.
  • No cooldown: the pad fires dozens of times and the player bounces.

FAQ

Why doesn't TeleportService work in Studio?

Teleporting between places needs Roblox's live servers. Test it in the published game; same-place teleports with PivotTo work in Studio.

How do I teleport all players at once?

Pass a list of players to TeleportService:TeleportAsync, for example after a lobby countdown, so they arrive in the same server.

Keep reading