← SillyTavern guides

SillyTavern Character Expressions: set up sprites

Updated

Character Expressions is a built-in SillyTavern extension that shows a picture of the character matching the mood of each reply. Make one image per emotion label, named after the label (joy.png, anger.png, neutral.png), upload them in the extension panel or as a ZIP, and pick how mood is detected: a local classifier, your connected model, or manual. With UnsavedAI's API, the local classifier avoids an extra request per reply.

Try it now, free, no account neededStart a story with Mika TachibanaYour rival teammate swears she can't stand you

What you see when it works

Each time a character replies, the extension reads the reply, decides on an emotion label, and shows the matching sprite beside the chat. A rival who has just lost a bet flips from smug to annoyed; a nervous confession shows the embarrassed sprite. In a group chat with visual novel mode on, every member's sprite stands on screen together, like a dating sim.

It is presentation only. The model never sees the image, and expressions do not change what the character writes.

Make a sprite set

The default label list has 28 emotions, from admiration and amusement through to sadness and surprise. You do not need all of them. Start with neutral plus five to eight that fit the character, then set a fallback so missing labels show something sensible.

LabelWhen it showsSprite tip
neutralCalm or unclear repliesYour default pose; make it the best image
joyLaughing, delightedOpen expression, eyes engaged
angerShouting, cold furyChange the brows and mouth, not only colour
embarrassmentFlustered, caught outA blush or look away reads instantly
sadnessGrief, disappointmentLowered gaze, softer posture
surpriseTwists, revealsWide eyes; good for mysteries
  • Name each file exactly after its label: joy.png, anger.png. PNG with a transparent background is safest; animated GIF and WEBP work too.
  • Keep framing, size and art style identical across the set, or the character seems to jump around.
  • Upload sprites one label at a time from the extension's panel, or upload a ZIP of the whole set.
  • On disk they live in a folder named exactly after the character inside SillyTavern's characters data folder, so a renamed card loses its sprites until the folder matches.

Choosing how the mood is read

ClassifierHow it worksTrade-off
LocalA small emotion model that runs where SillyTavern runsFree and quick; reads English best
LLMAsks your connected model to pick a labelBetter with subtle or non-English replies; costs a request each time
NoneNo detection; set expressions yourselfFull control, no automation

The LLM option sends a second request after every reply. On UnsavedAI, Free writes one reply at a time, so that classification waits its turn and adds a pause before you can send again. The local classifier skips the round trip. If your story is not in English, or the local pick keeps landing on neutral, try the LLM classifier and accept the small wait. Priority's two-at-a-time limit absorbs the extra request better.

When sprites will not show

  • Is the extension enabled in the Extensions panel?
  • Does the folder name match the character's name exactly, including capitals and spaces?
  • Do the file names match labels from the list, with no typos like happy.png for joy?
  • Is there a neutral sprite or fallback for labels you did not draw?
  • Did you reload after copying files in by hand?
  • In a group, is visual novel mode on in user settings?

If the wrong emotion keeps appearing, look at the reply rather than the extension: long action paragraphs full of combat words read as anger even in a playful scene. Switching classifier usually fixes persistent misreads.

Characters with range worth drawing

Sprites pay off on characters whose mood swings often. Mika Tachibana swears she cannot stand you and flusters the moment you are kind, Seraphina Nyx is sweet right up to the alarming part, and Kiko Aoyama switches between stage smile and real one. If you build your own card at /chat/custom and export it for SillyTavern, the sprite folder is the last step that brings it to life.

Questions people ask

Can I use AI-generated sprites?

Yes, as long as you have the right to use the images. Generate one base pose, then vary only the face so the set stays consistent.

Do expressions work over an API like UnsavedAI's?

Yes. The local classifier never touches the API; the LLM classifier uses your connected model for one short extra request per reply.

Can one character have more than one sprite per emotion?

Recent versions allow several images for a label and pick between them. If yours does not, keep one image per label.

Characters for this story