Keyless country gui filter
Key Required

Keyless country gui filter

[🌍]Guess My Country!christianjescyanochristianjescyano 1.6K views 2.9K executesUpdated May 26, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•311 lines (10306 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")

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

local countries = {
	"Afghanistan","Albania","Algeria","Andorra","Angola","Antigua and Barbuda","Argentina","Armenia","Australia","Austria","Azerbaijan",
	"Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cabo Verde","Cambodia","Cameroon","Canada","Central African Republic","Chad","Chile","China","Colombia","Comoros","Congo","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Cyprus","Czechia","Democratic People's Republic of Korea","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Fiji","Finland","France","Gabon","Gambia","Georgia","Germany","Ghana","Greece","Grenada","Guatemala","Guinea","Guinea-Bissau","Guyana","Haiti","Honduras","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica","Japan","Jordan","Kazakhstan","Kenya","Kiribati","Kuwait","Kyrgyzstan","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Mauritania","Mauritius","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Zealand","Nicaragua","Niger","Nigeria","North Macedonia","Norway","Oman","Pakistan","Palau","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Qatar","Republic of Korea","Romania","Russian Federation","Rwanda","Saint Kitts and Nevis","Saint Lucia","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Sweden","Switzerland","Syrian Arab Republic","Tajikistan","Thailand","Timor-Leste","Togo","Tonga","Trinidad and Tobago","Tunisia","Turkiye","Turkmenistan","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United Republic of Tanzania","United States of America","Uruguay","Uzbekistan","Vanuatu","Venezuela","Viet Nam","Yemen","Zambia","Zimbabwe"
}

table.sort(countries)

local gui = Instance.new("ScreenGui")
gui.Name = "AdvancedCountryFilterGui"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.Parent = playerGui

local main = Instance.new("Frame")
main.Size = UDim2.new(0, 320, 0, 410)
main.Position = UDim2.new(0.5, -160, 0.5, -205)
main.BackgroundColor3 = Color3.fromRGB(28,28,32)
main.BorderSizePixel = 0
main.Parent = gui

Instance.new("UICorner", main).CornerRadius = UDim.new(0,14)

local stroke = Instance.new("UIStroke")
stroke.Thickness = 1
stroke.Color = Color3.fromRGB(70,70,80)
stroke.Parent = main

local header = Instance.new("Frame")
header.Size = UDim2.new(1,0,0,48)
header.BackgroundColor3 = Color3.fromRGB(35,35,40)
header.BorderSizePixel = 0
header.Parent = main

Instance.new("UICorner", header).CornerRadius = UDim.new(0,14)

local fix = Instance.new("Frame")
fix.Size = UDim2.new(1,0,0,14)
fix.Position = UDim2.new(0,0,1,-14)
fix.BackgroundColor3 = header.BackgroundColor3
fix.BorderSizePixel = 0
fix.Parent = header

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1,-120,0,18)
title.Position = UDim2.new(0,12,0,4)
title.BackgroundTransparency = 1
title.Font = Enum.Font.GothamBold
title.Text = "Country Filter"
title.TextSize = 16
title.TextColor3 = Color3.new(1,1,1)
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = header

local madeBy = Instance.new("TextLabel")
madeBy.Size = UDim2.new(1,-120,0,14)
madeBy.Position = UDim2.new(0,12,0,24)
madeBy.BackgroundTransparency = 1
madeBy.Font = Enum.Font.Gotham
madeBy.Text = "made by exblaze12"
madeBy.TextSize = 10
madeBy.TextColor3 = Color3.fromRGB(170,170,170)
madeBy.TextXAlignment = Enum.TextXAlignment.Left
madeBy.Parent = header

local minimize = Instance.new("TextButton")
minimize.Size = UDim2.new(0,36,0,28)
minimize.Position = UDim2.new(1,-80,0,10)
minimize.BackgroundColor3 = Color3.fromRGB(50,50,58)
minimize.Text = "—"
minimize.Font = Enum.Font.GothamBold
minimize.TextSize = 18
minimize.TextColor3 = Color3.new(1,1,1)
minimize.BorderSizePixel = 0
minimize.Parent = header

Instance.new("UICorner", minimize).CornerRadius = UDim.new(0,8)

local close = Instance.new("TextButton")
close.Size = UDim2.new(0,36,0,28)
close.Position = UDim2.new(1,-40,0,10)
close.BackgroundColor3 = Color3.fromRGB(90,40,40)
close.Text = "X"
close.Font = Enum.Font.GothamBold
close.TextSize = 16
close.TextColor3 = Color3.new(1,1,1)
close.BorderSizePixel = 0
close.Parent = header

Instance.new("UICorner", close).CornerRadius = UDim.new(0,8)

local body = Instance.new("Frame")
body.Size = UDim2.new(1,0,1,-48)
body.Position = UDim2.new(0,0,0,48)
body.BackgroundTransparency = 1
body.Parent = main

local function createLabel(text,y)
	local lbl = Instance.new("TextLabel")
	lbl.Size = UDim2.new(1,-24,0,18)
	lbl.Position = UDim2.new(0,12,0,y)
	lbl.BackgroundTransparency = 1
	lbl.Font = Enum.Font.Gotham
	lbl.TextSize = 13
	lbl.TextXAlignment = Enum.TextXAlignment.Left
	lbl.TextColor3 = Color3.fromRGB(210,210,210)
	lbl.Text = text
	lbl.Parent = body
end

local function createBox(placeholder,y)
	local box = Instance.new("TextBox")
	box.Size = UDim2.new(1,-24,0,34)
	box.Position = UDim2.new(0,12,0,y)
	box.BackgroundColor3 = Color3.fromRGB(42,42,48)
	box.BorderSizePixel = 0
	box.ClearTextOnFocus = false
	box.Font = Enum.Font.Gotham
	box.PlaceholderText = placeholder
	box.PlaceholderColor3 = Color3.fromRGB(170,170,170)
	box.Text = ""
	box.TextSize = 14
	box.TextColor3 = Color3.new(1,1,1)
	box.Parent = body
	
	Instance.new("UICorner", box).CornerRadius = UDim.new(0,10)
	
	return box
end

createLabel("Include letters",8)
local includeBox = createBox("Example: uxl",26)

createLabel("Exclude letters",66)
local excludeBox = createBox("Example: a",84)

createLabel("Letter count",124)
local lengthBox = createBox("Example: 4",142)

local info = Instance.new("TextLabel")
info.Size = UDim2.new(1,-24,0,20)
info.Position = UDim2.new(0,12,0,180)
info.BackgroundTransparency = 1
info.Font = Enum.Font.Gotham
info.TextSize = 12
info.TextXAlignment = Enum.TextXAlignment.Left
info.TextColor3 = Color3.fromRGB(200,200,200)
info.Text = "Showing all countries"
info.Parent = body

local listFrame = Instance.new("ScrollingFrame")
listFrame.Size = UDim2.new(1,-24,1,-204)
listFrame.Position = UDim2.new(0,12,0,200)
listFrame.BackgroundColor3 = Color3.fromRGB(22,22,26)
listFrame.BorderSizePixel = 0
listFrame.ScrollBarThickness = 6
listFrame.CanvasSize = UDim2.new(0,0,0,0)
listFrame.Parent = body

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

local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0,6)
layout.Parent = listFrame

local padding = Instance.new("UIPadding")
padding.PaddingTop = UDim.new(0,10)
padding.PaddingBottom = UDim.new(0,10)
padding.PaddingLeft = UDim.new(0,10)
padding.PaddingRight = UDim.new(0,10)
padding.Parent = listFrame

local function normalize(str)
	str = string.lower(str or "")
	local result = ""
	for i = 1,#str do
		local c = str:sub(i,i)
		if c:match("%a") then
			result ..= c
		end
	end
	return result
end

local function counts(str)
	local t = {}
	str = normalize(str)
	for i = 1,#str do
		local c = str:sub(i,i)
		t[c] = (t[c] or 0) + 1
	end
	return t
end

local function letterCount(str)
	return #normalize(str)
end

local function render()
	for _,v in ipairs(listFrame:GetChildren()) do
		if v:IsA("TextLabel") then
			v:Destroy()
		end
	end

	local include = counts(includeBox.Text)
	local exclude = counts(excludeBox.Text)
	local wantedLength = tonumber(lengthBox.Text)

	local results = {}

	for _,country in ipairs(countries) do
		local valid = true
		local cCounts = counts(country)

		for l,n in pairs(include) do
			if (cCounts[l] or 0) < n then
				valid = false
			end
		end

		for l in pairs(exclude) do
			if (cCounts[l] or 0) > 0 then
				valid = false
			end
		end

		if wantedLength and letterCount(country) ~= wantedLength then
			valid = false
		end

		if valid then
			table.insert(results,country)
		end
	end

	info.Text = "Showing "..#results.." countries"

	for _,country in ipairs(results) do
		local lbl = Instance.new("TextLabel")
		lbl.Size = UDim2.new(1,0,0,24)
		lbl.BackgroundTransparency = 1
		lbl.Font = Enum.Font.Gotham
		lbl.TextSize = 14
		lbl.TextColor3 = Color3.new(1,1,1)
		lbl.TextXAlignment = Enum.TextXAlignment.Left
		lbl.Text = "• "..country
		lbl.Parent = listFrame
	end

	task.wait()

	listFrame.CanvasSize = UDim2.new(0,0,0,layout.AbsoluteContentSize.Y + 20)
end

includeBox:GetPropertyChangedSignal("Text"):Connect(render)
excludeBox:GetPropertyChangedSignal("Text"):Connect(render)
lengthBox:GetPropertyChangedSignal("Text"):Connect(render)

local minimized = false

minimize.MouseButton1Click:Connect(function()
	minimized = not minimized
	body.Visible = not minimized
	main.Size = minimized and UDim2.new(0,320,0,48) or UDim2.new(0,320,0,410)
end)

close.MouseButton1Click:Connect(function()
	gui:Destroy()
end)

local dragging = false
local dragStart
local startPos

local function update(input)
	local delta = input.Position - dragStart
	main.Position = UDim2.new(
		startPos.X.Scale,
		startPos.X.Offset + delta.X,
		startPos.Y.Scale,
		startPos.Y.Offset + delta.Y
	)
end

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

		input.Changed:Connect(function()
			if input.UserInputState == Enum.UserInputState.End then
				dragging = false
			end
		end)
	end
end)

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

render()

Features & Information

Simple made gui guess my country!!

Community Comments (6)

christianjescyanochristianjescyanoMay 26, 2026

Tell me if not working I might've deleted something while refining it

FPSTesterFPSTesterMay 26, 2026

doesnt work

Replying to @FPSTester
christianjescyanochristianjescyanoMay 26, 2026

@FPSTester thx for telling!!

Replying to @FPSTester
christianjescyanochristianjescyanoMay 26, 2026

@FPSTester fixed it!! Theres no way its not working now unless executor problem but my script is pretty basic made which i doubt executors having errors

christianjescyanochristianjescyanoMay 26, 2026

I reccomend copying it here instead of searching it in your executor cuz i think theres been a bug in search system or scriptblox itself

AdriennAdriennMay 31, 2026

Pls add vatican city

More Scripts for [🌍]Guess My Country!