# A website for your FiveM server

> Decide whether your FiveM server needs a website and what it should contain: a landing page with a join button, rules and guides, applications, a live status widget from dynamic.json, store links, SEO basics, hosting options, and keeping it in sync with Discord.

Source: https://fam-tools.com/guides/fivem-server-website · FAM Tools · published 2026-09-11 · updated 2026-09-11 · about 9 min

**Short answer.** 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.

## Key points

- Landing page + Play button + trailer.
- Rules and guides are searchable on a website, not in Discord.
- Live status from `/dynamic.json` (via a backend or cache).
- One Discord link, one store link.
- Social preview image and a clear title for sharing.

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.

*api/status.js (Node)*

```js
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](https://fam-tools.com/guides/fivem-server-branding-kit).

## Questions

### Does a FiveM server need a website?

Not strictly, but a small site makes your server searchable and gives newcomers one clear page with rules, guides and a Play button.

### How do I show the player count on my website?

Read `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?

Link to `fivem://connect/cfx.re/join/<code>` with a `https://cfx.re/join/<code>` fallback.

### Where should the store link go?

To your Tebex store, from the site navigation and the home page.

## Related

- https://fam-tools.com/guides/fivem-server-connect-link-cfx-re
- https://fam-tools.com/guides/fivem-loading-screen-live-player-count
- https://fam-tools.com/guides/fivem-server-branding-kit
- https://fam-tools.com/guides/fivem-server-rules-template
