A website for your FiveM server
A good server website is small: a landing page with a trailer and a Play button (fivem://connect/cfx.re/join/<code>), rules, beginner guides, applications, a live player count read from your server’s /dynamic.json through a small backend, links to Discord and your Tebex store, and basic SEO (title, description, social preview image). Keep content in sync with Discord.
Discord does most of the work for FiveM communities, but it is invisible to search engines and awkward for people who are not yet members. A small website fixes both: it shows up when someone searches your server’s name, and it gives newcomers one clean page that explains everything.

#Pages worth having
| Page | Purpose |
|---|---|
| Home | Trailer, three key features, Play and Discord buttons |
| Rules | The full rules, linkable per section |
| Guides | How to join, first steps, jobs, key binds |
| Apply | Whitelist or department applications |
| Store | Link to your Tebex store |
| Status | Live player count and restart times |
#A live player count
Your server answers http://ip:30120/dynamic.json with the current clients and sv_maxclients. Fetch it from your website’s backend (and cache for 30–60 seconds) rather than from visitors’ browsers, so your server IP is not exposed and the server is not hammered.
let cache = { at: 0, data: null };
export async function getStatus() {
if (Date.now() - cache.at < 45_000) return cache.data;
try {
const res = await fetch('http://127.0.0.1:30120/dynamic.json', { signal: AbortSignal.timeout(3000) });
const d = await res.json();
cache = { at: Date.now(), data: { online: true, players: d.clients, max: d.sv_maxclients } };
} catch {
cache = { at: Date.now(), data: { online: false } };
}
return cache.data;
}#SEO basics
- Page title with the server name and type (“Harbor City RP — Serious FiveM Roleplay”).
- A meta description and a social preview image (1200×630).
- Rules and guides as real pages — they bring search traffic.
- Link the website from Discord, the server list description and your loading screen.
#Building and hosting
A static site (Next.js export, Astro, plain HTML) on a free or cheap host is enough for most servers; only the status endpoint needs a tiny backend. Keep the design consistent with your loading screen and Discord — see branding kit.
Questions
Does a FiveM server need a website?
How do I show the player count on my website?
clients and sv_maxclients from your server’s /dynamic.json in a backend, cache it, and display it.How do I add a Play button?
fivem://connect/cfx.re/join/<code> with a https://cfx.re/join/<code> fallback.Where should the store link go?
Ready to pick a map?
Twelve themes on three base map styles, $8 each, instant download.
Relevant to what you just read
The tool for this
A drag-and-drop loading screen, hosted for you From Free, built in the browser, exported as a drop-in resource.