Universal Script – Changer (Crimson Hub) (Speed, Keyless) - Verified script for Universal Roblox
Key RequiredUniversal

Universal Script – Changer (Crimson Hub) (Speed, Keyless)

Universal ScriptCrimsonScriptsCrimsonScripts 920 views 3.4K executesUpdated Oct 21, 2026
Unrated
00
Lua Script•217 lines (5919 chars)
--// Crimson Speed Hub
--// Roblox Studio LocalScript
--// Speed slider, draggable UI, minimize/reopen, destroy
--// For your own Roblox game

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")

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

local MIN_SPEED = 16
local MAX_SPEED = 5000
local currentSpeed = 200
local enabled = false
local destroyed = false

local oldGui = playerGui:FindFirstChild("CrimsonSpeedHub")
if oldGui then
    oldGui:Destroy()
end

local gui = Instance.new("ScreenGui")
gui.Name = "CrimsonSpeedHub"
gui.ResetOnSpawn = false
gui.DisplayOrder = 100
gui.Parent = playerGui

local panel = Instance.new("Frame")
panel.Size = UDim2.fromOffset(330, 180)
panel.Position = UDim2.new(0.5, -165, 0.5, -90)
panel.BackgroundColor3 = Color3.fromRGB(15, 15, 18)
panel.BorderSizePixel = 0
panel.Parent = gui

Instance.new("UICorner", panel).CornerRadius = UDim.new(0, 10)

local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(210, 35, 55)
stroke.Thickness = 1.5
stroke.Parent = panel

local function makeButton(name, text, size, position, parent)
    local b = Instance.new("TextButton")
    b.Name = name
    b.Text = text
    b.Size = size
    b.Position = position
    b.BackgroundColor3 = Color3.fromRGB(32, 32, 38)
    b.TextColor3 = Color3.fromRGB(245, 245, 245)
    b.Font = Enum.Font.GothamBold
    b.TextSize = 14
    b.BorderSizePixel = 0
    b.AutoButtonColor = true
    b.Parent = parent

    Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6)
    return b
end

local header = Instance.new("TextLabel")
header.Name = "Header"
header.Size = UDim2.new(1, -110, 0, 42)
header.Position = UDim2.fromOffset(14, 0)
header.BackgroundTransparency = 1
header.Text = "CRIMSON SPEED HUB"
header.TextColor3 = Color3.fromRGB(255, 70, 85)
header.Font = Enum.Font.GothamBold
header.TextSize = 14
header.TextXAlignment = Enum.TextXAlignment.Left
header.Parent = panel

local minimize = makeButton(
    "Minimize", "−",
    UDim2.fromOffset(32, 30),
    UDim2.new(1, -76, 0, 6), panel
)

local close = makeButton(
    "Destroy", "×",
    UDim2.fromOffset(32, 30),
    UDim2.new(1, -38, 0, 6), panel
)

local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(1, -28, 0, 25)
speedLabel.Position = UDim2.fromOffset(14, 48)
speedLabel.BackgroundTransparency = 1
speedLabel.TextColor3 = Color3.new(1, 1, 1)
speedLabel.Font = Enum.Font.Gotham
speedLabel.TextSize = 13
speedLabel.TextXAlignment = Enum.TextXAlignment.Left
speedLabel.Parent = panel

local speedInput = Instance.new("TextBox")
speedInput.Name = "SpeedInput"
speedInput.Size = UDim2.new(1, -28, 0, 34)
speedInput.Position = UDim2.fromOffset(14, 76)
speedInput.BackgroundColor3 = Color3.fromRGB(32, 32, 38)
speedInput.TextColor3 = Color3.new(1, 1, 1)
speedInput.PlaceholderText = "Enter speed (16–5000)"
speedInput.Text = tostring(currentSpeed)
speedInput.Font = Enum.Font.Gotham
speedInput.TextSize = 14
speedInput.ClearTextOnFocus = false
speedInput.Parent = panel

Instance.new("UICorner", speedInput).CornerRadius = UDim.new(0, 6)

local toggle = makeButton(
    "ToggleSpeed", "SPEED: OFF",
    UDim2.new(1, -28, 0, 34),
    UDim2.fromOffset(14, 122), panel
)

local reopen = makeButton(
    "Reopen", "OPEN",
    UDim2.fromOffset(78, 38),
    UDim2.fromOffset(12, 180), gui
)
reopen.Visible = false
reopen.BackgroundColor3 = Color3.fromRGB(130, 20, 35)

local function applySpeed()
    local character = player.Character
    local humanoid = character and character:FindFirstChildOfClass("Humanoid")
    if humanoid then
        humanoid.WalkSpeed = enabled and currentSpeed or 16
    end
end

local function updateLabel()
    speedLabel.Text = "WalkSpeed: " .. currentSpeed
end

speedInput.FocusLost:Connect(function()
    local number = tonumber(speedInput.Text)
    if number then
        currentSpeed = math.clamp(math.floor(number), MIN_SPEED, MAX_SPEED)
    end

    speedInput.Text = tostring(currentSpeed)
    updateLabel()
    applySpeed()
end)

toggle.Activated:Connect(function()
    enabled = not enabled
    toggle.Text = enabled and "SPEED: ON" or "SPEED: OFF"
    toggle.BackgroundColor3 = enabled
        and Color3.fromRGB(130, 20, 35)
        or Color3.fromRGB(32, 32, 38)
    applySpeed()
end)

minimize.Activated:Connect(function()
    panel.Visible = false
    reopen.Visible = true
end)

reopen.Activated:Connect(function()
    panel.Visible = true
    reopen.Visible = false
end)

close.Activated:Connect(function()
    if destroyed then return end
    destroyed = true
    enabled = false
    applySpeed()
    gui:Destroy()
end)

player.CharacterAdded:Connect(function(character)
    local humanoid = character:WaitForChild("Humanoid")
    if enabled then
        humanoid.WalkSpeed = currentSpeed
    end
end)

-- Drag the panel by its header.
local dragging = false
local dragStart
local startPosition

header.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
        or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPosition = panel.Position
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if dragging and (
        input.UserInputType == Enum.UserInputType.MouseMovement
        or input.UserInputType == Enum.UserInputType.Touch
    ) then
        local delta = input.Position - dragStart
        panel.Position = UDim2.new(
            startPosition.X.Scale,
            startPosition.X.Offset + delta.X,
            startPosition.Y.Scale,
            startPosition.Y.Offset + delta.Y
        )
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
        or input.UserInputType == Enum.UserInputType.Touch then
        dragging = false
    end
end)

updateLabel()

How to Execute Universal Script – Changer (Crimson Hub) (Speed, Keyless)

Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.

Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.

Step 3: Join Experience: Launch Roblox and join Universal Script.

Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.

Created By

CrimsonScripts
CrimsonScripts
Script User
View Author Profile

Features & Information

Execute Universal Script – Changer (Crimson Hub) (Speed, Keyless). Key system required, created by CrimsonScripts, updated Oct 21, 2026. Tested and working on supported executors.

Script Changelog (2)

@QueueSpeedDemonOct 22, 2026

Edited during review before approval

@CrimsonScriptsOct 21, 2026

Create script

Community Comments (0)

No comments yet for this script.

Frequently Asked Questions

How do I execute Universal Script – Changer (Crimson Hub) (Speed, Keyless) in Roblox?

To run Universal Script – Changer (Crimson Hub) (Speed, Keyless), copy the Lua loadstring from the code viewer above, launch Roblox and join Universal Script, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.

Is Universal Script – Changer (Crimson Hub) (Speed, Keyless) keyless or does it require an access key?

Universal Script – Changer (Crimson Hub) (Speed, Keyless) requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is Universal Script – Changer (Crimson Hub) (Speed, Keyless) currently safe and working?

This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.