Gryt
Use Gryt

Custom Emojis

Upload, manage, and import custom emojis for your Gryt server

Custom emojis let members express themselves with images unique to your server. Anyone can use them in chat with the :shortcode: syntax, and admins can manage the full library from Server Settings.

Supported formats

FormatExtensionAnimatedStored as
PNG.pngNoAVIF
JPEG.jpg / .jpegNoAVIF
WebP.webpYesAnimated WebP, animation kept
GIF.gifYesAnimated WebP, animation kept
AVIF.avifYesAnimated WebP if animated, AVIF if not

Everything is resized to 128 pixels tall, keeping the aspect ratio and never enlarging something smaller. A still image comes back out as AVIF and an animated one as animated WebP, whatever it arrived as.

SVG isn't accepted. An SVG is a document rather than a picture. It can carry a <script>, and a browser asked to open one from your server's own origin will run it. Uploading one gets "SVG images are not accepted".

The size limit per image is a per-server setting, emojiMaxBytes. It defaults to 100 MB and can be set anywhere from 64 KB to 200 MB. Anything bigger is refused.

Naming rules

Emoji shortcodes must follow these rules:

  • 2 to 32 characters long
  • Only letters, numbers, and underscores (A-Z, a-z, 0-9, _)
  • Must be unique within the server

Examples: :pepehappy:, :cat_jam:, :lol2:

Uploading emojis

Go to Server Settings > Emojis (requires admin or owner role).

Single or multi-file upload

  1. Click Choose files and select one or more images.
  2. Each file appears in a preview list with an auto-generated name derived from the filename.
  3. Edit the shortcode name for any emoji before uploading.
  4. Click Upload all to upload the entire batch, or click the upload icon on an individual emoji.

ZIP archive upload

You can upload a .zip file containing multiple images:

  1. Click Choose files and select a .zip archive.
  2. Gryt extracts all valid image files from the archive (nested folders are supported; __MACOSX metadata is ignored).
  3. Each extracted image appears in the preview list with its filename used as the shortcode.
  4. Edit names as needed, then upload.

Files inside the ZIP follow the same format and size rules as individual uploads.

Importing from BetterTTV or emoji.gg

One box takes a link and works out where it is from. In Server Settings > Emojis, under Import from a link, paste any of these:

LinkWhat you get
betterttv.com/users/<id>That user's channel emotes and shared emotes
betterttv.com/emotes/<id>The one emote
emoji.gg/user/<name>That profile's emojis
emoji.gg/pack/<slug>The pack
emoji.gg/emoji/<slug>The one emoji

Step by step

  1. Open Server Settings > Emojis.
  2. Paste the link and click Fetch.
  3. A preview grid appears. Each emote shows a thumbnail, an editable shortcode derived from its name, and a GIF badge if it's animated.
  4. Tick the ones you want, or use Select all and Deselect all. The filter field narrows a long list.
  5. Rename anything you like. Names that clash with an emoji already on the server are flagged.
  6. Click Import N emojis.

The server fetches each one at full resolution and puts it through the same pipeline as an upload, so the format rules above apply here too.

A large emoji.gg profile is read a fixed number of pages deep. When that happens the list says so, rather than handing you a short list that looks complete.

Using emojis in chat

Type : followed by the shortcode to trigger the autocomplete picker. You can also open the emoji picker from the chat input toolbar.

Custom emojis appear alongside standard Unicode emojis in the picker, in a dedicated Custom category.

:pepehappy:     → shows the custom emoji
:wave:          → shows the standard Unicode wave emoji

Managing existing emojis

In Server Settings > Emojis, below the upload section, you'll see the full list of server emojis. Admins can:

  • Rename — Click the edit icon next to any emoji to change its shortcode.
  • Delete — Click the delete icon to permanently remove an emoji from the server.

Renaming an emoji updates the shortcode everywhere going forward; messages already sent will reference the old name and may show as missing.

On this page