Roblox double jump script

Jump again in mid-air — on keyboard, controller and touch. One LocalScript that uses Roblox's own jump input, so it works on every device.

LocalScriptUpdated November 2, 2026

Where to put it

LocalScript — StarterPlayer > StarterCharacterScripts > DoubleJump (LocalScript). It runs on each player's device.

  1. Insert a LocalScript into StarterPlayer → StarterCharacterScripts and paste the code.

The script

StarterPlayer > StarterCharacterScripts > DoubleJump (LocalScript)
local UserInputService = game:GetService("UserInputService")

local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")

local EXTRA_JUMPS = 1
local jumpsLeft = 0
local canJumpAgain = false

humanoid.StateChanged:Connect(function(_, new)
	if new == Enum.HumanoidStateType.Landed then
		jumpsLeft = EXTRA_JUMPS
		canJumpAgain = false
	elseif new == Enum.HumanoidStateType.Freefall then
		task.wait(0.15) -- small delay so one press doesn't count twice
		canJumpAgain = true
	end
end)

UserInputService.JumpRequest:Connect(function()
	if canJumpAgain and jumpsLeft > 0 then
		jumpsLeft -= 1
		humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
	end
end)

How it works

  • JumpRequest fires for Space, the controller button and the mobile jump button alike.
  • In the air (Freefall), a jump request forces the Humanoid back into the Jumping state — a second jump.
  • Landing resets the counter. Set EXTRA_JUMPS = 2 for a triple jump.

Variations

Higher second jump

Before ChangeState, set humanoid.UseJumpPower = true and raise humanoid.JumpPower for the extra jump, then restore it on Landed.

Double jump as a game pass

Have a server script set a DoubleJump attribute on the player when they own the pass, and check game.Players.LocalPlayer:GetAttribute("DoubleJump") in JumpRequest.

Common mistakes

  • Listening to InputBegan for Space only — mobile and controller players can't double jump.
  • No small delay after leaving the ground: holding Space uses both jumps at once.

FAQ

Does this double jump work on mobile?

Yes. It listens to UserInputService.JumpRequest, which fires for the mobile jump button, keyboards and controllers.

Can exploiters abuse double jump?

Movement is controlled by the player's device, so yes, like any movement. If jumping height matters for competition, check positions on the server.

Keep reading