Custom emotes
Custom emotes are images uploaded by an admin that any member can
use in chat with a shortcode, like :partyparrot:. They appear in
the emoji picker alongside standard emoji.
This feature requires the file server to be enabled and the Manage emotes permission.
Screenshot placeholder: custom emotes admin tab with five uploaded emotes.
Upload an emote
Section titled “Upload an emote”-
Open Admin, Emotes.
-
Click Add emote.
-
Pick an image. Supported formats:
- PNG, JPEG, GIF (animated), WebP, SVG.
- Max 1 MB per file.
- Square or near-square works best (will be cropped to the emoji-grid square).
-
Fill in:
- Shortcode: lowercase, no spaces. Used as
:shortcode:in chat. - Alias emoji: a standard emoji that this custom one “stands in for” in fallback clients.
- Description (optional): shown on hover.
- Shortcode: lowercase, no spaces. Used as
-
Save.
The emote is uploaded to the file server and immediately available to everyone. Pull-to-refresh on mobile to see new emotes.
Use an emote
Section titled “Use an emote”In chat:
- Type
:then start typing the shortcode. The picker shows matching emotes. - Pick from the picker.
Other members of the server see the image. Members on a vanilla client see the alias emoji as a fallback.
Edit or delete
Section titled “Edit or delete”In the admin panel:
- Click any emote to edit shortcode, alias, description.
- Click the trash icon to delete.
Deleting an emote removes it everywhere it has been used in chat (future loads), past chat may show a broken image until the client refreshes.
Permissions
Section titled “Permissions”Two permissions control emote handling:
| Permission | What it allows |
|---|---|
| Manage emotes | Upload, edit, delete custom emotes. |
| Use custom emotes | Insert custom emotes in chat. Default: everyone. |
You can revoke Use custom emotes for specific roles to enforce a “text only” rule.
Naming guidelines
Section titled “Naming guidelines”- Lowercase, hyphenated.
:hype-train:, not:HypeTrain:. - Pick distinctive names. The picker uses fuzzy match, so close names can be confusing.
- Avoid Unicode escape sequences in the shortcode. ASCII only.
Reactions
Section titled “Reactions”Custom emotes can also be used as reactions on messages, with the same shortcode picker. Restrict this via the Use custom emotes as reactions permission if you want emojis on reactions but not custom ones.
Storage and limits
Section titled “Storage and limits”Stored in the file server at /data/file-server-storage/emotes/.
Default limits:
plugin.file-server.maxEmoteSizeBytes=1048576plugin.file-server.maxEmoteCount=1000Bump these in your custom INI for very large communities.
Pitfalls
Section titled “Pitfalls”- Cannot upload: file server is off, or you do not have the Manage emotes permission.
- Cannot use: same, plus the Use custom emotes permission may be denied for your role.
- Animated GIF plays once: most clients loop animated emotes. Some embed views only play it once.
- SVG renders strangely: complex SVGs with fonts or external references may not render. Stick to simple shapes.
Next step
Section titled “Next step”Continue with Onboarding workflow to drop new members into the right channels with the right roles.