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:

  1. The in-game Appearance settings — each player opens /chat customize and adjusts how chat looks for them.
  2. 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.lua supplies 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.

SettingOptionsWhat it does
Style Preset10 styles — see belowThe overall visual style of the chat
Background Opacity0-100%How transparent the message and input backgrounds are
Chat Width320-640pxHow wide the chat window is
Chat Height160-600pxHow tall the visible message area is
Message Densitycompact / comfortable / spaciousVertical spacing between messages
Animationson / offWhether messages fade/slide in
Show Tab Baron / offWhether 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.

PresetLook
BubblesiMessage-style chat bubbles that hug each message, with a glowing channel dot
DiscordAvatars with sender names above each message, in a soft dark panel
TimelineA thin vertical line threads the feed, with a glowing node per message
MasonryMessages packed into a tight multi-column grid of tiles
CompactA dense, time-first log — the most messages on screen at once
CardsFull-width frosted cards with a colored edge showing the channel
FloatCards with the sender and channel tags floating over their top edge
PanelThe whole feed framed in one panel, each message a soft row inside it
RetroNostalgic look — plain colored text lines with a dark outline, no boxes
GlassRounded 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 settingsPlayersPlayer 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 (MessagingChat 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
}
PropertyTypeDescription
colorstringHex color code (e.g. '#FF0000')
prefixstringA short label shown before the message
italicbooleanWhether 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 settingsMessaging → 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 (MessagingCategories) — 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:

Open /chat customize and go to the Data tab.
Choose Export to copy a shareable code.
On another client, choose Import and paste the code.

Tips

  1. Preview as you go — appearance changes in /chat customize apply live, so you can see the result immediately.
  2. Check contrast — when picking chat type colors, make sure the text is easy to read against the background.
  3. Clear your cache — if the chat looks broken after an update, clear your FiveM cache and reconnect:
    %localappdata%/FiveM/FiveM.app/data/cache/
  4. 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.

Next Steps