Customization Guide
Change the look and feel of Oxide Chat without touching any code.
Change the look and feel of oxide-chat without touching any code.
The chat interface ships pre-built and ready to use, so there are no stylesheets or scripts for you to edit. Instead, you customize the chat in two places:
- The in-game Appearance settings — each player opens
/chat customizeand adjusts how chat looks for them. - The server-wide settings — chat type styling (colors, prefixes), starting defaults, category tabs, and more. On a running server an admin edits these live with
/chat settings;config/main.luasupplies the starting values. See How Settings Are Stored for exactly how the file and the live panel relate.
In-Game Appearance Settings
Every player can personalize their own chat. Open the settings panel by typing /chat customize in chat (or clicking the gear icon in the chat header), then use the Appearance tab.
| Setting | Options | What it does |
|---|---|---|
| Style Preset | 10 styles — see below | The overall visual style of the chat |
| Background Opacity | 0-100% | How transparent the message and input backgrounds are |
| Chat Width | 320-640px | How wide the chat window is |
| Chat Height | 160-600px | How tall the visible message area is |
| Message Density | compact / comfortable / spacious | Vertical spacing between messages |
| Animations | on / off | Whether messages fade/slide in |
| Show Tab Bar | on / off | Whether the category tab bar appears above messages |
Style Presets
Each preset is a complete look for the message feed and input box. Players pick one from the Style dropdown; the change previews live before saving.
| Preset | Look |
|---|---|
| Bubbles | iMessage-style chat bubbles that hug each message, with a glowing channel dot |
| Discord | Avatars with sender names above each message, in a soft dark panel |
| Timeline | A thin vertical line threads the feed, with a glowing node per message |
| Masonry | Messages packed into a tight multi-column grid of tiles |
| Compact | A dense, time-first log — the most messages on screen at once |
| Cards | Full-width frosted cards with a colored edge showing the channel |
| Float | Cards with the sender and channel tags floating over their top edge |
| Panel | The whole feed framed in one panel, each message a soft row inside it |
| Retro | Nostalgic look — plain colored text lines with a dark outline, no boxes |
| Glass | Rounded frosted-glass rows with a soft glow |
Other tabs let each player set the chat position on screen, font size, fade time, timestamps, and toggle per-type colors and visibility. See Features — Settings Panel for the full list.
These settings save automatically and follow the player between sessions.
Server-Wide Defaults
The values a player sees the very first time (before they change anything) come from Config.DefaultSettings. On a running server, edit these live in the admin panel (/chat settings → Players → Player Defaults). The config/main.lua values below are the factory starting point — see How Settings Are Stored.
Config.DefaultSettings = {
position = 'top-left',
fontSize = 14,
appearance = {
stylePreset = 'bubbles', -- 'bubbles', 'discord', 'timeline', 'masonry', 'compact', 'cards', 'float', 'panel', 'retro', 'glass'
backgroundOpacity = 75, -- 0-100%
chatWidth = 480, -- 320-640px
chatHeight = 320, -- 160-600px
messageDensity = 'comfortable',-- 'compact', 'comfortable', 'spacious'
showTabBar = true,
},
}See Configuration — Default Player Settings for every default option and its accepted values.
Editing config/main.lua only sets the defaults for a brand-new server (or a setting the database hasn't seen yet). On a server that has already started once, change these in /chat settings instead — file edits won't take effect there. Either way, players who have already customized their own settings keep their choices.
Chat Type Styling
Every chat type on your server — regular messages, /me, OOC, announcements, private messages, and your custom radios — lives in a single list, and each one's color, prefix, and italic styling is set right there. On a running server, edit the list live in /chat settings (Messaging → Chat Types).
The built-in message kinds sit at the top of that list as built-in rows (builtin = true). You can restyle them — change the label, prefix, color, and italics — but you can't rename or remove them. The config/main.lua values below are the factory starting point:
Config.ChatChannels = {
{ builtin = true, id = 'ooc', label = 'OOC',
prefix = 'OOC', color = '#C47A2C' }, -- Any hex color
{ builtin = true, id = 'me', label = '/me Actions',
color = '#F4F5F7', italic = true }, -- Italicize the message
{ builtin = true, id = 'system', label = 'System Messages',
prefix = 'SYSTEM', color = '#5F6670' },
-- ...the other built-in rows, then your custom channels
}| Property | Type | Description |
|---|---|---|
color | string | Hex color code (e.g. '#FF0000') |
prefix | string | A short label shown before the message |
italic | boolean | Whether the message is italicized |
Players can override the color of individual chat types for themselves in /chat customize (Colors tab). Your styling is the default everyone starts with.
Custom channels are in the same list. Any chat channel an admin creates (a job radio, staff chat, and so on) is a custom row in this same list, and it also appears as its own entry in every player's Colors tab — using the channel's Label and Color — so players can recolor it or hide it for themselves without any extra setup.
Adding a Custom Chat Type
To give a new message type its own color and prefix, add a custom row to the chat types list. The easiest way is in-game: open /chat settings → Messaging → Chat Types, click Add, and fill in the styling and access fields — no file editing, no restart. The same row as a factory default in config/main.lua looks like this:
{
command = 'taxi', label = 'Taxi Radio',
prefix = 'TAXI', color = '#FFFF00', italic = false,
scope = 'global', restrict = 'none',
}A custom row's chat type ID can't be one of the built-in ones (me, do, ooc, pm, and so on). See the Admin Guide for a walkthrough of every field, and Exports & API for sending messages with your type from another resource.
Category Tabs
The tabs shown above the message list (All, Local, Job, PMs, etc.) are a server-wide setting. On a running server, edit them live in /chat settings (Messaging → Categories) — rename tabs, change which chat types each one shows, add new tabs, or turn the tab bar off. The config/main.lua values below are the factory starting point.
Config.CategoriesEnabled = true
Config.Categories = {
{ id = 'all', label = 'All', types = { '*' } },
{ id = 'local', label = 'Local', types = { 'me', 'do', 'whisper', 'shout' } },
{ id = 'job', label = 'Job', types = { 'police', 'ambulance', 'mechanic' } },
}See Configuration — Chat Categories for the full reference.
Sharing Settings
Players can move their exact chat setup between characters or share it with friends:
/chat customize and go to the Data tab.Tips
- Preview as you go — appearance changes in
/chat customizeapply live, so you can see the result immediately. - Check contrast — when picking chat type colors, make sure the text is easy to read against the background.
- Clear your cache — if the chat looks broken after an update, clear your FiveM cache and reconnect:
%localappdata%/FiveM/FiveM.app/data/cache/ - Need a deeper visual change? The chat interface itself ships pre-built and cannot be edited on your end. If you need something the settings and config options don't cover, contact Oxide Studios support.