SolSpy *Works for pc*
Key RequiredUniversal

SolSpy *Works for pc*

Universal ScriptSignalDropSignalDrop 601 views 45 executesUpdated Jan 19, 2026
2.5/ 5(2 votes)
1150% Positive
Lua Script•459 lines (16105 chars)
-- woah



local G2L = {};

_G.Code = ""

-- StarterGui.SolSpy
G2L["1"] = Instance.new("ScreenGui", game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui"));
G2L["1"]["Name"] = [[SolSpy]];
G2L["1"]["ResetOnSpawn"] = false
G2L["1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling;

-- StarterGui.SolSpy.Frame
G2L["2"] = Instance.new("Frame", G2L["1"]);
G2L["2"]["BorderSizePixel"] = 0;
G2L["2"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["2"]["Size"] = UDim2.new(0, 425, 0, 253);
G2L["2"]["Position"] = UDim2.new(0.02067, 0, 0.17804, 0);
G2L["2"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);

-- StarterGui.SolSpy.Frame.TopBar
G2L["3"] = Instance.new("Frame", G2L["2"]);
G2L["3"]["BorderSizePixel"] = 0;
G2L["3"]["BackgroundColor3"] = Color3.fromRGB(38, 36, 39);
G2L["3"]["Size"] = UDim2.new(0, 425, 0, 18);
G2L["3"]["Position"] = UDim2.new(0, 0, -0.00378, 0);
G2L["3"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["3"]["Name"] = [[TopBar]];

-- StarterGui.SolSpy.Frame.TopBar.Name
G2L["4"] = Instance.new("TextLabel", G2L["3"]);
G2L["4"]["BorderSizePixel"] = 0;
G2L["4"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["4"]["TextSize"] = 14;
G2L["4"]["FontFace"] = Font.new([[rbxasset://fonts/families/Arial.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["4"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["4"]["BackgroundTransparency"] = 1;
G2L["4"]["Size"] = UDim2.new(0, 58, 0, 14);
G2L["4"]["BorderColor3"] = Color3.fromRGB(255, 255, 255);
G2L["4"]["Text"] = [[SolSpy]];
G2L["4"]["Name"] = [[Name]];
G2L["4"]["Position"] = UDim2.new(0, 0, 0, 0);

-- StarterGui.SolSpy.Frame.TopBar.X
G2L["5"] = Instance.new("TextButton", G2L["3"]);
G2L["5"]["BorderSizePixel"] = 0;
G2L["5"]["TextStrokeColor3"] = Color3.fromRGB(255, 255, 255);
G2L["5"]["TextSize"] = 21;
G2L["5"]["TextColor3"] = Color3.fromRGB(205, 205, 205);
G2L["5"]["BackgroundColor3"] = Color3.fromRGB(38, 36, 39);
G2L["5"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["5"]["RichText"] = true;
G2L["5"]["Size"] = UDim2.new(0, 24, 0, 18);
G2L["5"]["Name"] = [[X]];
G2L["5"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["5"]["Text"] = [[X]];
G2L["5"]["Position"] = UDim2.new(0.94353, 0, 0, 0);

-- StarterGui.SolSpy.Frame.Buttons
G2L["6"] = Instance.new("Frame", G2L["2"]);
G2L["6"]["BorderSizePixel"] = 0;
G2L["6"]["BackgroundColor3"] = Color3.fromRGB(75, 75, 75);
G2L["6"]["Size"] = UDim2.new(0, 273, 0, 106);
G2L["6"]["Position"] = UDim2.new(0.35765, 0, 0.58103, 0);
G2L["6"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["6"]["Name"] = [[Buttons]];

-- StarterGui.SolSpy.Frame.Buttons.CopyR
G2L["7"] = Instance.new("TextButton", G2L["6"]);
G2L["7"]["TextSize"] = 14;
G2L["7"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["7"]["BackgroundColor3"] = Color3.fromRGB(27, 27, 29);
G2L["7"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["7"]["Size"] = UDim2.new(0, 93, 0, 17);
G2L["7"]["Name"] = [[CopyR]];
G2L["7"]["BorderColor3"] = Color3.fromRGB(139, 139, 139);
G2L["7"]["Text"] = [[Copy Remote]];
G2L["7"]["Position"] = UDim2.new(0.32967, 0, 0.08491, 0);

-- StarterGui.SolSpy.Frame.Buttons.CopyR.Border
G2L["8"] = Instance.new("TextLabel", G2L["7"]);
G2L["8"]["BorderSizePixel"] = 0;
G2L["8"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["8"]["TextSize"] = 14;
G2L["8"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["8"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["8"]["Size"] = UDim2.new(0, 8, 0, 17);
G2L["8"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["8"]["Text"] = [[]];
G2L["8"]["Name"] = [[Border]];

-- StarterGui.SolSpy.Frame.Buttons.CopyC
G2L["9"] = Instance.new("TextButton", G2L["6"]);
G2L["9"]["TextSize"] = 14;
G2L["9"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["9"]["BackgroundColor3"] = Color3.fromRGB(27, 27, 29);
G2L["9"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["9"]["Size"] = UDim2.new(0, 83, 0, 17);
G2L["9"]["Name"] = [[CopyC]];
G2L["9"]["BorderColor3"] = Color3.fromRGB(139, 139, 139);
G2L["9"]["Text"] = [[Copy Code]];
G2L["9"]["Position"] = UDim2.new(0, 0, 0.08491, 0);

G2L["9"].MouseButton1Click:Connect(function()


	if setclipboard then

	setclipboard(_G.Code)

	else
		print("Your executer doesn't support clipboard")
	end
end)

-- StarterGui.SolSpy.Frame.Buttons.CopyC.Border
G2L["a"] = Instance.new("TextLabel", G2L["9"]);
G2L["a"]["BorderSizePixel"] = 0;
G2L["a"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["a"]["TextSize"] = 14;
G2L["a"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["a"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["a"]["Size"] = UDim2.new(0, 8, 0, 17);
G2L["a"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["a"]["Text"] = [[]];
G2L["a"]["Name"] = [[Border]];

-- StarterGui.SolSpy.Frame.Buttons.Run
G2L["b"] = Instance.new("TextButton", G2L["6"]);
G2L["b"]["TextSize"] = 14;
G2L["b"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["b"]["BackgroundColor3"] = Color3.fromRGB(27, 27, 29);
G2L["b"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["b"]["Size"] = UDim2.new(0, 81, 0, 17);
G2L["b"]["Name"] = [[Run]];
G2L["b"]["BorderColor3"] = Color3.fromRGB(139, 139, 139);
G2L["b"]["Text"] = [[Run Code]];
G2L["b"]["Position"] = UDim2.new(0.7033, 0, 0.08491, 0);

-- StarterGui.SolSpy.Frame.Buttons.Run.Border
G2L["c"] = Instance.new("TextLabel", G2L["b"]);
G2L["c"]["BorderSizePixel"] = 0;
G2L["c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["c"]["TextSize"] = 14;
G2L["c"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["c"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["c"]["Size"] = UDim2.new(0, 8, 0, 17);
G2L["c"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["c"]["Text"] = [[]];
G2L["c"]["Name"] = [[Border]];

G2L["d2"] = Instance.new("TextButton", G2L["6"]);
G2L["d2"]["TextSize"] = 14;
G2L["d2"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["d2"]["BackgroundColor3"] = Color3.fromRGB(27, 27, 29);
G2L["d2"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["d2"]["Size"] = UDim2.new(0, 83, 0, 17);
G2L["d2"]["Name"] = [[Clear]];
G2L["d2"]["BorderColor3"] = Color3.fromRGB(139, 139, 139);
G2L["d2"]["Text"] = [[Clear Output]];
G2L["d2"]["Position"] = UDim2.new(0, 0, 0.33962, 0);

G2L["e2"] = Instance.new("TextLabel", G2L["d2"]);
G2L["e2"]["BorderSizePixel"] = 0;
G2L["e2"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["e2"]["TextSize"] = 14;
G2L["e2"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["e2"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["e2"]["Size"] = UDim2.new(0, 8, 0, 17);
G2L["e2"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["e2"]["Text"] = [[]];
G2L["e2"]["Name"] = [[Border]];

-- StarterGui.SolSpy.Frame.Remotes
G2L["d"] = Instance.new("ScrollingFrame", G2L["2"]);
G2L["d"]["Active"] = true;
G2L["d"]["BorderSizePixel"] = 0;
G2L["d"]["CanvasSize"] = UDim2.new(9999, 9999, 9999, 9999);
G2L["d"]["BackgroundColor3"] = Color3.fromRGB(54, 54, 56);
G2L["d"]["Name"] = [[Remotes]];
G2L["d"]["ScrollBarImageTransparency"] = 1;
G2L["d"]["Size"] = UDim2.new(0, 152, 0, 236);
G2L["d"]["ScrollBarImageColor3"] = Color3.fromRGB(0, 0, 0);
G2L["d"]["Position"] = UDim2.new(0, 0, 0.06719, 0);
G2L["d"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["d"]["ScrollBarThickness"] = 0;
G2L["d"]["LayoutOrder"] = 1;

-- StarterGui.SolSpy.Frame.Remotes.RemoteExample
G2L["e"] = Instance.new("TextButton", G2L["d"]);
G2L["e"]["BorderSizePixel"] = 3;
G2L["e"]["TextSize"] = 14;
G2L["e"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
G2L["e"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
G2L["e"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.SemiBold, Enum.FontStyle.Normal);
G2L["e"]["Size"] = UDim2.new(0, 152, 0, 22);
G2L["e"]["BackgroundTransparency"] = 0.8;
G2L["e"]["Name"] = [[RemoteExample]];
G2L["e"]["BorderColor3"] = Color3.fromRGB(93, 96, 102);
G2L["e"]["Text"] = [[RemoteName]];

-- StarterGui.SolSpy.Frame.Remotes.RemoteExample.border
G2L["f"] = Instance.new("TextLabel", G2L["e"]);
G2L["f"]["BorderSizePixel"] = 0;
G2L["f"]["BackgroundColor3"] = Color3.fromRGB(253, 242, 81);
G2L["f"]["TextSize"] = 14;
G2L["f"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["f"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["f"]["Size"] = UDim2.new(0, 10, 0, 22);
G2L["f"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["f"]["Text"] = [[]];
G2L["f"]["Name"] = [[border]];

-- StarterGui.SolSpy.Frame.Remotes.UIListLayout
G2L["10"] = Instance.new("UIListLayout", G2L["d"]);
G2L["10"]["Padding"] = UDim.new(0, 7);
G2L["10"]["SortOrder"] = Enum.SortOrder.LayoutOrder;

-- StarterGui.SolSpy.Frame.CodeSample
G2L["11"] = Instance.new("TextBox", G2L["2"]);
G2L["11"]["CursorPosition"] = -1;
G2L["11"]["Interactable"] = false;
G2L["11"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
G2L["11"]["BorderSizePixel"] = 0;
G2L["11"]["TextXAlignment"] = Enum.TextXAlignment.Left;
G2L["11"]["TextWrapped"] = true;
G2L["11"]["TextSize"] = 15;
G2L["11"]["Name"] = [[CodeSample]];
G2L["11"]["TextYAlignment"] = Enum.TextYAlignment.Top;
G2L["11"]["BackgroundColor3"] = Color3.fromRGB(42, 45, 54);
G2L["11"]["FontFace"] = Font.new([[rbxasset://fonts/families/Balthazar.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal);
G2L["11"]["MultiLine"] = true;
G2L["11"]["ClearTextOnFocus"] = false;
G2L["11"]["Size"] = UDim2.new(0, 272, 0, 130);
G2L["11"]["Position"] = UDim2.new(0.35784, 0, 0.06719, 0);
G2L["11"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
G2L["11"]["Text"] = [[]];

-- StarterGui.SolSpy.Frame.Drag
G2L["12"] = Instance.new("LocalScript", G2L["2"]);
G2L["12"]["Name"] = [[Drag]];

-- StarterGui.SolSpy.Frame.Main
G2L["13"] = Instance.new("LocalScript", G2L["2"]);
G2L["13"]["Name"] = [[Main]];

-- StarterGui.SolSpy.Frame.Drag
local function C_12()
local script = G2L["12"];
	local frame = script.Parent
	local UserInputService = game:GetService("UserInputService")
	
	local dragging
	local dragInput
	local dragStart
	local startPos
	
	local function update(input)
		local delta = input.Position - dragStart
		frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
	end
	
	frame.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			dragStart = input.Position
			startPos = frame.Position
	
			input.Changed:Connect(function()
				if input.UserInputState == Enum.UserInputState.End then
					dragging = false
				end
			end)
		end
	end)
	
	frame.InputChanged:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
			dragInput = input
		end
	end)
	
	UserInputService.InputChanged:Connect(function(input)
		if input == dragInput and dragging then
			update(input)
		end
	end)
	
end;
task.spawn(C_12);
-- StarterGui.SolSpy.Frame.Main
local function C_13()
local script = G2L["13"];
	local TweenService = game:GetService("TweenService")
	
	local MainFrame = script.Parent
	local TopBar = MainFrame.TopBar
	
	local function Close()
		
		MainFrame.Parent:Destroy()
		
	end
	
	local function SetupButtons()
		
		TopBar.X.MouseEnter:Connect(function()
			TweenService:Create(TopBar.X, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(170, 0, 0)}):Play()
		end)
		
		TopBar.X.MouseLeave:Connect(function()
			TweenService:Create(TopBar.X, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(37, 35, 38)}):Play()
		end)
		
		TopBar.X.MouseButton1Click:Connect(function()
			Close()
		end)

		MainFrame.Buttons.Clear.MouseButton1Click:Connect(function()
			
			for _,v in pairs(MainFrame.Remotes:GetChildren()) do
				if v:IsA("TextButton") then
					v:Destroy()
				end
			end
			
		end)
		
	end
	
	local function Init()
		
		-- Close Function
		
		SetupButtons()
		
	end
	
	Init()
end;
task.spawn(C_13);

local function getPathToInstance(instance)
    local path = {}
    local current = instance
    while current and current ~= game do
        local name = current.Name
        if name:sub(1, 4) == "Game" then
            name = "game" .. name:sub(5)
        end
        table.insert(path, 1, name)
        current = current.Parent
    end
    return table.concat(path, ".")
end

local function formatValue(value)
    if typeof(value) == "string" then
        return string.format("%q", value)
    elseif typeof(value) == "number" then
        return tostring(value)
    elseif typeof(value) == "boolean" then
        return value and "true" or "false"
    elseif typeof(value) == "Instance" then
        return getPathToInstance(value)
    else
        return string.format("%q", tostring(value))
    end
end

local function Format(args)
    local formattedArgs = {}
    for i, arg in ipairs(args) do
        formattedArgs[i] = string.format("[%d] = %s", i, formatValue(arg))
    end
    return formattedArgs
end

local function handleRemote(remote)
    local path = {}
    local current = remote
    while current and current.Parent ~= game do
        local name = current.Name
        if name:sub(1, 4) == "Game" then
            name = "game" .. name:sub(5)
        end
        table.insert(path, 1, name)
        current = current.Parent
    end
    local fullPath = table.concat(path, ".")

    if remote:IsA("RemoteEvent") then
        remote.OnClientEvent:Connect(function(...)
            local args = {...}
            local argsFormatted = Format(args)
            local argsString = table.concat(argsFormatted, ",\n    ")

            G2L["yu"] = G2L["e"]:Clone()
            G2L["yu"]["Name"] = remote.Name
            G2L["yu"]["Text"] = remote.Name
            G2L["yu"]["Parent"] = G2L["d"]
            G2L["yu"].MouseButton1Click:Connect(function()

				_G.Code = string.format("local args = {\n    %s\n}\n%s:FireServer(unpack(args))", argsString, fullPath)

                G2L["11"]["Text"] = _G.Code
            end)
		end)
    elseif remote:IsA("RemoteFunction") then
        remote.OnClientInvoke = function(...)
            local args = {...}
            local argsFormatted = Format(args)
            local argsString = table.concat(argsFormatted, ",\n    ")

            G2L["yu2"] = G2L["e"]:Clone()
            G2L["yu2"]["Name"] = remote.Name
            G2L["yu2"]["Text"] = remote.Name
            G2L["yu2"]["Parent"] = G2L["d"]
            G2L["yu2"].MouseButton1Click:Connect(function()
                _G.Code = string.format("local args = {\n    %s\n}\n%s:InvokeServer(unpack(args))", argsString, fullPath)
            end)
            
            return ...
        end
    end
end

local function wrapRemotes(folder)
    for _, obj in ipairs(folder:GetDescendants()) do
        if obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") then
            handleRemote(obj)
        end
    end
    folder.DescendantAdded:Connect(function(descendant)
        if descendant:IsA("RemoteEvent") or descendant:IsA("RemoteFunction") then
            handleRemote(descendant)
        end
    end)
end

local folders = {
    game.ReplicatedStorage,
    game.StarterGui,
    game.StarterPack,
    game.StarterPlayer
}

for _, folder in ipairs(folders) do
    wrapRemotes(folder)
    folder.DescendantAdded:Connect(function(descendant)
        if descendant:IsA("RemoteEvent") or descendant:IsA("RemoteFunction") then
            handleRemote(descendant)
        end
    end)
end

return G2L["1"], require;

Features & Information

Remote intelligence operative. Signals over footsteps. Data over noise. Connected everywhere. Seen nowhere.

Community Comments (4)

SignalDropSignalDropJan 20, 2026

Its kinda bunz

RGL_realRGL_realFeb 2, 2026

what is this for because it sounds insanely good.

Replying to @RGL_real
SignalDropSignalDropMay 24, 2026

@RGL_real it reads the servers remotes basically it shows u what remotes players are firing so u can see actions info and signals they trigger kinda like watching the server talk in real time

Replying to @RGL_real
SignalDropSignalDropMay 24, 2026

but its just pc version

More Scripts for Universal Scripts