Fps Changer
Key RequiredUniversal

Fps Changer

Universal ScriptH7O_H7O_ 1.2K views 4.3K executesUpdated Mar 3, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•176 lines (6384 chars)
local RunService       = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Players          = game:GetService("Players")
local TweenService     = game:GetService("TweenService")

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

local MIN_FPS = 1
local MAX_FPS = 340
local currentCap = 60

local function applyCap(fps)
    fps = math.clamp(math.round(fps), MIN_FPS, MAX_FPS)
    currentCap = fps
    pcall(function() settings().Rendering.FrameRateManager = Enum.FrameRateManagerMode.Disabled end)
    if syn and syn.set_fps_cap then
        syn.set_fps_cap(fps)
    elseif setfpscap then
        setfpscap(fps)
    elseif fps_cap then
        fps_cap(fps)
    end
end

local old = PlayerGui:FindFirstChild("SimpleFPSGui")
if old then old:Destroy() end

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name           = "SimpleFPSGui"
ScreenGui.ResetOnSpawn   = false
ScreenGui.IgnoreGuiInset = true
ScreenGui.Parent         = PlayerGui

local Panel = Instance.new("Frame")
Panel.Size              = UDim2.new(0, 200, 0, 106)
Panel.Position          = UDim2.new(0, 24, 0.5, -53)
Panel.BackgroundColor3  = Color3.fromRGB(14, 14, 22)
Panel.BorderSizePixel   = 0
Panel.Parent            = ScreenGui
Instance.new("UICorner", Panel).CornerRadius = UDim.new(0, 10)

local Stroke = Instance.new("UIStroke")
Stroke.Color        = Color3.fromRGB(70, 110, 255)
Stroke.Thickness    = 1.5
Stroke.Transparency = 0.5
Stroke.Parent       = Panel

local dragging, dragStart, startPos = false, Vector2.new(), UDim2.new()
Panel.InputBegan:Connect(function(i)
    if i.UserInputType == Enum.UserInputType.MouseButton1
    or i.UserInputType == Enum.UserInputType.Touch then
        dragging  = true
        dragStart = Vector2.new(i.Position.X, i.Position.Y)
        startPos  = Panel.Position
    end
end)
UserInputService.InputChanged:Connect(function(i)
    if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement
    or i.UserInputType == Enum.UserInputType.Touch) then
        local d = Vector2.new(i.Position.X, i.Position.Y) - dragStart
        Panel.Position = UDim2.new(0,
            math.clamp(startPos.X.Offset + d.X, 0, ScreenGui.AbsoluteSize.X - Panel.AbsoluteSize.X),
            0,
            math.clamp(startPos.Y.Offset + d.Y, 0, ScreenGui.AbsoluteSize.Y - Panel.AbsoluteSize.Y))
    end
end)
UserInputService.InputEnded:Connect(function(i)
    if i.UserInputType == Enum.UserInputType.MouseButton1
    or i.UserInputType == Enum.UserInputType.Touch then
        dragging = false
    end
end)

local LiveLabel = Instance.new("TextLabel")
LiveLabel.Size                   = UDim2.new(1, -16, 0, 22)
LiveLabel.Position               = UDim2.new(0, 8, 0, 8)
LiveLabel.BackgroundTransparency = 1
LiveLabel.Font                   = Enum.Font.Code
LiveLabel.TextSize               = 13
LiveLabel.TextColor3             = Color3.fromRGB(100, 220, 100)
LiveLabel.TextXAlignment         = Enum.TextXAlignment.Left
LiveLabel.Text                   = "LIVE: — fps  |  CAP: 60 fps"
LiveLabel.Parent                 = Panel

local Box = Instance.new("TextBox")
Box.Size              = UDim2.new(1, -16, 0, 32)
Box.Position          = UDim2.new(0, 8, 0, 36)
Box.BackgroundColor3  = Color3.fromRGB(24, 26, 42)
Box.BorderSizePixel   = 0
Box.Font              = Enum.Font.GothamBold
Box.TextSize          = 16
Box.TextColor3        = Color3.fromRGB(200, 215, 255)
Box.PlaceholderText   = "Enter FPS (1-340)"
Box.PlaceholderColor3 = Color3.fromRGB(80, 90, 130)
Box.Text              = "60"
Box.ClearTextOnFocus  = true
Box.Parent            = Panel
Instance.new("UICorner", Box).CornerRadius = UDim.new(0, 6)

local BoxStroke = Instance.new("UIStroke")
BoxStroke.Color        = Color3.fromRGB(70, 110, 255)
BoxStroke.Thickness    = 1
BoxStroke.Transparency = 0.6
BoxStroke.Parent       = Box

local ApplyBtn = Instance.new("TextButton")
ApplyBtn.Size             = UDim2.new(1, -16, 0, 24)
ApplyBtn.Position         = UDim2.new(0, 8, 0, 76)
ApplyBtn.BackgroundColor3 = Color3.fromRGB(50, 90, 220)
ApplyBtn.BorderSizePixel  = 0
ApplyBtn.Font             = Enum.Font.GothamBold
ApplyBtn.TextSize         = 12
ApplyBtn.TextColor3       = Color3.fromRGB(255, 255, 255)
ApplyBtn.Text             = "SET FPS"
ApplyBtn.AutoButtonColor  = false
ApplyBtn.Parent           = Panel
Instance.new("UICorner", ApplyBtn).CornerRadius = UDim.new(0, 6)

local function tryApply()
    local num = tonumber(Box.Text)
    if num then
        local clamped = math.clamp(math.round(num), MIN_FPS, MAX_FPS)
        applyCap(clamped)
        Box.Text = tostring(clamped)
        TweenService:Create(ApplyBtn, TweenInfo.new(0.1),
            {BackgroundColor3 = Color3.fromRGB(40, 180, 80)}):Play()
        task.delay(0.4, function()
            TweenService:Create(ApplyBtn, TweenInfo.new(0.2),
                {BackgroundColor3 = Color3.fromRGB(50, 90, 220)}):Play()
        end)
    else
        TweenService:Create(ApplyBtn, TweenInfo.new(0.1),
            {BackgroundColor3 = Color3.fromRGB(180, 40, 40)}):Play()
        task.delay(0.4, function()
            TweenService:Create(ApplyBtn, TweenInfo.new(0.2),
                {BackgroundColor3 = Color3.fromRGB(50, 90, 220)}):Play()
        end)
    end
end

ApplyBtn.MouseButton1Click:Connect(tryApply)
Box.FocusLost:Connect(function(enterPressed)
    if enterPressed then tryApply() end
end)

local history, lastTime = {}, tick()
RunService.RenderStepped:Connect(function()
    local now = tick()
    local dt  = now - lastTime
    lastTime  = now
    if dt > 0 then
        history[#history + 1] = 1 / dt
        if #history > 30 then table.remove(history, 1) end
        local sum = 0
        for _, v in ipairs(history) do sum = sum + v end
        local live = math.round(sum / #history)
        LiveLabel.Text = string.format("LIVE: %d fps  |  CAP: %d fps", live, currentCap)
        local ratio = live / currentCap
        if ratio >= 0.9 then
            LiveLabel.TextColor3 = Color3.fromRGB(100, 220, 100)
        elseif ratio >= 0.6 then
            LiveLabel.TextColor3 = Color3.fromRGB(220, 200, 60)
        else
            LiveLabel.TextColor3 = Color3.fromRGB(220, 70, 70)
        end
    end
end)

LocalPlayer.CharacterAdded:Connect(function()
    task.wait(1)
    applyCap(currentCap)
end)

applyCap(currentCap)
print("[FPS Changer] Ready")

Features & Information

change your fps in EVERY game! make your game smooth or very laggy. enjoy!
#fps changer#fps#changer

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts