FPS CHECKER
Key RequiredUniversal

FPS CHECKER

Universal ScriptFienFien 2.4K views 486 executesUpdated Oct 20, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•166 lines (4873 chars)
-- FPS MODE GUI | Safe Studio-Only Version
-- Place this in StarterPlayerScripts > LocalScript

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Stats = game:GetService("Stats")
local player = Players.LocalPlayer

--------------------------------------------------
-- GUI SETUP
--------------------------------------------------
local gui = Instance.new("ScreenGui")
gui.Name = "FPS_MODE"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

-- Open button
local openBtn = Instance.new("TextButton")
openBtn.Size = UDim2.new(0,180,0,40)
openBtn.Position = UDim2.new(0.5,-90,0,10)
openBtn.BackgroundColor3 = Color3.fromRGB(0,255,0)
openBtn.TextColor3 = Color3.new(0,0,0)
openBtn.Font = Enum.Font.GothamBold
openBtn.TextScaled = true
openBtn.Text = "OPEN FPS HUB"
openBtn.Parent = gui

-- Main Frame
local main = Instance.new("Frame")
main.Size = UDim2.new(0,350,0,220)
main.Position = UDim2.new(0.5,-175,0.5,-110)
main.BackgroundColor3 = Color3.fromRGB(0,255,0)
main.BorderSizePixel = 4
main.BorderColor3 = Color3.fromRGB(0,100,0)
main.Active = true
main.Draggable = true
main.Visible = false
main.Parent = gui

-- Title Bar
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1,0,0,40)
title.BackgroundColor3 = Color3.fromRGB(0,200,0)
title.Text = "FPS HUB"
title.Font = Enum.Font.GothamBold
title.TextScaled = true
title.TextColor3 = Color3.new(0,0,0)
title.Parent = main

-- Close button
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0,30,0,30)
closeBtn.Position = UDim2.new(1,-35,0,5)
closeBtn.BackgroundColor3 = Color3.fromRGB(255,0,0)
closeBtn.Text = "X"
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextScaled = true
closeBtn.TextColor3 = Color3.new(1,1,1)
closeBtn.Parent = main

--------------------------------------------------
-- FPS/PING DISPLAY
--------------------------------------------------
local fpsLabel = Instance.new("TextLabel")
fpsLabel.Size = UDim2.new(1, -20, 0, 40)
fpsLabel.Position = UDim2.new(0,10,0,50)
fpsLabel.BackgroundTransparency = 1
fpsLabel.Font = Enum.Font.GothamBold
fpsLabel.TextScaled = true
fpsLabel.TextColor3 = Color3.new(0,0,0)
fpsLabel.Text = "FPS: 0"
fpsLabel.Parent = main

local pingLabel = fpsLabel:Clone()
pingLabel.Position = UDim2.new(0,10,0,90)
pingLabel.Text = "PING: 0 ms"
pingLabel.Parent = main

local internetLabel = fpsLabel:Clone()
internetLabel.Position = UDim2.new(0,10,0,130)
internetLabel.Text = "INTERNET CHECKER: Unknown"
internetLabel.Parent = main

--------------------------------------------------
-- Enable/Disable System
--------------------------------------------------
local enableBtn = Instance.new("TextButton")
enableBtn.Size = UDim2.new(0,200,0,40)
enableBtn.Position = UDim2.new(0.5,-100,0,170)
enableBtn.BackgroundColor3 = Color3.fromRGB(0,120,0)
enableBtn.Text = "Enable FPS Reading"
enableBtn.TextScaled = true
enableBtn.Font = Enum.Font.GothamBold
enableBtn.TextColor3 = Color3.new(1,1,1)
enableBtn.Parent = main

local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(0,120,0,20)
statusLabel.Position = UDim2.new(0.5,-60,0.85,0)
statusLabel.BackgroundTransparency = 1
statusLabel.Font = Enum.Font.Gotham
statusLabel.TextScaled = true
statusLabel.Text = "Status: OFF"
statusLabel.TextColor3 = Color3.fromRGB(255,0,0)
statusLabel.Parent = main

--------------------------------------------------
-- FUNCTIONALITY
--------------------------------------------------
local enabled = false
local fps = 0
local ping = 0

-- FPS Calculator
local lastUpdate = tick()
local frameCount = 0

RunService.RenderStepped:Connect(function()
	if not enabled then return end
	frameCount += 1
	local now = tick()
	if now - lastUpdate >= 1 then
		fps = frameCount
		frameCount = 0
		lastUpdate = now
		fpsLabel.Text = "FPS: " .. fps
	end
end)

-- Ping and Internet Quality
task.spawn(function()
	while task.wait(1) do
		if enabled then
			local pingStat = Stats.Network.ServerStatsItem["Data Ping"]
			if pingStat then
				ping = math.floor(pingStat:GetValue())
				pingLabel.Text = "PING: "..ping.." ms"
				if ping <= 80 then
					internetLabel.Text = "INTERNET CHECKER: Good"
				elseif ping <= 200 then
					internetLabel.Text = "INTERNET CHECKER: Medium"
				else
					internetLabel.Text = "INTERNET CHECKER: Bad"
				end
			end
		end
	end
end)

-- Button toggle
enableBtn.MouseButton1Click:Connect(function()
	enabled = not enabled
	statusLabel.Text = "Status: " .. (enabled and "ON" or "OFF")
	statusLabel.TextColor3 = enabled and Color3.fromRGB(0,255,0) or Color3.fromRGB(255,0,0)
	enableBtn.Text = enabled and "Disable FPS Reading" or "Enable FPS Reading"
end)

-- Open/Close logic
openBtn.MouseButton1Click:Connect(function()
	openBtn.Visible = false
	main.Visible = true
end)
closeBtn.MouseButton1Click:Connect(function()
	main.Visible = false
	openBtn.Visible = true
end)

Features & Information

Its a fps checker if you have bae internet [still in testing]

Community Comments (2)

SyrexGenesisSyrexGenesisOct 20, 2025

Cool thanks now I can look at my fps being at 15 maximum on my sh ity phone NC script (not being rude I'm just joking around but I do have a sh ity phone that barely gets 40 fps on a game)

Replying to @SyrexGenesis
FienFienNov 19, 2025

@SyrexGenesis lol thanks for commenting on my script bro appreciate it bro

More Scripts for Universal Scripts