Reduces animations, shadows and blur effects to fight lag on older or slower computers/browsers.
Image Display
Sounds
Play a sound when a direct message is received. Automatically open screen shares when someone starts streaming. Turn off to join manually. Hide the voice users panel on desktop. Voice users are still shown in channel indicators. Show mute/deafen buttons in the sidebar instead of the voice panel header.
Browse sounds, assign to events, set hotkeys
Push Notifications
Checking... Receive notifications even when HardChat is closed
Privacy
Only allow friends to send you direct messages. Admins can still contact you. Hide your bio, roles, and join date from people who are not your friends.
Badge Display
Choose up to 3 badges to show next to your name in chat rooms. Tanod and Kapitan badges always show and are not counted.
Password
Two-Factor Authentication
Protect your account with a TOTP authenticator app (Google Authenticator, Authy, etc.).
Scan this QR code with your authenticator app:
Or enter this secret manually:
๐๏ธ Backup Codes
Save these codes somewhere safe. Each can be used once if you lose access to your authenticator.
โ Two-factor authentication is enabled
Account Recovery
Generate one-time recovery codes to regain access if you forget your password. Store them somewhere safe โ they work like a last-resort key.
โ ๏ธ Important: Using a recovery code to reset your password will permanently and irreversibly destroy your end-to-end encryption keys. All encrypted direct message history will become unreadable. There is no way to undo this.
Save these codes now โ they will not be shown again. Each code can only be used once.
Delete Account
Permanently delete your account. This cannot be undone.
Plugins & Themes
Drop .plugin.js files into the plugins/ folder and .theme.css files into the themes/ folder, then refresh.
Plugins
Themes
Desktop Shortcuts
Global keyboard shortcuts โ active even when HardChat is in the background. Click a row to rebind, or "Clear" to disable.
Mute / Unmuteโ
Deafen / Undeafenโ
Push-to-Talk(toggle)Not set
Desktop App
Settings specific to HardChat Desktop.
Launch HardChat Desktop automatically when you log in to your computer.
When launching on login, start minimized to the system tray instead of showing the window.
Closing the window hides HardChat to the system tray instead of quitting.
Automatically open rooms in their own detached window instead of a floating panel inside the main window.
Fix washed-out or over-saturated colors on HDR monitors. Requires restart.
Admin
Server Branding
Custom title displayed on the login screen below the TaraCHAT logo.
โฌก
Server icon (square, max 2 MB)
New users see this theme on first visit. They can still pick their own. When disabled, everyone is locked to the Daylight (Light) theme and the dark quick-switch is hidden. When enabled, messages are prefixed with the sender's username (e.g., "kuro: hello")
When enabled, the "update available" banner is only shown to admins
Create Account
๐ค
Provision a new account directly
Admin/Dev only โ usernames may be 1-50 characters and may contain special characters, bypassing the normal signup rules.
Whitelist
When enabled, only pre-approved usernames can register
Loading...
Gatekeeper
When enabled, only the admin and invited users can sign in. Everyone else is blocked โ including existing sessions.
Loading...
Server Invite Code
A single code that adds people to every channel & sub-channel on the server
โ
Auto-Cleanup
Delete messages older than N days (0 = off) Trim oldest messages when DB exceeds N MB (0 = off)
Uploads & Limits
Maximum file size users can upload (1โ2 MB, default 2) Max soundboard upload size (256โ10240 KB, default 1024 / 1 MB) Max custom emoji upload size (64โ1024 KB, default 256) Maximum answer choices per poll (2โ25, default 10)
Custom Sounds
Upload audio files for custom notification sounds
Custom Emojis
Upload images for custom server emojis
Chat Fonts
Upload custom fonts for the message formatting menu
Mic Gifts
Add gift items (emoji or your own uploaded icon) to the ๐ send-a-gift catalog
Role Management
Create and manage roles. Assign roles to users from the user list context menu.
โจ Subscription Roles
System roles auto-assigned when users claim a colored nickname tier via Services. Read-only โ colors are defined per tier.
Tunnel
Inactive
Webhooks / Bots
Create and manage webhook bots that can post messages to rooms.
No bots configured
Elite Bot Management
Create and deploy Elite bot accounts to populate App Rooms. Bots appear as real users with the Elite role.
Loading...
Discord Import
Import rooms and messages from a Discord export file
Mod Mode
Rearrange sidebar sections and snap server/sidebar/status panels
Direct Message Controls
Control DM behaviour for all users on this server. Automatically open the DM modal when a user receives a new direct message. Play a sound when a new DM arrives. Show delivery / read tick marks on DM messages. When disabled, users cannot send files inside direct messages. Minimize all currently open DM modal windows.
Media & Voice Permissions
Globally enable or disable voice, camera, and screen sharing for all users. Allow users to join voice channels and transmit audio. Allow users to share their webcam in voice channels. Allow users to share their screen in voice channels.
Link Previews
Show a small preview card (title, description, image) when a message contains a link. Only the page's title/description/image are fetched server-side โ nothing is downloaded to or run in anyone's browser, and internal/private network addresses are never fetched.
Remote Control
Lets one native-app user request full mouse/keyboard control of another's screen (right-click a user in a room's user list). Off by default โ only the admin can change this. The controlled user always gets an explicit, expiring accept/decline prompt first; there is no "always allow." Native desktop app only โ never available in the web app.
Subscription Services
Enable or disable the colored nickname subscription system. When enabled, users can claim free 3-day trials from the Services menu in any room.
Shows the "Services" menu in room windows and allows users to claim colored nickname subscriptions.
e.g. 2 = โฑ100 top-up gives 200 TC
Regular logged-in users earn this many TC Coins per hour. Bots never earn this. 0 = disabled
% of a ๐ mic gift's TC value credited to whoever's on the mic; the rest stays with the platform.
Add, edit, or retire the User/Room/Crown tiers and Badges sold in the room โจ Services menu.
Audit Logs
Complete record of all administrative and moderation actions
โ
ActionActor โ TargetDetailsTime
Click Refresh or navigate here to load logs
Force Update Manager
Push version updates to connected users instantly.
Server Versionโ
Min Supportedโ
Connected Usersโ
Users by Version
Click Refresh to load version stats.
Minimum Supported Version
Clients below this version will be blocked from connecting.
Broadcast Update
Automatically reloads clients after the countdown.
TURN / Voice Relay
Fallback relay for voice & video when a direct peer-to-peer connection fails (restrictive NAT / firewalls).
Checkingโฆ
These values override the TURN_* environment variables. Leave a field blank to fall back to the environment value.
one per line
The turn: prefix is optional โ a bare host:port becomes turn:host:port. Add turns: or ?transport=tcp explicitly if you need them.
Credentials
optional ยท coturn --use-auth-secret
If a shared secret is set it takes priority (time-limited credentials); otherwise username + password are used.
Test dials the server from your browser and checks for a relay candidate, using the values above (saved or not) โ so you can verify before saving.
Backup relay โ native coTURN
Used only when a client can't reach or authenticate the primary relay above โ both are handed to the browser at once, so there's no "try primary, then wait" delay. Leave the URL blank to disable the backup.
one per line
optional ยท coturn --use-auth-secret
If a shared secret is set it takes priority (time-limited credentials); otherwise username + password are used.
Redis Backend
The Socket.IO cluster adapter and all live presence state — room rosters, mic, raised hands, voice — connect through here.
Checking…
Running—
Endpoint—
Since—
Restart required. The saved backend differs from what this server is running. Restart it (or pm2 reload all) to apply.
Active backend
Leave both unselected and use Reset to .env to follow the REDIS_URL variable.
rediss:// · encrypted at rest
Upstash console → Connect → Node / ioredis tab. Must be the rediss:// TCP endpoint — the REST SDK has no Pub/Sub. Blank keeps the stored value.
Changes apply on the next server restart — the live connection and presence state bind at boot. Testing opens a throwaway server-side connection, runs PING, and verifies Pub/Sub (the cluster adapter needs it).
Changes only apply when you click Save. Close (โ) to cancel.
๐ฆ Import from Discord
Upload a Discord export file to import channels and messages into HardChat.
DiscordChatExporterโ JSON or ZIP (recommended โ includes all users)
Discord Data Packageโ ZIP from Settings โ Privacy (your messages only)
๐Drop file here or browse.json or .zip โ up to 500 MB
Uploading...
Connect directly to Discord and pull your messages โ no external tools needed.
How do I get my Discord token?
Open discord.com/app in Chrome/Edge (or use the desktop app)
Press F12 to open DevTools
Click the Application tab (click >> in the toolbar if you don't see it)
In the left sidebar, expand Local Storage โ click https://discord.com
Find the token key โ copy the value (without the quotes)
Desktop app: If F12 doesn't open DevTools, close Discord fully, then edit: