Lag switch MobileOnly
Key RequiredUniversal

Lag switch MobileOnly

Universal Scriptstyearstyear 2.6K views 3.6K executesUpdated Mar 13, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•152 lines (3985 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local guiParent = player:WaitForChild("PlayerGui")

getgenv().guiPositions = getgenv().guiPositions or {}
getgenv().guiLocks = getgenv().guiLocks or {}

local lagDuration = 0.12
local lagIntensity = 100000

if guiParent:FindFirstChild("lagGui") then
	return
end

local function addScale(gui)
	local s = Instance.new("UIScale")
	local cam = workspace.CurrentCamera
	local function update()
		s.Scale = math.clamp(cam.ViewportSize.Y / 720, 0.85, 1.35)
	end
	update()
	cam:GetPropertyChangedSignal("ViewportSize"):Connect(update)
	s.Parent = gui
end

local function holdSystem(button, callback, name)
	local holdTime = 5
	local locked = getgenv().guiLocks[name] or false
	local holding = false
	local holdStart = 0
	local holdTriggered = false

	button.InputBegan:Connect(function(input)
		if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then return end
		holding = true
		holdStart = tick()
		holdTriggered = false
		callback()
	end)

	button.InputEnded:Connect(function(input)
		if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then return end
		holding = false
	end)

	RunService.RenderStepped:Connect(function()
		if holding and not holdTriggered then
			if tick() - holdStart >= holdTime then
				holdTriggered = true
				locked = not locked
				getgenv().guiLocks[name] = locked
			end
		end
	end)

	return function()
		return locked
	end
end

local function drag(button, isLocked, name)
	local dragging = false
	local dragInput
	local dragStart
	local startPos

	if getgenv().guiPositions[name] then
		button.Position = getgenv().guiPositions[name]
	end

	button.InputBegan:Connect(function(input)
		if isLocked and isLocked() then return end
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			dragInput = input
			dragStart = input.Position
			startPos = button.Position
		end
	end)

	button.InputChanged:Connect(function(input)
		if input == dragInput and dragging then
			local delta = input.Position - dragStart
			button.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
			getgenv().guiPositions[name] = button.Position
		end
	end)

	UserInputService.InputEnded:Connect(function(input)
		if input == dragInput then
			dragging = false
			dragInput = nil
		end
	end)
end

local lagging = false
local lagConnection

local gui = Instance.new("ScreenGui")
gui.Name = "lagGui"
gui.ResetOnSpawn = false
gui.Parent = guiParent
addScale(gui)

local button = Instance.new("ImageButton")
button.Parent = gui
button.BackgroundTransparency = 1
button.Size = UDim2.new(0, 80, 0, 80)
button.Position = UDim2.new(0, 120, 0, 90)
button.Image = "rbxassetid://16803802267"

local signal = Instance.new("ImageLabel")
signal.Parent = button
signal.BackgroundTransparency = 1
signal.Size = UDim2.new(0.55, 0, 0.55, 0)
signal.Position = UDim2.new(0.225, 0, 0.225, 0)
signal.Image = "rbxassetid://120149956647138"
signal.ImageTransparency = 0.6

local lagLocked = holdSystem(button, function()
	if lagging then return end
	lagging = true
	signal.Image = "rbxassetid://125935874994032"

	local start = os.clock()

	lagConnection = RunService.RenderStepped:Connect(function()
		if os.clock() - start >= lagDuration then
			if lagConnection then
				lagConnection:Disconnect()
				lagConnection = nil
			end
			lagging = false
			signal.Image = "rbxassetid://120149956647138"
			return
		end

		for i = 1, lagIntensity do
			local x = math.random() * math.random() * math.random()
			for j = 1, 10 do
				x = x ^ math.random()
				x = math.sin(x) * math.cos(x) * math.tan(x)
			end
		end
	end)
end, "lag")

drag(button, lagLocked, "lag")

Features & Information

This script create a small lag switch GUI for Roblox. Features: - Lag switch button that simulate short network lag when pressed - WiFi signal icon change (signal on → signal off) while lag active - Draggable GUI so you can move it anywhere on the screen - Hold button for 5 seconds to lock / unlock the GUI position - GUI position saved while script still running - Auto scale system so GUI size follow screen resolution Note: Sometimes the GUI can feel a little hard to drag. This happens because the lag switch system is running heavy calculations while the button is pressed. Since the lag logic runs in RenderStepped and uses many math loops, it can slightly interfere with drag input while the lag is active. Credits: The lag switch logic used in this script is based on an open source script originally posted on ScriptBlox by Guyboi. The original script simply makes your game lag when executed. Original open source poster: https://scriptblox.com/u/Guyboi This version is a modified version where the original lag logic was adapted into a clean GUI system with drag, lock system, mobile support, and WiFi signal indicator This feature is explained by chatgpt Open source
#Evade exploit#ParkourLagSwitch#Exploit#StyearX

Community Comments (2)

D0NALD_TRUMPD0NALD_TRUMPMay 5, 2026

Nggak enak MBG nya

alshehrialshehri09alshehrialshehri09Jun 23, 2026

In Roblox studio

More Scripts for Universal Scripts