VC Bypasser
Key RequiredUniversal

VC Bypasser

Universal Script0daybroker0daybroker 16.7K views 1.8K executesUpdated Jul 17, 2025
3.3/ 5(3 votes)
2167% Positive
Lua Script•172 lines (4921 chars)
-- Services
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")

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

-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "VoiceChatToggleGui"
screenGui.Parent = playerGui
screenGui.ResetOnSpawn = false

-- Create Container Frame
local container = Instance.new("Frame")
container.Name = "Container"
container.Size = UDim2.new(0, 65, 0, 65)
container.Position = UDim2.new(0.9, -30, 0.7, -30)
container.BackgroundTransparency = 1
container.Parent = screenGui

-- Create the Button
local toggleButton = Instance.new("TextButton")
toggleButton.Name = "ToggleButton"
toggleButton.Text = "🎤"
toggleButton.Size = UDim2.new(1, -5, 1, -5)
toggleButton.Position = UDim2.new(0, 2.5, 0, 2.5)
toggleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
toggleButton.BackgroundTransparency = 0.1
toggleButton.Font = Enum.Font.GothamBold
toggleButton.TextSize = 28
toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleButton.Parent = container

-- Add corner radius
local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(1, 0)
buttonCorner.Parent = toggleButton

-- Create keyboard hint label
local keyHint = Instance.new("TextLabel")
keyHint.Name = "KeyHint"
keyHint.Text = "[V]"
keyHint.Size = UDim2.new(0, 30, 0, 20)
keyHint.Position = UDim2.new(0.5, -15, 1, 5)
keyHint.BackgroundTransparency = 1
keyHint.Font = Enum.Font.GothamBold
keyHint.TextSize = 14
keyHint.TextColor3 = Color3.fromRGB(255, 255, 255)
keyHint.Parent = container

-- Only show the GUI for mobile users
if not UserInputService.TouchEnabled then
    screenGui.Enabled = false
end

-- Dragging functionality
local isDragging = false
local dragStart
local startPos

local function updateDrag(input)
    local delta = input.Position - dragStart
    local position = UDim2.new(
        startPos.X.Scale,
        startPos.X.Offset + delta.X,
        startPos.Y.Scale,
        startPos.Y.Offset + delta.Y
    )
    
    local viewportSize = workspace.CurrentCamera.ViewportSize
    local containerSize = container.AbsoluteSize
    
    position = UDim2.new(
        position.X.Scale,
        math.clamp(position.X.Offset, 0, viewportSize.X - containerSize.X),
        position.Y.Scale,
        math.clamp(position.Y.Offset, 0, viewportSize.Y - containerSize.Y)
    )
    
    container.Position = position
end

-- Touch and mouse input handling
container.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or
       input.UserInputType == Enum.UserInputType.Touch then
        isDragging = true
        dragStart = input.Position
        startPos = container.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                isDragging = false
            end
        end)
    end
end)

-- Simple hover effect
toggleButton.MouseEnter:Connect(function()
    TweenService:Create(toggleButton, TweenInfo.new(0.3), {
        Size = UDim2.new(1, -2, 1, -2),
        Position = UDim2.new(0, 1, 0, 1)
    }):Play()
end)

toggleButton.MouseLeave:Connect(function()
    TweenService:Create(toggleButton, TweenInfo.new(0.3), {
        Size = UDim2.new(1, -5, 1, -5),
        Position = UDim2.new(0, 2.5, 0, 2.5)
    }):Play()
end)

UserInputService.InputChanged:Connect(function(input)
    if isDragging and
       (input.UserInputType == Enum.UserInputType.MouseMovement or
        input.UserInputType == Enum.UserInputType.Touch) then
        updateDrag(input)
    end
end)

-- Voice chat logic
local isRunning = false
local loopTask

local function startVoiceChatLoop()
    isRunning = true
    TweenService:Create(toggleButton, TweenInfo.new(0.3), {
        BackgroundColor3 = Color3.fromRGB(170, 0, 0)
    }):Play()
    
    loopTask = coroutine.create(function()
        while isRunning do
            game:GetService("VoiceChatService"):joinVoice()
            wait(3)
        end
    end)
    coroutine.resume(loopTask)
end

local function stopVoiceChatLoop()
    isRunning = false
    TweenService:Create(toggleButton, TweenInfo.new(0.3), {
        BackgroundColor3 = Color3.fromRGB(0, 170, 0)
    }):Play()
end

local function toggleVoiceChat()
    if isRunning then
        stopVoiceChatLoop()
    else
        startVoiceChatLoop()
    end
end

-- Connect button click
toggleButton.MouseButton1Click:Connect(toggleVoiceChat)

-- Connect keyboard input
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if not gameProcessed and input.KeyCode == Enum.KeyCode.V then
        toggleVoiceChat()
    end
end)

-- Mobile detection to show/hide keyboard hint
if UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled then
    keyHint.Visible = false
end

Features & Information

This script allows you to bypass VC suspension in game without waiting and rejoining.
#voicechat#vc#robloxvoicechat

Community Comments (7)

Totally_randomTotally_randomJul 18, 2025

made with gpt but cool

Totally_randomTotally_randomJul 18, 2025

here some tips: -- TODO: Improve VoiceChatService logic. Using a coroutine loop with joinVoice() every 3 seconds is inefficient and might cause issues. -- TODO: Add proper checks to see if VoiceChatService is available and if the player has permission to use voice chat. -- TODO: Prevent multiple coroutines from starting if the button is spammed quickly. -- TODO: Provide visual/audio feedback to the user showing whether voice chat is successfully activated or not. -- TODO: Optimize mobile/desktop detection logic. Currently disables the GUI completely on non-touch devices. -- TODO: Add error handling for potential failures when calling joinVoice(). -- TODO: Consider storing GUI position with SetCore("SendNotification") or DataStore for user convenience.

Aabbaaii13Aabbaaii13Jul 18, 2025

I could make better version of this

Replying to @Aabbaaii13
TnttrevTnttrevOct 11, 2025

@Aabbaaii13 do it then

Replying to @Aabbaaii13
Axenor11Axenor11Apr 18, 2026

@Aabbaaii13 could u give me that?

bobbfu8bobbfu8Apr 3, 2026

this got my vc banned

bobbfu8bobbfu8Apr 3, 2026

@Aabbaii13 Can you fix it got my vc banned

More Scripts for Universal Scripts