‹ Back to My Code Random Names | A Easy To Use Library OF Names
modules lua
-- RandomNames.lua
-- Place in ReplicatedStorage as a ModuleScript
-- Usage: local Names = require(game.ReplicatedStorage.RandomNames)

local RandomNames = {}

-- ============================================================
-- USERNAMES (Roblox-style, brandable)
-- ============================================================
RandomNames.Usernames = {
	-- Short & punchy
	"Vex", "Zyr", "Nova", "Echo", "Ember", "Frost", "Drift", "Halo",
	"Onyx", "Lumen", "Raven", "Apex", "Ivory", "Flint", "Cinder", "Quartz",
	"Vigor", "Axis", "Terra", "Storm", "Sage", "Prime", "Violet", "Comet",
	"Gale", "Shade", "Dawn", "Dusk", "Ridge", "Pulse", "Flare", "Cobalt",
	"Wisp", "Lunar", "Ripple", "Verge", "Zenith", "Glint", "Silk", "Stone",
	"Thorn", "Aqua", "Zen", "Blaze", "Rune", "Nyx", "Kite", "Jolt",
	"Vale", "Peak", "Dune", "Reef", "Mist", "Aura", "Byte", "Neon",

	-- Brandable & clean
	"Vyxen", "Zorin", "Qyra", "Ryvox", "Kyron", "Zevra", "Nyxo", "Riven",
	"Vexan", "Xyler", "Qyven", "Zyral", "Vylar", "Ryzen", "Kyvren", "Zevron",
	"Xarion", "Zyvox", "Mintor", "Onyxmark", "Pixelcrest", "Cloudbrand", "Novasig", "Echoalias",
	"Jadeforge", "Retroflux", "Lunapulse", "Quartzcore", "Veloxmark", "Sapphcrest", "Cosmimark", "Vexalabel",
	"Skyeclaim", "Mochaid", "Hyperbrand", "Zeronexus", "Ryxcrest", "Aqualabel", "Violetmark", "Echohandle",
	"Mintmatrix", "Onyxvector", "Novaflash", "Claimora", "Swiftgrab", "Blinktag", "Creston", "Zyvren",
	"Vantablack", "Ironwake", "Silentpath", "Crystalvein", "Nightloom", "Stormcall", "Emberlight", "Frostbyte",
	"Ghostwire", "Hexaform", "Lumengrid", "Mythcore", "Nebulark", "Obsidian", "Phantomly", "Quantumly",
	"Radiantx", "Shadowkin", "Titanium", "Umbrafox", "Voidwalk", "Wildfire", "Xenolith", "Yieldpath",
	"Zenithra", "Aetheris", "Brightloom", "Cinderveil", "Duskborn", "Ethernal", "Fablewood", "Glimmera",
}

-- ============================================================
-- NPC FIRST / LAST NAMES (human-like)
-- ============================================================
RandomNames.FirstNames = {
	"Alex", "Jordan", "Riley", "Casey", "Morgan", "Taylor", "Jamie", "Avery",
	"Quinn", "Rowan", "Skyler", "Dakota", "Peyton", "Reese", "Sawyer", "Finley",
	"Kai", "Leo", "Mia", "Nora", "Owen", "Liam", "Emma", "Noah",
	"Olivia", "Ethan", "Ava", "Lucas", "Sophia", "Mason", "Isla", "Logan",
	"Zoe", "Elijah", "Lily", "Carter", "Chloe", "James", "Grace", "Henry",
	"Ruby", "Jack", "Hazel", "Finn", "Iris", "Milo", "Nova", "Jude",
	"Ada", "Ezra", "Wren", "Silas", "Faye", "Theo", "June", "Atlas",
	"Lyra", "Cyrus", "Opal", "Reid", "Vera", "Knox", "Ivy", "Rhys",
	"Zara", "Cole", "Maeve", "Beau", "Sage", "Dean", "Rose", "Neil",
	"Elle", "Troy", "Skye", "Lane", "Demi", "Clay", "Nina", "Grant",
}

RandomNames.LastNames = {
	"Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller", "Davis",
	"Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez", "Wilson", "Anderson", "Thomas",
	"Taylor", "Moore", "Jackson", "Martin", "Lee", "Perez", "Thompson", "White",
	"Harris", "Sanchez", "Clark", "Ramirez", "Lewis", "Robinson", "Walker", "Young",
	"Allen", "King", "Wright", "Scott", "Torres", "Nguyen", "Hill", "Flores",
	"Green", "Adams", "Nelson", "Baker", "Hall", "Rivera", "Campbell", "Mitchell",
	"Carter", "Roberts", "Gomez", "Phillips", "Evans", "Turner", "Diaz", "Parker",
	"Cruz", "Edwards", "Collins", "Reyes", "Stewart", "Morris", "Morales", "Murphy",
	"Cook", "Rogers", "Gutierrez", "Ortiz", "Morgan", "Cooper", "Peterson", "Bailey",
	"Reed", "Kelly", "Howard", "Ramos", "Kim", "Cox", "Ward", "Richardson",
}

-- ============================================================
-- ROLEPLAY / CITY NAMES
-- ============================================================
RandomNames.Cities = {
	"Brookhaven", "Berry Avenue", "Livetopia", "Dreamville", "Metro Life", "Seaside RP",
	"Calla City", "Happy Land", "Redcliff City", "Paradise City", "Boxywood", "Cozy Town",
	"Bloxy City", "Baybrook", "Silverpeak", "LewisLife", "Palmhaven City", "Main Street",
	"Pineville", "Highland Park", "Rockford City", "Ocean Hotel", "KeyWest", "Happy Town",
	"Seaboard City", "Bayside High", "Willow Creek", "Maple Grove", "Cedar Falls", "Riverside",
	"Lakewood", "Fairview", "Springfield", "Ashford", "Brighton", "Clayton",
	"Dover", "Easton", "Franklin", "Georgetown", "Hamilton", "Irvine",
	"Kingston", "Lexington", "Madison", "Newport", "Oakland", "Portland",
	"Quincy", "Richmond", "Salem", "Trenton", "Upland", "Vernon",
	"Westbrook", "Yorkshire", "Zion", "Aurora", "Bristol", "Camden",
}

-- ============================================================
-- GAME / PLACE TITLES
-- ============================================================
RandomNames.GameTitles = {
	-- Battlegrounds / Combat
	"Backstreets Battlegrounds", "Moonlight Battlegrounds", "Cogito Battlegrounds",
	"Distortion Battleground", "City of Light", "Average City Brawls", "Dueling Grounds",
	"Knife Arena", "Ability Arena", "Sniper Arena", "Blade Ball", "Combat Warriors",
	"Rivals", "Arsenal", "Phantom Forces", "Bad Business", "Frontlines",

	-- Simulators / Tycoons
	"Bee Swarm Simulator", "Pet Simulator", "Restaurant Tycoon", "War Tycoon",
	"Slime RNG", "Sol's RNG", "Car Flipper", "Deadly Golf", "Merge a Nuke",
	"Mining Simulator", "Fishing Simulator", "Clicker Simulator", "Gym Tycoon",
	"Pizza Tycoon", "Theme Park Tycoon", "Retail Tycoon", "Mall Tycoon",

	-- Roleplay / Survival
	"Welcome to Bloxburg", "Da Hood", "Street Life Remastered", "Asylum Life",
	"Survive the Apocalypse", "Apocalypse Rising", "Flee the Facility", "Evade",
	"Dead Rails", "Violence District", "The Survival Game", "Islands",
	"Skyblock", "Prison Life", "Jailbreak", "Mad City",

	-- Adventure / Obby
	"Tower of Hell", "Mega Easy Obby", "Escape the Dungeon", "Adventure Forward",
	"Parkour Legends", "Speed Run 4", "Flood Escape 2", "Epic Minigames",
}

-- ============================================================
-- HELPER FUNCTIONS
-- ============================================================

local function pickRandom(list)
	return list[math.random(1, #list)]
end

--- Returns a random Roblox-style username.
function RandomNames.getUsername()
	return pickRandom(RandomNames.Usernames)
end

--- Returns a random full NPC name (First + Last).
function RandomNames.getFullName()
	local first = pickRandom(RandomNames.FirstNames)
	local last = pickRandom(RandomNames.LastNames)
	return first .. " " .. last
end

--- Returns a random city / roleplay location name.
function RandomNames.getCity()
	return pickRandom(RandomNames.Cities)
end

--- Returns a random game title.
function RandomNames.getGameTitle()
	return pickRandom(RandomNames.GameTitles)
end

--- Returns a random unique username by appending a number.
-- @param digits number of digits to append (default 3)
function RandomNames.getUniqueUsername(digits)
	digits = digits or 3
	local max = 10 ^ digits - 1
	local num = math.random(0, max)
	local padded = string.format("%0" .. digits .. "d", num)
	return pickRandom(RandomNames.Usernames) .. padded
end

--- Returns a batch of N random unique usernames.
-- @param count how many to generate
function RandomNames.getUsernames(count)
	local result = {}
	local used = {}
	count = count or 10
	local attempts = 0
	while #result < count and attempts < count * 20 do
		attempts += 1
		local name = RandomNames.getUniqueUsername()
		if not used[name] then
			used[name] = true
			table.insert(result, name)
		end
	end
	return result
end

--- Returns a batch of N random full names.
function RandomNames.getFullNames(count)
	local result = {}
	count = count or 10
	for i = 1, count do
		table.insert(result, RandomNames.getFullName())
	end
	return result
end

return RandomNames