Universal Script – Copy button - Verified script for Universal Roblox
Key RequiredUniversal

Universal Script – Copy button

Universal ScriptAquaHubAquaHub 1.4K views 555 executesUpdated Oct 21, 2026
Unrated
00
Lua Script•140 lines (4814 chars)
local cg = game:GetService("CoreGui")
local ts = game:GetService("TweenService")
local logs = game:GetService("LogService")

local setclip = setclipboard or toclipboard or (Clipboard and Clipboard.set)

local function getLogs(console)
    local lines = {}
    local scroller = console:FindFirstChildWhichIsA("ScrollingFrame", true)
    
    if scroller then
        for _, v in ipairs(scroller:GetDescendants()) do
            if (v:IsA("TextLabel") or v:IsA("TextBox")) and v.Text ~= "" then
                table.insert(lines, {
                    order = v.LayoutOrder,
                    y = v.AbsolutePosition.Y,
                    text = v.Text
                })
            end
        end
    end

    if #lines > 0 then
        table.sort(lines, function(a, b)
            if a.order ~= 0 and b.order ~= 0 and a.order ~= b.order then
                return a.order < b.order
            end
            return a.y < b.y
        end)
        local res = {}
        for i = 1, #lines do
            res[i] = lines[i].text
        end
        return table.concat(res, "\n")
    end

    local history = logs:GetLogHistory()
    local raw = {}
    for i, item in ipairs(history) do
        raw[i] = item.message
    end
    return table.concat(raw, "\n")
end

local function checkValid(btn)
    if not (btn and btn:IsA("GuiObject") and btn.Name == "Clear") then return false end
    local buttons = btn.Parent
    if not (buttons and buttons.Name == "Buttons") then return false end
    local rConsole = buttons.Parent
    if not (rConsole and rConsole.Name == "RobloxConsole") then return false end
    local console = rConsole.Parent
    return (console and console.Name == "Console")
end

local function init()
    for _, obj in ipairs(cg:GetDescendants()) do
        if checkValid(obj) then
            local buttons = obj.Parent
            local rConsole = buttons.Parent
            
            if not buttons:FindFirstChild("Copy") then
                local copy = obj:Clone()
                copy.Name = "Copy"
                
                local title = copy:FindFirstChild("Title")
                if title then title.Text = "Copy" end
                
                local layout = buttons:FindFirstChildOfClass("UIListLayout")
                if layout then
                    copy.LayoutOrder = obj.LayoutOrder + 1
                else
                    local w = obj.AbsoluteSize.X > 0 and (obj.AbsoluteSize.X + 8) or 65
                    copy.Position = UDim2.new(obj.Position.X.Scale, obj.Position.X.Offset + w, obj.Position.Y.Scale, obj.Position.Y.Offset)
                end
                
                local defaultColor = copy.BackgroundColor3
                local busy = false
                
                local tIn = ts:Create(copy, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
                    BackgroundColor3 = Color3.fromRGB(35, 175, 85)
                })
                local tOut = ts:Create(copy, TweenInfo.new(0.35, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
                    BackgroundColor3 = defaultColor
                })
                
                local function handleClick()
                    if busy then return end
                    busy = true
                    
                    if setclip then
                        setclip(getLogs(rConsole))
                    end
                    
                    if title then title.Text = "Copied!" end
                    tIn:Play()
                    
                    task.delay(1, function()
                        tOut:Play()
                        if title and title.Parent then
                            title.Text = "Copy"
                        end
                        task.wait(0.35)
                        busy = false
                    end)
                end
                
                if copy:IsA("GuiButton") then
                    copy.MouseButton1Click:Connect(handleClick)
                else
                    local subBtn = copy:FindFirstChildWhichIsA("GuiButton", true)
                    if subBtn then subBtn.MouseButton1Click:Connect(handleClick) end
                end
                
                copy.InputBegan:Connect(function(input)
                    if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
                        handleClick()
                    end
                end)
                
                copy.Parent = buttons
            end
        end
    end
end

cg.DescendantAdded:Connect(function(desc)
    if checkValid(desc) then
        task.wait(0.1)
        init()
    end
end)

task.spawn(function()
    while true do
        pcall(init)
        task.wait(2)
    end
end)

init()

How to Execute Universal Script – Copy button

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

AquaHub
AquaHub
Script User
View Author Profile

Features & Information

Execute Universal Script – Copy button. Key system required, created by AquaHub, updated Oct 21, 2026. Tested and working on supported executors.

Script Changelog (1)

@AquaHubOct 21, 2026

Create script

Community Comments (1)

zofiezofieOct 22, 2026

this kinda pointless u can copy and paste

Frequently Asked Questions

How do I execute Universal Script – Copy button in Roblox?

To run Universal Script – Copy button, 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 – Copy button keyless or does it require an access key?

Universal Script – Copy button requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is Universal Script – Copy button 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.