Grand opening25% off everything with FAM-261023-261025-UL4B9this weekendTick it in your cart Halloween Edition36 maps, limited runlimited runShop the drop

FREE TOOL · FOUR GENERATORS

FiveM roleplay generators

A roleplay character, a server name, a gang and a script idea — four generators in one page, all running in your browser. Every result is built from a seed, so the link in your address bar reproduces exactly what you are looking at, and you can send it to whoever is reviewing the application.

Nothing is stored and nothing is sent anywhere. The character tab draws an age inside a band that fits the job, the gang tab uses real San Andreas neighbourhoods and real vehicle spawn names, and the script tab names only natives that exist. Where a check cannot be done in a browser — domain availability, for one — the page says so instead of guessing.

A person with a job, a debt and something to want.

Lusine Melikian

50 · Armenian · Detective

Works
a unit that exists on paper
Hook
Has a sibling on the other side of the law and a standing agreement that neither of them says the other’s name out loud.
Flaw
Treats the law as a series of personal opinions.
Goal
Wants one clean score and genuinely believes in the word clean.
Tell
They says "we" about a business that is only them.
First line in the city

/me has the tie loose and the jacket on anyway, which is its own kind of answer, a hairline of sunburn where a cap sits all day.

Age is drawn inside a band that fits the job, so you do not get a nineteen-year-old detective. Nationality picks the name pool and the city the backstory points back at. Everything here is a starting point, not a script — the flaw is the part worth keeping.

HOW TO USE IT

From a generated sheet to a character somebody can play

Roll until a line surprises you, then stop. One good flaw is worth more than four rerolls of the name, because the flaw is the part other players can push on — and a character other people can create problems for is the only kind that lasts past the first week. Copy the sheet, change the name so it fits the server’s setting, delete anything that contradicts their lore, and rewrite the hook in your own words before you paste it into an application.

Character: lead with the job

The occupation decides where your character is at nine in the evening, which decides who they meet. A mechanic, a paramedic or a tow driver has a reason to be standing next to a stranger; a “retired hitman” has none, which is why those applications die.

Server name: say it out loud

Half of a server’s traffic arrives by somebody repeating the name in a voice call. If the generated name needs spelling out, take the shorter alias the domain panel suggests and point it at the same site.

Gang: start with one rival

A crew with turf and no enemy has nothing to do. The rivalry line is the seed of every scene the gang will be in for a month, so pick one that gives both sides a reason to keep it cold rather than shooting on sight.

Script idea: build the one-pip ones

The difficulty meter is deliberately pessimistic. A one-pip idea finished and on a live server beats a five-pip idea in a folder, and the hardest-part line tells you which afternoon is going to disappear.

Proximity /me and /do — the commands the character tab writes for

Server-side. ESX, QBCore and the RP chat resources all provide their own /me — paste this only if you are building a server from nothing and do not have one. GetPlayers() is a server native and returns ids as strings, which is why the loop passes id straight through to TriggerClientEvent.

-- server.lua — a proximity /me, which is what every RP server means by the command:
-- only the people standing near you see it. On a framework you already have one;
-- this is the version you write once if you are building a server from nothing.
local RANGE = 20.0

RegisterCommand('me', function(source, args)
    if source == 0 then return end          -- the console has no ped to describe
    if #args == 0 then return end

    local text = table.concat(args, ' ')
    local from = GetEntityCoords(GetPlayerPed(source))
    local line = ('* %s %s'):format(GetPlayerName(source), text)

    for _, id in ipairs(GetPlayers()) do
        local ped = GetPlayerPed(id)
        if ped ~= 0 and #(GetEntityCoords(ped) - from) < RANGE then
            TriggerClientEvent('chat:addMessage', id, {
                color = { 190, 160, 240 },
                multiline = true,
                args = { line },
            })
        end
    end
end, false)

-- /do answers a question about the scene rather than describing your own action.
RegisterCommand('do', function(source, args)
    if source == 0 or #args == 0 then return end

    local text = table.concat(args, ' ')
    local from = GetEntityCoords(GetPlayerPed(source))
    local line = ('(( %s )) %s'):format(text, GetPlayerName(source))

    for _, id in ipairs(GetPlayers()) do
        local ped = GetPlayerPed(id)
        if ped ~= 0 and #(GetEntityCoords(ped) - from) < RANGE then
            TriggerClientEvent('chat:addMessage', id, {
                color = { 150, 190, 240 },
                multiline = true,
                args = { line },
            })
        end
    end
end, false)
Why the seed is in the URL

Generators that cannot be shared are useless for a team. The seed is hashed with the same joaat function the game uses for model names, so the same six characters always produce the same person, server, crew and script — on any machine, offline, forever.

What we refuse to fake

No availability badge on a domain, no claim that a name is unused, no invented natives. A browser tab cannot run a WHOIS query, so the server tab checks the shape of the hostname and says plainly that the rest is your job.

The vehicle spawn names are checked

Every car a gang can be given is matched against the 921 base-game models in the vehicle list, so the spawn name beside it goes straight into a garage config without a typo hunt.

Nationality is not decoration

Picking a nationality picks the name pool and the city the backstory points back at, so you do not end up with an Armenian surname and a hook about Guadalajara. Change either one freely — the point is that the default is coherent.

QUESTIONS

About roleplay characters, names and ideas

What makes a FiveM roleplay character good enough for a whitelist application?
Not the backstory. Whitelist reviewers read dozens of applications a week and they all have a dead parent and a flight from a bad city in them. What gets read twice is a character who can be played tomorrow: a job that puts them somewhere other players already are, one thing they want badly enough to make bad decisions over, and one flaw that gives other people a way to create problems for them. The generator here is built around that order — the job, the want and the flaw are the three fields that matter, and the backstory hook is one line precisely so you cannot hide behind it.
What should a /me line actually contain?
Something another player can respond to. /me describes an action or an observable detail in the third person — "reaches into the glovebox and comes out with a folded envelope" — and /do answers a question about the scene, usually someone else’s. The common mistake is using /me to state a fact about your own character’s mind ("/me is terrified") or to force an outcome on someone else ("/me takes his gun"), which removes the other player’s choice. Keep /me to what a camera would see, keep intentions in speech, and let the other person decide what their character does about it.
Is it allowed to use a generated backstory on a serious roleplay server?
On every server we know of, yes — nobody is checking whether you had the idea in the shower or in a browser tab. What gets applications rejected is a backstory that is obviously untouched: generic to the point of being interchangeable, or contradicting the server’s own setting. Treat the output as a first draft. Change the name so it fits the server’s region, delete anything that conflicts with their lore, and rewrite the hook in your own words — that last step is also the one that makes the character stick in your head when you are actually playing them.
Can this page tell me whether a server name’s domain is free?
No, and no page that runs entirely in your browser can. A domain lookup is a WHOIS or RDAP query against a registry, which a web page cannot make directly, and we are not going to put up a fake "available!" badge. What the server tab does instead is check the shape of the name: that the hostname is 1 to 63 characters, that it only uses characters a hostname can carry, that it does not start or end with a hyphen, and that it has no double hyphen in the third and fourth position, which is reserved for internationalised names. If the shape is wrong the name can never work; if it is right you still have to check availability at a registrar.
Why does the same seed always give the same character?
Because the seed is the input to the random number generator, not a label on a result that was already picked. The page hashes your seed with the same joaat function GTA uses for model names, feeds it into a small deterministic generator, and every draw after that is reproducible. That is what makes the link shareable: sending someone ?seed=k7m2qa&tab=gang hands them the exact gang you are looking at, with nothing stored on a server. Change one character of the seed and everything changes.
Are the natives and events in the script ideas real, or filler?
Real. Every native named in a build plan exists in FiveM — CreateObject, TaskPlayAnim, SetNuiFocus, NetworkRequestControlOfEntity and the rest — and they are listed because that idea genuinely needs them, not to pad the list. The framework lines name real resources (ox_lib, ox_inventory, ox_target, oxmysql) and the event names follow the resource:action convention so they will not collide with anything else on your server. The difficulty estimate is the honest part: it assumes you have shipped a resource before, and the hardest-part line tells you where the time will actually go, which is usually entity ownership or trusting the client.

ALSO FREE

Tools that go with this one

Picked because they touch the same files, natives or part of the game.

FROM THE SHOP

What we build when it is not free

The free tools and the paid work come out of the same place. These are the lines closest to what this page is about.

Grand opening: 25% off every product with FAM-261023-261025-UL4B9, until 25 October. It is applied at checkout.

Loading screens

Loading screens for FiveM

The one screen every player sees on every connect. Drag widgets onto a canvas, drop in a video background, and point your server at a single URL we host.

Free50 live widgets · 30 fontsOpen the screen builder
The Downtown Dusk graphics design, shown at Discord banner size
Graphics packs

Graphics packs for FiveM

One design, cut to every slot your server shows up in: the server list strip, the Discord header, the stream art, each composed for its own crop.

From $12.00124 designs · 20 formatsBrowse the designs