ScriptBlox GUI: Ultimate Roblox Script Hub
Key RequiredUniversal

ScriptBlox GUI: Ultimate Roblox Script Hub

Universal ScriptBigPPMikeBigPPMike 1.3K views 10 executesUpdated Nov 8, 2025
0.0/ 5(1 votes)
010% Positive
Lua Script•763 lines (29198 chars)
--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
local Players = game:GetService("Players")
local HttpService = game:GetService("HttpService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
local camera = workspace.CurrentCamera
local SCREEN_SIZE = camera.ViewportSize
local isSmallScreen = isMobile or SCREEN_SIZE.X < 800
local menuScale = 0.75
local minScale, maxScale = 0.5, 1.0
local scaleStep = 0.05
local scriptCache = {}
local guiVisible = true
local popupShown = false
local currentPage = 1
local scriptsPerPage = 10
local function HttpGet(url)
    for i = 1, 5 do
        local s, r = pcall(game.HttpGet, game, url, true)
        if s and r and #r > 50 then return r end
        task.wait(1)
    end
    return nil
end
local function formatTime(utc)
    if not utc then return "Recent" end
    local y,m,d,h,min = utc:match("(%d+)-(%d+)-(%d+)T(%d+):(%d+)")
    if y then
        local t = os.time{year=y, month=m, day=d, hour=h, min=min}
        return os.date("%m.%d %H:%M", t)
    end
    return utc:sub(1,16)
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ScriptBloxPro"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.Parent = playerGui
local mainFrame = Instance.new("Frame")
mainFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 15)
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui
local function updateFrameSize()
    local w = SCREEN_SIZE.X * menuScale
    local h = SCREEN_SIZE.Y * menuScale
    mainFrame.Size = UDim2.new(0, w - 40, 0, h - 40)
end
updateFrameSize()
mainFrame.Position = UDim2.new(0.5, -mainFrame.Size.X.Offset/2, 0.5, -mainFrame.Size.Y.Offset/2)
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 20)
corner.Parent = mainFrame
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(139, 92, 246)
stroke.Thickness = 1.8
stroke.Parent = mainFrame
local header = Instance.new("Frame")
header.Size = UDim2.new(1, 0, 0, 60)
header.BackgroundTransparency = 1
header.Parent = mainFrame
local logo = Instance.new("TextLabel")
logo.Size = UDim2.new(0, 120, 1, 0)
logo.BackgroundTransparency = 1
logo.Text = "🧾 ScriptBlox"
logo.TextColor3 = Color3.fromRGB(139, 92, 246)
logo.TextScaled = true
logo.Font = Enum.Font.GothamBold
logo.Parent = header
local navFrame = Instance.new("Frame")
navFrame.Size = UDim2.new(1, -200, 1, 0)
navFrame.Position = UDim2.new(0, 120, 0, 0)
navFrame.BackgroundTransparency = 1
navFrame.Parent = header
local navLayout = Instance.new("UIListLayout")
navLayout.FillDirection = Enum.FillDirection.Horizontal
navLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
navLayout.VerticalAlignment = Enum.VerticalAlignment.Center
navLayout.Padding = UDim.new(0, 30)
navLayout.Parent = navFrame
local navItems = {"Home", "Upload", "Trending", "Rules", "Executors", "Docs Beta"}
for _, item in ipairs(navItems) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 80, 0, 30)
    btn.BackgroundTransparency = 1
    btn.Text = item
    btn.TextColor3 = Color3.fromRGB(200, 200, 220)
    btn.TextScaled = true
    btn.Font = Enum.Font.Gotham
    btn.Parent = navFrame
    btn.MouseButton1Click:Connect(function()
        for _, b in ipairs(navFrame:GetChildren()) do
            if b:IsA("TextButton") then
                b.TextColor3 = Color3.fromRGB(200, 200, 220)
            end
        end
        btn.TextColor3 = Color3.fromRGB(139, 92, 246)
    end)
end
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(1, -35, 0, 15)
closeBtn.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
closeBtn.Text = "✕"
closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
closeBtn.TextScaled = true
closeBtn.Font = Enum.Font.GothamBold
local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 15)
closeCorner.Parent = closeBtn
closeBtn.Parent = header
local authFrame = Instance.new("Frame")
authFrame.Size = UDim2.new(0, 200, 1, 0)
authFrame.Position = UDim2.new(1, -200, 0, 0)
authFrame.BackgroundTransparency = 1
authFrame.Parent = header
local authLayout = Instance.new("UIListLayout")
authLayout.FillDirection = Enum.FillDirection.Horizontal
authLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right
authLayout.VerticalAlignment = Enum.VerticalAlignment.Center
authLayout.Padding = UDim.new(0, 10)
authLayout.Parent = authFrame
local authBtns = {"Login", "Sign Up"}
for _, item in ipairs(authBtns) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 70, 0, 30)
    btn.BackgroundColor3 = Color3.fromRGB(139, 92, 246)
    btn.Text = item
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.TextScaled = true
    btn.Font = Enum.Font.GothamBold
    local c = Instance.new("UICorner")
    c.CornerRadius = UDim.new(0, 8)
    c.Parent = btn
    btn.Parent = authFrame
end
local statsFrame = Instance.new("Frame")
statsFrame.Size = UDim2.new(1, 0, 0, 40)
statsFrame.Position = UDim2.new(0, 0, 0, 70)
statsFrame.BackgroundTransparency = 1
statsFrame.Parent = mainFrame
local statsLayout = Instance.new("UIListLayout")
statsLayout.FillDirection = Enum.FillDirection.Horizontal
statsLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
statsLayout.VerticalAlignment = Enum.VerticalAlignment.Center
statsLayout.Padding = UDim.new(0, 50)
statsLayout.Parent = statsFrame
local statsItems = {
    {text = "517", color = Color3.fromRGB(0, 255, 0), label = "Registered users"},
    {text = "314", color = Color3.fromRGB(100, 100, 255), label = "Guests online"}
}
for _, item in ipairs(statsItems) do
    local frame = Instance.new("Frame")
    frame.BackgroundTransparency = 1
    frame.Parent = statsFrame
    local num = Instance.new("TextLabel")
    num.Size = UDim2.new(0, 50, 1, 0)
    num.BackgroundTransparency = 1
    num.Text = item.text
    num.TextColor3 = item.color
    num.TextScaled = true
    num.Font = Enum.Font.GothamBold
    num.Parent = frame
    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(0, 120, 1, 0)
    lbl.Position = UDim2.new(0, 50, 0, 0)
    lbl.BackgroundTransparency = 1
    lbl.Text = item.label
    lbl.TextColor3 = Color3.fromRGB(150, 150, 170)
    lbl.TextScaled = true
    lbl.Font = Enum.Font.Gotham
    lbl.Parent = frame
end
local dragging = false
local dragStart, startPos
header.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = mainFrame.Position
    end
end)
header.InputChanged:Connect(function(input)
    if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        local delta = input.Position - dragStart
        mainFrame.Position = UDim2.new(
            startPos.X.Scale,
            startPos.X.Offset + delta.X,
            startPos.Y.Scale,
            startPos.Y.Offset + delta.Y
        )
    end
end)
header.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = false
    end
end)
local resizeContainer = Instance.new("Frame")
resizeContainer.Size = UDim2.new(0, 100, 0, 35)
resizeContainer.Position = UDim2.new(1, -110, 0, 12.5)
resizeContainer.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
resizeContainer.Parent = header
local rcCorner = Instance.new("UICorner")
rcCorner.CornerRadius = UDim.new(0, 12)
rcCorner.Parent = resizeContainer
local rcStroke = Instance.new("UIStroke")
rcStroke.Color = Color3.fromRGB(70, 70, 80)
rcStroke.Thickness = 1
rcStroke.Parent = resizeContainer
local minusBtn = Instance.new("TextButton")
minusBtn.Size = UDim2.new(0, 30, 1, 0)
minusBtn.BackgroundTransparency = 1
minusBtn.Text = "-"
minusBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
minusBtn.TextScaled = true
minusBtn.Font = Enum.Font.GothamBold
minusBtn.Parent = resizeContainer
local plusBtn = Instance.new("TextButton")
plusBtn.Size = UDim2.new(0, 30, 1, 0)
plusBtn.Position = UDim2.new(1, -30, 0, 0)
plusBtn.BackgroundTransparency = 1
plusBtn.Text = "+"
plusBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
plusBtn.TextScaled = true
plusBtn.Font = Enum.Font.GothamBold
plusBtn.Parent = resizeContainer
local scaleLabel = Instance.new("TextLabel")
scaleLabel.Size = UDim2.new(0, 40, 1, 0)
scaleLabel.Position = UDim2.new(0, 30, 0, 0)
scaleLabel.BackgroundTransparency = 1
scaleLabel.Text = math.floor(menuScale * 100) .. "%"
scaleLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
scaleLabel.TextScaled = true
scaleLabel.Font = Enum.Font.Gotham
scaleLabel.Parent = resizeContainer
minusBtn.MouseButton1Click:Connect(function()
    menuScale = math.max(minScale, menuScale - scaleStep)
    scaleLabel.Text = math.floor(menuScale * 100) .. "%"
    updateFrameSize()
end)
plusBtn.MouseButton1Click:Connect(function()
    menuScale = math.min(maxScale, menuScale + scaleStep)
    scaleLabel.Text = math.floor(menuScale * 100) .. "%"
    updateFrameSize()
end)
local searchFrame = Instance.new("Frame")
searchFrame.Size = UDim2.new(1, -24, 0, 60)
searchFrame.Position = UDim2.new(0, 12, 0, 120)
searchFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
searchFrame.Parent = mainFrame
local sCorner = Instance.new("UICorner")
sCorner.CornerRadius = UDim.new(0, 14)
sCorner.Parent = searchFrame
local searchBox = Instance.new("TextBox")
searchBox.Size = UDim2.new(1, -100, 1, 0)
searchBox.Position = UDim2.new(0, 12, 0, 0)
searchBox.BackgroundTransparency = 1
searchBox.PlaceholderText = "Search the best Lua scripts available in the community uploaded by users!"
searchBox.Text = ""
searchBox.TextColor3 = Color3.fromRGB(220, 220, 220)
searchBox.PlaceholderColor3 = Color3.fromRGB(130, 130, 130)
searchBox.TextScaled = true
searchBox.Font = Enum.Font.Gotham
searchBox.Parent = searchFrame
local searchBtn = Instance.new("TextButton")
searchBtn.Size = UDim2.new(0, 80, 0, 35)
searchBtn.Position = UDim2.new(1, -90, 0.5, -17.5)
searchBtn.BackgroundColor3 = Color3.fromRGB(139, 92, 246)
searchBtn.Text = "Search"
searchBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
searchBtn.TextScaled = true
searchBtn.Font = Enum.Font.GothamBold
local sbCorner = Instance.new("UICorner")
sbCorner.CornerRadius = UDim.new(0, 10)
sbCorner.Parent = searchBtn
searchBtn.Parent = searchFrame
local strictToggle = Instance.new("TextButton")
strictToggle.Size = UDim2.new(0, 180, 0, 30)
strictToggle.Position = UDim2.new(0, 12, 1, -30)
strictToggle.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
strictToggle.Text = "Strict search (match exact input)"
strictToggle.TextColor3 = Color3.fromRGB(150, 150, 170)
strictToggle.TextScaled = true
strictToggle.Font = Enum.Font.Gotham
local stCorner = Instance.new("UICorner")
stCorner.CornerRadius = UDim.new(0, 8)
stCorner.Parent = strictToggle
strictToggle.Parent = searchFrame
local promoFrame = Instance.new("Frame")
promoFrame.Size = UDim2.new(1, -24, 0, 140)
promoFrame.Position = UDim2.new(0, 12, 0, 190)
promoFrame.BackgroundTransparency = 1
promoFrame.Parent = mainFrame
local promoLayout = Instance.new("UIListLayout")
promoLayout.FillDirection = Enum.FillDirection.Horizontal
promoLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
promoLayout.VerticalAlignment = Enum.VerticalAlignment.Center
promoLayout.Padding = UDim.new(0, 30)
promoLayout.Parent = promoFrame
local promoItems = {
    {icon = "👥", title = "Active community", desc = "Join hundreds of thousands of people already sharing content!"},
    {icon = "📚", title = "Extensive collection", desc = "With tens of thousands of scripts uploaded every day and tens of thousands!"},
    {icon = "✨", title = "Bring your scripts", desc = "Have scripts? Upload, share & make your presence known"}
}
for _, item in ipairs(promoItems) do
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(0, 220, 1, 0)
    frame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
    frame.Parent = promoFrame
    local pCorner = Instance.new("UICorner")
    pCorner.CornerRadius = UDim.new(0, 12)
    pCorner.Parent = frame
    local icon = Instance.new("TextLabel")
    icon.Size = UDim2.new(0, 40, 0, 40)
    icon.Position = UDim2.new(0, 10, 0, 10)
    icon.BackgroundTransparency = 1
    icon.Text = item.icon
    icon.TextColor3 = Color3.fromRGB(139, 92, 246)
    icon.TextScaled = true
    icon.Font = Enum.Font.GothamBold
    icon.Parent = frame
    local title = Instance.new("TextLabel")
    title.Size = UDim2.new(1, -60, 0, 25)
    title.Position = UDim2.new(0, 50, 0, 10)
    title.BackgroundTransparency = 1
    title.Text = item.title
    title.TextColor3 = Color3.fromRGB(255, 255, 255)
    title.TextScaled = true
    title.Font = Enum.Font.GothamBold
    title.TextXAlignment = Enum.TextXAlignment.Left
    title.Parent = frame
    local desc = Instance.new("TextLabel")
    desc.Size = UDim2.new(1, -60, 0, 50)
    desc.Position = UDim2.new(0, 50, 0, 35)
    desc.BackgroundTransparency = 1
    desc.Text = item.desc
    desc.TextColor3 = Color3.fromRGB(150, 150, 170)
    desc.TextScaled = true
    desc.Font = Enum.Font.Gotham
    desc.TextXAlignment = Enum.TextXAlignment.Left
    desc.TextYAlignment = Enum.TextYAlignment.Top
    desc.Parent = frame
end
local content = Instance.new("Frame")
content.Size = UDim2.new(1, -24, 1, -400)
content.Position = UDim2.new(0, 12, 0, 340)
content.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
content.Parent = mainFrame
local cCorner = Instance.new("UICorner")
cCorner.CornerRadius = UDim.new(0, 16)
cCorner.Parent = content
local recentLabel = Instance.new("TextLabel")
recentLabel.Size = UDim2.new(1, -100, 0, 40)
recentLabel.Position = UDim2.new(0, 0, 0, 0)
recentLabel.BackgroundTransparency = 1
recentLabel.Text = "Recent Scripts"
recentLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
recentLabel.TextScaled = true
recentLabel.Font = Enum.Font.GothamBold
recentLabel.Parent = content
local uploadBtn = Instance.new("TextButton")
uploadBtn.Size = UDim2.new(0, 80, 0, 35)
uploadBtn.Position = UDim2.new(1, -90, 0, 2.5)
uploadBtn.BackgroundColor3 = Color3.fromRGB(139, 92, 246)
uploadBtn.Text = "+ Upload"
uploadBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
uploadBtn.TextScaled = true
uploadBtn.Font = Enum.Font.GothamBold
local uCorner = Instance.new("UICorner")
uCorner.CornerRadius = UDim.new(0, 10)
uCorner.Parent = uploadBtn
uploadBtn.Parent = content
local scroll = Instance.new("ScrollingFrame")
scroll.Size = UDim2.new(1, -16, 1, -100)
scroll.Position = UDim2.new(0, 8, 0, 45)
scroll.BackgroundTransparency = 1
scroll.ScrollBarThickness = 8
scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y
scroll.Parent = content
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 15)
layout.FillDirection = Enum.FillDirection.Vertical
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = scroll
local paginationFrame = Instance.new("Frame")
paginationFrame.Size = UDim2.new(1, 0, 0, 40)
paginationFrame.Position = UDim2.new(0, 0, 1, -40)
paginationFrame.BackgroundTransparency = 1
paginationFrame.Parent = content
local pageLabel = Instance.new("TextLabel")
pageLabel.Size = UDim2.new(0, 100, 1, 0)
pageLabel.Position = UDim2.new(0.5, -50, 0, 0)
pageLabel.BackgroundTransparency = 1
pageLabel.Text = "Page 1"
pageLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
pageLabel.TextScaled = true
pageLabel.Font = Enum.Font.Gotham
pageLabel.Parent = paginationFrame
local prevBtn = Instance.new("TextButton")
prevBtn.Size = UDim2.new(0, 60, 0, 30)
prevBtn.Position = UDim2.new(0.5, -170, 0.5, -15)
prevBtn.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
prevBtn.Text = "Previous"
prevBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
prevBtn.TextScaled = true
prevBtn.Font = Enum.Font.Gotham
local prevCorner = Instance.new("UICorner")
prevCorner.CornerRadius = UDim.new(0, 8)
prevCorner.Parent = prevBtn
prevBtn.Parent = paginationFrame
local nextBtn = Instance.new("TextButton")
nextBtn.Size = UDim2.new(0, 60, 0, 30)
nextBtn.Position = UDim2.new(0.5, 110, 0.5, -15)
nextBtn.BackgroundColor3 = Color3.fromRGB(139, 92, 246)
nextBtn.Text = "Next"
nextBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
nextBtn.TextScaled = true
nextBtn.Font = Enum.Font.GothamBold
local nextCorner = Instance.new("UICorner")
nextCorner.CornerRadius = UDim.new(0, 8)
nextCorner.Parent = nextBtn
nextBtn.Parent = paginationFrame
local loading = false
local function clear()
    for _, v in pairs(scroll:GetChildren()) do
        if v:IsA("Frame") then v:Destroy() end
    end
end
local function fetchScriptCode(scriptId, callback)
    if scriptCache[scriptId] then
        callback(scriptCache[scriptId])
        return
    end
    local url = "https://scriptblox.com/api/script/fetch?script_id=" .. scriptId
    spawn(function()
        local res = HttpGet(url)
        if res then
            local s, data = pcall(HttpService.JSONDecode, HttpService, res)
            if s and data and data.result and data.result.script then
                scriptCache[scriptId] = data.result.script
                callback(data.result.script)
                return
            end
        end
        callback(nil)
    end)
end
local function createCard(data)
    local card = Instance.new("Frame")
    card.Size = UDim2.new(1, -20, 0, 130)
    card.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
    card.BorderSizePixel = 0
    card.Parent = scroll
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 14)
    corner.Parent = card
    local pad = Instance.new("UIPadding")
    pad.PaddingLeft = UDim.new(0, 14)
    pad.PaddingRight = UDim.new(0, 14)
    pad.PaddingTop = UDim.new(0, 10)
    pad.PaddingBottom = UDim.new(0, 10)
    pad.Parent = card
    local thumb = Instance.new("Frame")
    thumb.Size = UDim2.new(0, 80, 1, 0)
    thumb.Position = UDim2.new(0, 0, 0, 0)
    thumb.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
    thumb.Parent = card
    local tCorner = Instance.new("UICorner")
    tCorner.CornerRadius = UDim.new(0, 8)
    tCorner.Parent = thumb
    local icon = Instance.new("TextLabel")
    icon.Size = UDim2.new(1, 0, 1, 0)
    icon.BackgroundTransparency = 1
    icon.Text = "📜"
    icon.TextColor3 = Color3.fromRGB(139, 92, 246)
    icon.TextScaled = true
    icon.Font = Enum.Font.GothamBold
    icon.Parent = thumb
    local title = Instance.new("TextLabel")
    title.Size = UDim2.new(1, -100, 0, 26)
    title.Position = UDim2.new(0, 90, 0, 0)
    title.BackgroundTransparency = 1
    title.Text = data.title or "Untitled"
    title.TextColor3 = Color3.fromRGB(255, 255, 255)
    title.TextScaled = true
    title.Font = Enum.Font.GothamBold
    title.TextXAlignment = Enum.TextXAlignment.Left
    title.Parent = card
    local game = Instance.new("TextLabel")
    game.Size = UDim2.new(1, -100, 0, 20)
    game.Position = UDim2.new(0, 90, 0, 30)
    game.BackgroundTransparency = 1
    game.Text = "Game: " .. (data.game and data.game.name or "Universal")
    game.TextColor3 = Color3.fromRGB(130, 200, 255)
    game.TextScaled = true
    game.Font = Enum.Font.Gotham
    game.TextXAlignment = Enum.TextXAlignment.Left
    game.Parent = card
    local statsFrame = Instance.new("Frame")
    statsFrame.Size = UDim2.new(1, -100, 0, 22)
    statsFrame.Position = UDim2.new(0, 90, 0, 55)
    statsFrame.BackgroundTransparency = 1
    statsFrame.Parent = card
    local likesEmoji = Instance.new("TextLabel")
    likesEmoji.Size = UDim2.new(0, 22, 0, 22)
    likesEmoji.Position = UDim2.new(0, 0, 0, 0)
    likesEmoji.BackgroundTransparency = 1
    likesEmoji.Text = "❤️"
    likesEmoji.TextColor3 = Color3.fromRGB(255, 100, 100)
    likesEmoji.TextScaled = true
    likesEmoji.Font = Enum.Font.Gotham
    likesEmoji.Parent = statsFrame
    local likesText = Instance.new("TextLabel")
    likesText.Size = UDim2.new(0, 50, 1, 0)
    likesText.Position = UDim2.new(0, 24, 0, 0)
    likesText.BackgroundTransparency = 1
    likesText.Text = tostring(data.likeCount or 0)
    likesText.TextColor3 = Color3.fromRGB(220, 220, 220)
    likesText.TextScaled = true
    likesText.Font = Enum.Font.Gotham
    likesText.TextXAlignment = Enum.TextXAlignment.Left
    likesText.Parent = statsFrame
    local viewsEmoji = Instance.new("TextLabel")
    viewsEmoji.Size = UDim2.new(0, 22, 0, 22)
    viewsEmoji.Position = UDim2.new(0, 80, 0, 0)
    viewsEmoji.BackgroundTransparency = 1
    viewsEmoji.Text = "👁"
    viewsEmoji.TextColor3 = Color3.fromRGB(100, 200, 255)
    viewsEmoji.TextScaled = true
    viewsEmoji.Font = Enum.Font.Gotham
    viewsEmoji.Parent = statsFrame
    local viewsText = Instance.new("TextLabel")
    viewsText.Size = UDim2.new(0, 60, 1, 0)
    viewsText.Position = UDim2.new(0, 104, 0, 0)
    viewsText.BackgroundTransparency = 1
    viewsText.Text = tostring(data.views or 0)
    viewsText.TextColor3 = Color3.fromRGB(220, 220, 220)
    viewsText.TextScaled = true
    viewsText.Font = Enum.Font.Gotham
    viewsText.TextXAlignment = Enum.TextXAlignment.Left
    viewsText.Parent = statsFrame
    local timeText = Instance.new("TextLabel")
    timeText.Size = UDim2.new(0, 100, 1, 0)
    timeText.Position = UDim2.new(0, 170, 0, 0)
    timeText.BackgroundTransparency = 1
    timeText.Text = formatTime(data.createdAt)
    timeText.TextColor3 = Color3.fromRGB(150, 150, 150)
    timeText.TextScaled = true
    timeText.Font = Enum.Font.Gotham
    timeText.TextXAlignment = Enum.TextXAlignment.Left
    timeText.Parent = statsFrame
    local bestBadge = Instance.new("TextLabel")
    bestBadge.Size = UDim2.new(0, 60, 0, 25)
    bestBadge.Position = UDim2.new(0, 90, 0, -5)
    bestBadge.BackgroundColor3 = Color3.fromRGB(255, 215, 0)
    bestBadge.Text = "BEST"
    bestBadge.TextColor3 = Color3.fromRGB(0, 0, 0)
    bestBadge.TextScaled = true
    bestBadge.Font = Enum.Font.GothamBold
    local bbCorner = Instance.new("UICorner")
    bbCorner.CornerRadius = UDim.new(0, 5)
    bbCorner.Parent = bestBadge
    bestBadge.Visible = (data.likeCount or 0) > 1000
    bestBadge.Parent = card
    card.MouseEnter:Connect(function()
        TweenService:Create(card, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(35, 35, 40)}):Play()
    end)
    card.MouseLeave:Connect(function()
        TweenService:Create(card, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(25, 25, 30)}):Play()
    end)
    local run = Instance.new("TextButton")
    run.Size = UDim2.new(0, 65, 0, 32)
    run.Position = UDim2.new(1, -70, 0.5, -16)
    run.BackgroundColor3 = Color3.fromRGB(0, 180, 80)
    run.Text = "RUN"
    run.TextColor3 = Color3.fromRGB(255, 255, 255)
    run.TextScaled = true
    run.Font = Enum.Font.GothamBold
    run.Parent = card
    local rc = Instance.new("UICorner")
    rc.CornerRadius = UDim.new(0, 10)
    rc.Parent = run
    local copy = Instance.new("TextButton")
    copy.Size = UDim2.new(0, 65, 0, 32)
    copy.Position = UDim2.new(1, 0, 0.5, -16)
    copy.BackgroundColor3 = Color3.fromRGB(255, 170, 0)
    copy.Text = "COPY"
    copy.TextColor3 = Color3.fromRGB(255, 255, 255)
    copy.TextScaled = true
    copy.Font = Enum.Font.GothamBold
    copy.Parent = card
    local cc = Instance.new("UICorner")
    cc.CornerRadius = UDim.new(0, 10)
    cc.Parent = copy
    run.MouseButton1Click:Connect(function()
        local function execute(code)
            if code then
                local s, f = pcall(loadstring, code)
                if s and f then pcall(f) end
            end
        end
        if data.script then
            execute(data.script)
        else
            run.Text = "Loading..."
            fetchScriptCode(data._id, function(code)
                if code then execute(code) end
                run.Text = "RUN"
            end)
        end
    end)
    copy.MouseButton1Click:Connect(function()
        copy.Text = "Loading..."
        copy.BackgroundColor3 = Color3.fromRGB(180, 120, 0)
        local function tryCopy(code)
            if code and code ~= "" then
                pcall(setclipboard, code)
                copy.Text = "OK"
                copy.BackgroundColor3 = Color3.fromRGB(0, 180, 0)
            else
                copy.Text = "Error"
                copy.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
            end
            task.delay(1.2, function()
                if copy and copy.Parent then
                    copy.Text = "COPY"
                    copy.BackgroundColor3 = Color3.fromRGB(255, 170, 0)
                end
            end)
        end
        if data.script then
            tryCopy(data.script)
        else
            fetchScriptCode(data._id, tryCopy)
        end
    end)
end
local function loadScripts(query, page)
    local all = {}
    local urlBase = query and query ~= "" and "https://scriptblox.com/api/script/search" or "https://scriptblox.com/api/script/fetch"
    local url = urlBase
    if query and query ~= "" then
        url = url .. (url:find("?") and "&" or "?") .. "q=" .. HttpService:UrlEncode(query) .. "&page=" .. page
    else
        url = url .. (url:find("?") and "&" or "?") .. "page=" .. page
    end
    local res = HttpGet(url)
    if not res then return {} end
    local s, data = pcall(HttpService.JSONDecode, HttpService, res)
    if not s or not data.result or not data.result.scripts then return {} end
    for _, s in ipairs(data.result.scripts) do
        table.insert(all, s)
    end
    return all
end
local function showScripts(query)
    if loading then return end
    loading = true
    clear()
    local scripts = loadScripts(query, currentPage)
    if #scripts > 0 then
        for _, s in ipairs(scripts) do
            createCard(s)
        end
    else
        local lbl = Instance.new("TextLabel")
        lbl.Size = UDim2.new(1, 0, 0, 50)
        lbl.BackgroundTransparency = 1
        lbl.Text = query and "Nothing found" or "No recent scripts"
        lbl.TextColor3 = Color3.fromRGB(180, 180, 180)
        lbl.TextScaled = true
        lbl.Font = Enum.Font.Gotham
        lbl.Parent = scroll
    end
    pageLabel.Text = "Page " .. currentPage
    prevBtn.BackgroundColor3 = currentPage > 1 and Color3.fromRGB(139, 92, 246) or Color3.fromRGB(100, 100, 100)
    loading = false
end
searchBtn.MouseButton1Click:Connect(function()
    currentPage = 1
    showScripts(searchBox.Text)
end)
searchBox.FocusLost:Connect(function(enter)
    if enter then
        currentPage = 1
        showScripts(searchBox.Text)
    end
end)
uploadBtn.MouseButton1Click:Connect(function()
    print("Upload clicked")
end)
prevBtn.MouseButton1Click:Connect(function()
    if currentPage > 1 then
        currentPage -= 1
        showScripts(searchBox.Text)
    end
end)
nextBtn.MouseButton1Click:Connect(function()
    currentPage += 1
    showScripts(searchBox.Text)
end)
closeBtn.MouseButton1Click:Connect(function()
    guiVisible = false
    mainFrame.Visible = false
    if not popupShown then
        popupShown = true
        local popup = Instance.new("Frame")
        popup.Size = UDim2.new(0, 200, 0, 60)
        popup.Position = UDim2.new(1, -220, 1, -80)
        popup.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
        popup.Parent = screenGui
        local pCorner = Instance.new("UICorner")
        pCorner.CornerRadius = UDim.new(0, 12)
        pCorner.Parent = popup
        local pStroke = Instance.new("UIStroke")
        pStroke.Color = Color3.fromRGB(139, 92, 246)
        pStroke.Thickness = 1
        pStroke.Parent = popup
        local text = Instance.new("TextLabel")
        text.Size = UDim2.new(1, 0, 1, 0)
        text.BackgroundTransparency = 1
        text.Text = "Press , to bring the GUI back"
        text.TextColor3 = Color3.fromRGB(255, 255, 255)
        text.TextScaled = true
        text.Font = Enum.Font.Gotham
        text.Parent = popup
        popup.Size = UDim2.new(0, 0, 0, 0)
        TweenService:Create(popup, TweenInfo.new(0.3, Enum.EasingStyle.Back), {Size = UDim2.new(0, 200, 0, 60)}):Play()
        task.wait(3)
        TweenService:Create(popup, TweenInfo.new(0.3, Enum.EasingStyle.Back), {Size = UDim2.new(0, 0, 0, 0)}):Play()
        task.wait(0.3)
        popup:Destroy()
        popupShown = false
    end
end)
UserInputService.InputBegan:Connect(function(input, processed)
    if processed then return end
    if input.KeyCode == Enum.KeyCode.Comma then
        guiVisible = not guiVisible
        mainFrame.Visible = guiVisible
        if guiVisible then
            showScripts(searchBox.Text)
        end
    end
end)
RunService.Heartbeat:Connect(function()
    local newSize = camera.ViewportSize
    if newSize.X ~= SCREEN_SIZE.X or newSize.Y ~= SCREEN_SIZE.Y then
        SCREEN_SIZE = newSize
        updateFrameSize()
        mainFrame.Position = UDim2.new(0.5, -mainFrame.Size.X.Offset/2, 0.5, -mainFrame.Size.Y.Offset/2)
    end
end)
task.wait(1)
showScripts("")

Features & Information

ScriptBlox GUI: Search, Run & Copy Roblox Scripts!

Community Comments (3)

v0idluav0idluaNov 21, 2025

Sick but needs a close and minimize button

Scripter1234567890Scripter1234567890Dec 26, 2025

Add close button actually cool

Enzo_682Enzo_682Apr 14, 2026

My Clipboard be like:

More Scripts for Universal Scripts