Roblox Killer or Innocent Script (November 2026)

PUBLISHEDUPDATED
1 Available ScriptFree

Keeping up after a new update in Killer or Innocent can be pretty tough when everyone else already has an edge. Using a Killer or Innocent script gives you that little push you need to stay ahead of the pack.

You basically spawn in and try to survive while a secret killer hunts everyone down. You have to run, help out your friends, and figure out who the bad guy is before time runs out.

If you want to speed things up and test out some fun tricks, grab the working script below and jump right into the match.

Killer or Innocent Script – Witch’s Broom Fly & More

Witch’s Broom Fly & MoreFree
Witch’s Broom Fly
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

-- Config
local TRIGGER_IDS = {
	["114924283270252"] = true,
	["130490463850590"] = true,
}
local FORWARD_SPEED = 90 -- studs/s (forward and backward)
local SIDE_SPEED = 60    -- studs/s (left and right)

-- WASD, gamepad and mobile joystick all go through the default controls module
local controls = require(player:WaitForChild("PlayerScripts"):WaitForChild("PlayerModule")):GetControls()

local runConnection -- per-character Heartbeat connection

local function isTriggerPlaying(animator)
	for _, track in ipairs(animator:GetPlayingAnimationTracks()) do
		local id = tostring(track.Animation.AnimationId):match("%d+")
		if id and TRIGGER_IDS[id] then
			return true
		end
	end
	return false
end

local function setupCharacter(character)
	if runConnection then
		runConnection:Disconnect()
		runConnection = nil
	end

	local humanoid = character:WaitForChild("Humanoid")
	local root = character:WaitForChild("HumanoidRootPart")
	local animator = humanoid:WaitForChild("Animator")

	local flying = false
	local attachment, linearVelocity, align

	local function activate()
		flying = true

		attachment = Instance.new("Attachment")
		attachment.Name = "FlightAttachment"
		attachment.Parent = root

		linearVelocity = Instance.new("LinearVelocity")
		linearVelocity.Attachment0 = attachment
		linearVelocity.RelativeTo = Enum.ActuatorRelativeTo.World
		linearVelocity.MaxForce = math.huge
		linearVelocity.VectorVelocity = Vector3.zero
		linearVelocity.Parent = root

		align = Instance.new("AlignOrientation")
		align.Mode = Enum.OrientationAlignmentMode.OneAttachment
		align.Attachment0 = attachment
		align.MaxTorque = math.huge
		align.Responsiveness = 30
		align.CFrame = root.CFrame
		align.Parent = root

		humanoid.PlatformStand = true
	end

	local function deactivate()
		flying = false

		if linearVelocity then linearVelocity:Destroy() linearVelocity = nil end
		if align then align:Destroy() align = nil end
		if attachment then attachment:Destroy() attachment = nil end

		if humanoid.Parent then
			humanoid.PlatformStand = false
		end
	end

	runConnection = RunService.Heartbeat:Connect(function()
		if humanoid.Health <= 0 then
			if flying then deactivate() end
			return
		end

		local shouldFly = isTriggerPlaying(animator)

		if shouldFly and not flying then
			activate()
		elseif not shouldFly and flying then
			deactivate()
		end

		if flying then
			-- x = right(+)/left(-), z = backward(+)/forward(-), relative to the camera
			local move = controls:GetMoveVector()
			local camCF = camera.CFrame

			local velocity = camCF.RightVector * (move.X * SIDE_SPEED)
				+ camCF.LookVector * (-move.Z * FORWARD_SPEED)

			linearVelocity.VectorVelocity = velocity

			-- Face the direction the camera is looking
			align.CFrame = CFrame.lookAt(root.Position, root.Position + camCF.LookVector)
		end
	end)

	humanoid.Died:Once(function()
		if flying then deactivate() end
		if runConnection then
			runConnection:Disconnect()
			runConnection = nil
		end
	end)
end

player.CharacterAdded:Connect(setupCharacter)
if player.Character then
	task.spawn(setupCharacter, player.Character)
end
Executor compatibility changes over time. Check current reports before testing.

Copy the code above into a compatible Roblox script executor if you choose to test it.

Killer or Innocent Script Status

✓AvailabilityFree
$Price$0
◫CompatibilityDesktop & Mobile
★SafetyVerified

Roblox and game updates can affect compatibility, so the script’s status should be treated as temporary rather than guaranteed.

Frequently Asked Questions

What is a Killer or Innocent script?

A Killer or Innocent script is third-party Lua code intended to run alongside the Roblox game through a compatible script executor.

What features does this Killer or Innocent script include?

Different scripts contain different code. This version includes: Witch’s Broom Fly.

How do you use the Killer or Innocent script?

Pick a compatible executor such as Hydrogen, MacSploit, AWP.GG, Delta, Fluxus, Codex, launch Roblox and join the game, copy the complete Lua code from the script card above, paste it into the executor’s editor, and click Run or Execute. Compatibility changes over time, so a name here doesn’t guarantee current support.

Can a Killer or Innocent script get your Roblox account banned?

Yes. Third-party scripts can violate Roblox rules and may put an account at risk. Only use code from a source you trust, never enter your Roblox password into a script or executor, and test on an alternate account first.

Does the Killer or Innocent script work on mobile?

Check whether both the executor and the script support your device and the current Roblox version. Mobile executor support does not guarantee that every script will work.

Check out our Roblox Scripts hub and Roblox Games Directory for more.

Leave a Comment