Top

SillyTavern Image Generation (2026): Setup, Sources, the /sd Command and Why It Fails

SillyTavern’s Image Generation extension turns a chat into pictures by sending a text prompt to an image source that you choose, and in most modes it asks your chat model to write that prompt first. The extension is built in. The image source is not. SillyTavern draws nothing by itself.

That sentence contains the two places where things go wrong. One is the source: on a new install it is set to an option the project itself calls deprecated. The other is the prompt step: a picture of “the last message” is really two requests, one to a text model and one to an image model, and either can fail.

We read SillyTavern’s documentation for the extension, and then the extension’s own source code on the release branch, which was version 1.19.0 on 5 October 2026. The default values and the error messages below are from the code, not from memory or from forum posts.

New to SillyTavern? Start with the SillyTavern guide. For the other built-in extensions, see SillyTavern extensions.

The Short Answer

  • It is already installed. Extensions panel, then the Image Generation drawer.
  • Change the Source first. The default is SillyTavern Extras, which is deprecated. Nothing works until you pick another.
  • The free start is Stable Horde. No hardware, no key needed, but there is a queue.
  • The best local option is ComfyUI, if you have a graphics card. SillyTavern ships a default workflow for it.
  • Generate from the wand menu or with /sd. /sd last draws the last message. /sd a red fox in snow draws exactly that.
  • Most modes use your chat model to write the prompt. That is one extra text request per picture.
  • Images are hidden from the chat model by default. The character does not know what the picture shows unless you change the visibility options.

How It Works: Two Models in a Row

When you choose “The Last Message” from the wand menu, this happens:

  1. SillyTavern sends your chat model an instruction: describe the scene as a list of visual keywords.
  2. The reply is cleaned up and joined with your prefixes to make the final prompt.
  3. The prompt is sent to the image source.
  4. The picture comes back, is saved, and is put into the chat.

The documentation states it directly: every generation mode except raw message and free mode “will trigger a prompt generation using your currently selected main generation API to convert chat context into the SD prompt”.

This has three consequences.

Every picture in those modes costs a text request. On a paid API, that is a full prompt with your chat history, sent once more. On a local model, it is another wait before the image even starts.

The quality of the picture depends on your chat model. A small or confused model writes a poor description, and the image model draws the poor description faithfully.

A refusal or an empty reply stops everything. If the chat model returns nothing, the extension shows an error and never contacts the image source.

Two modes skip step 1. Free mode (/sd followed by your own words) and raw last message send text straight to the image source. If the prompt step is the part that fails, these two still work, and that is a quick way to find out which half is broken.

The First Fix: The Default Source Is Deprecated

In the extension’s code, the default settings begin with this line:

source: sources.extras,

“Extras” is SillyTavern Extras, a separate helper server from the project’s early days. The documentation’s own table of sources lists it as “Deprecated, not recommended”. The code checks whether the selected source is usable before it does anything, and for Extras that check asks whether an Extras server with an image module is connected. On a normal install today there is none.

So on a fresh install, choosing any image mode gives this message and nothing else:

Image generation is not available. Check your settings and try again.

Nothing is broken. The source has simply never been set. Open the Image Generation drawer, change Source, and the same button works.

The same check explains the message for every other source. For a local source it passes when an address is filled in. For a cloud source it passes when a key for that service is saved. Stable Horde is the only source for which the check always passes, which is why it is the easiest one to begin with.

The Sources

The documentation lists 24 sources. This is its table, grouped by what you need.

What you haveSourcesWhat the documentation says
Nothing, and you want freeStable HordeCloud, open source, free of charge
HuggingFace ServerlessCloud, free of charge
A graphics cardComfyUILocal, open source, free of charge
Stable Diffusion WebUI (AUTOMATIC1111)Local, open source, free of charge
SD.Next (vladmandic)Local, open source, free of charge
stable-diffusion.cppLocal, open source, free of charge
A Mac or an iPadDraw ThingsLocal, Mac/iOS, free of charge
A subscription you already pay forNovelAI DiffusionCloud, requires an active subscription
A paid API keyOpenAI, Google AI Studio / Vertex AI, Stability AI, Black Forest Labs, FAL.AI, x.AI, Z.AI, AI/ML API, Electron Hub, NanoGPT, Cloudflare Workers AI, PollinationsCloud, paid
A key, price depends on the modelOpenRouter, Chutes, TogetherAICloud
Do not useSillyTavern ExtrasDeprecated, not recommended

How to choose:

  • Try it tonight for free: Stable Horde. It is a volunteer network. You wait in a queue, the choice of models depends on who is online, and anonymous requests have the lowest priority. It is the right way to find out whether you want this feature at all.
  • You have a graphics card with 8GB or more: ComfyUI. It is the most flexible source and the one the documentation spends the most space on. One warning from our best model for SillyTavern guide applies here: if the same card also runs your chat model, the two compete for memory.
  • You already pay for an API: use it. If your chat model is on OpenAI, Google or OpenRouter, the key is already saved and the source will pass its check immediately.
  • You are on a phone. The image has to be made somewhere else, so use a cloud source or a ComfyUI server on your computer. See SillyTavern on mobile.

Recent releases have kept adding sources: Chutes, Z.AI, OpenRouter and RunPod-hosted ComfyUI in 1.15.0 (December 2025), stable-diffusion.cpp in 1.16.0 (February 2026) and Cloudflare Workers AI in 1.18.0 (May 2026). If a source is missing from your list, update SillyTavern.

Setting Up the Two Sources Most People Use

Stable Horde

  1. In the Image Generation drawer, set Source to Stable Horde.
  2. Choose a model from the list.
  3. Generate.

It works without a key. In the code, the option that allows adult images on the Horde is off by default, and a second option that asks the Horde to sanitize prompts is on. If the pictures do not match what you asked for, look at those two before anything else.

ComfyUI

  1. Start ComfyUI on your computer.
  2. In the Image Generation drawer, set Source to ComfyUI.
  3. Enter the address. The default in SillyTavern is http://127.0.0.1:8188. The documentation adds that for SwarmUI the managed ComfyUI server uses port 7821.
  4. Press Connect.
  5. Choose a model and leave the workflow on Default_Comfy_Workflow.json.

The documentation is clear that you do not need to understand ComfyUI to begin: “you can still use it to generate images in SillyTavern using the default workflow”. A second workflow is included, Char_Avatar_Comfy_Workflow.json, which is an image-to-image example that starts from the character’s avatar.

One condition is easy to miss. The ComfyUI server “must be accessible from the SillyTavern host machine”. The request is made by the SillyTavern server, not by your browser. If SillyTavern runs on a desktop and you open it from a phone, 127.0.0.1 still means the desktop, which is what you want. If SillyTavern runs in Docker or on another machine, 127.0.0.1 points at the wrong place.

The Seven Modes and the /sd Command

You can start a generation from the wand menu or by typing /sd in the chat box. The modes are the same.

Wand menu item/sd argumentWhat you getUses your chat model?
YourselfyouA full-body portrait of the current characterYes
Your FacefaceA close-up portrait. Forces a portrait shapeYes
MemeA portrait of your personaYes
The Whole StorysceneA picture that sums up the chat so farYes
The Last MessagelastA picture of the last messageYes
Raw Last Messageraw_lastThe last message used as the prompt, word for wordNo
BackgroundbackgroundA chat background. Forces a wide shapeYes
(none)anything elseFree mode. Your words are the promptNo

There is a third way in: the paintbrush icon in a message’s actions. It uses that message as a raw prompt.

Useful forms of the command, all from the documentation:

/sd apple tree
/sd negative="fries" cute tater farmer holding a tayto in a spud-field
/sd {{charPrefix}}, riding a bike
/sd quiet=true me
  • negative= sets a negative prompt for this one picture.
  • {{charPrefix}} adds the current character’s saved prefix to a free-mode prompt.
  • quiet=true makes the picture without posting it to the chat. It still goes to the gallery.

To see every saved picture for a character, across all chats, open the gallery from the “More…” menu on the character panel, or type /show-gallery.

Raw last message is rarely what you want. A roleplay reply is prose with dialogue in it. Image models, especially the Stable Diffusion family, respond to short visual descriptions. Use last and let the chat model translate, or write the prompt yourself in free mode.

Automatic Images

Two options make pictures appear without a command. Both are off by default.

Interactive mode

With Use interactive mode on, SillyTavern checks each message you send. If it matches a pattern, you get an image in place of a text reply. The pattern, as the documentation describes it:

  • one of these verbs: send, mail, imagine, generate, make, create, draw, paint, render;
  • then, within 10 characters, one of these nouns: pic, picture, image, drawing, painting, photo, photograph;
  • then the subject.

The code’s pattern also accepts the verb show, which the documentation’s list leaves out.

So “Can you please send me a picture of a cat” works. “Could you draw something nice for me” does not, because there is no noun from the list. And “send me a really good picture” may fail because the noun is more than 10 characters after the verb.

Some subjects select a built-in mode: “you” or “yourself” gives the character portrait, “me” gives your persona, “your face” or “selfie” gives the close-up, “last message”, “story” and “background” give the modes of the same name.

Function tool

With Use function tool on, a Chat Completion model that supports tool calling decides for itself that you asked for a picture. The documentation lists the requirements: a configured source, a supported model with function calling enabled in the AI Response settings, and a message that expresses the intent. When the function tool is active, interactive mode does not trigger.

The function tool understands looser wording than the pattern does. It also depends on the model, and many local models and some cloud models do not support tool calling.

Neither option draws a picture for every reply. For that you need a Quick Reply or a script that runs /sd last after each message, which is outside the extension. Think about the cost before you set that up: in last mode every picture is also a text request.

The Defaults, Read From the Code

These are the values a new install starts with.

SettingDefaultRange
Width × height512 × 51264 to 2,048, in steps of 64
Sampling steps201 to 150
CFG scale71 to 30
SamplerDDIMdepends on the source
Seed-1 (random)
Clip skip11 to 12
Common prompt prefixbest quality, absurdres, aesthetic,
Negative promptlowres, bad anatomy, bad hands, text, error, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry
Interactive mode, function tool, edit prompts, snapall off

Two of these defaults are worth changing at once on a modern model.

512 × 512 is the resolution of Stable Diffusion 1.5. SDXL and the models that came after it are trained at about 1,024 pixels and give worse results at 512. Set the resolution to match your model. The option Snap auto-adjusted resolutions, which the documentation recommends for SDXL, keeps portraits and backgrounds on sizes the model knows.

The default prefix and negative prompt are tag lists in the style of anime models. Words such as “absurdres” mean something to models trained on tagged anime art. A FLUX model, or a cloud model such as the ones from OpenAI or Google, reads natural language, and tags like these are noise to it or worse. If you use such a model, clear both fields or rewrite them as plain sentences.

Prefix and negative prompt are saved together as a Style. You can keep one style per model and switch with /imagine-style.

Keeping a Character Consistent

The usual complaint is that the character looks different in every picture. The reason is the pipeline: the chat model writes a new description each time, and it words it differently each time.

The tools SillyTavern gives you, from weakest to strongest:

  1. Character-specific prompt prefix. A field in the drawer that is stored for the current character and added to every prompt for them. Put the fixed facts here: female, green eyes, short brown hair, pink shirt. This is the tool with the largest effect for the least work.
  2. A fixed seed. With the same seed and a similar prompt, composition and features drift less. Note that image swipes randomize a fixed seed for the next attempt, so a swipe is always a new roll.
  3. Edit prompts before generation. This option shows you the prompt the chat model wrote and lets you correct it before it is sent.
  4. A LoRA in the prefix. The documentation notes that, where the source supports it, you can put a LoRA tag in the character prefix, in the form <lora:Name:1>. With ComfyUI this needs a LoRA tag loader node in the workflow.
  5. Image-to-image from the avatar. The included Char_Avatar_Comfy_Workflow.json starts each picture from the character’s avatar. The documentation suggests a denoise value between about 0.5, which changes little, and 1.0, which ignores the avatar.

The documentation lists two limits of the character prefix:

  • It works only in one-to-one chats. It is not used in group chats.
  • It is not used for backgrounds or free mode. In free mode you can add it by hand with {{charPrefix}}.

Tick Shareable if you want the prefix saved inside the character card, so it travels when you export the card. Otherwise it is stored only in your local settings.

Does the Character Know What the Picture Shows?

By default, no. The documentation says generated images “are hidden in the main API prompts by default”. In the code, all four visibility switches (wand, slash command, interactive mode, function tool) start as off.

This matters for roleplay. You ask a character for a selfie, a picture arrives, and in the next message the character has no idea what it sent.

If you turn visibility on for a way of generating, the chat model receives a short text line in place of the image. The default template is:

[{{char}} sends a picture that contains: {{prompt}}].

So the model is told the prompt, not shown the picture. That is usually enough for the character to refer to it. A multimodal Chat Completion model can also receive the image itself if “Send inline images” is enabled.

ComfyUI Workflows

Once the default workflow is not enough, you can use your own. The documentation’s summary: build the workflow in ComfyUI, export it in API format, paste it into SillyTavern’s workflow editor, and replace fixed values with placeholders.

The steps:

  1. In ComfyUI, enable Dev Mode and use Save (API Format).
  2. In SillyTavern, create a new workflow and paste the JSON into the editor. You can also drop the file into data/default-user/user/workflows.
  3. Replace the values SillyTavern should control with placeholders.
PlaceholderFilled with
%prompt%, %negative_prompt%The final prompts, with prefixes included
%model%, %vae%The model and VAE selected in the drawer
%sampler%, %scheduler%, %steps%, %scale%The matching controls
%width%, %height%The resolution
%seed%The seed, or a new random one when the seed is -1
%denoise%, %clip_skip%For image-to-image and custom workflows
%char_avatar%, %user_avatar%The avatars, as base64 image data

Three rules from the documentation prevent most broken workflows:

  • Every placeholder must be inside double quotes, even for numbers. "steps": "%steps%", not "steps": %steps%.
  • The API export drops nodes that are only for display. If your prompt lived in a separate text node, it may now be inside another node. Search the JSON for your test prompt and replace it there.
  • Model types must match the loader. Checkpoints, UNets and GGUF files all appear in the same model list. A checkpoint chosen for a workflow that loads a GGUF UNet makes ComfyUI report an error on the loader node.

The editor marks each placeholder as present or absent in your JSON. A workflow without %prompt% will run and draw the same picture every time. That is the most common mistake.

Keep the original exported file. Editing the copy with placeholders in ComfyUI later is much harder.

Version 1.19.0 (14 September 2026) fixed two ComfyUI problems: the result lookup now reads only the current prompt’s history, and outputs that are not images are skipped. If a workflow with extra output nodes returned the wrong thing or nothing, update before you rebuild it.

Error Messages and Their Real Causes

The messages in this table are quoted from the extension’s code.

Message or symptomCauseWhat to do
”Image generation is not available. Check your settings and try again.”The selected source fails its check: still on Extras, an empty address, or no saved keyChoose a source. Fill in its address or save its key
”Prompt generation produced no text. Make sure you’re using a valid instruct template and try again”The chat model returned nothing for the description step, or everything it wrote was removed in clean-upTry /sd with your own words. If that works, the image side is fine. Fix the chat connection or instruct template, or see the language note below
”Could not validate ComfyUI API” (also SD WebUI, SD.Next, Draw Things, stable-diffusion.cpp)SillyTavern’s server cannot reach that addressCheck that the tool is running, and that the address is correct from the machine SillyTavern runs on
”Image generation failed. Please try again.” followed by detailsThe image source returned an errorRead the details. Usual causes are a wrong model type, a missing node, or a refused prompt
”Chat changed, generated image discarded.”You switched chat while the picture was being madeStay in the chat until the image arrives
”ComfyUI Workflow … does not exist.”The selected workflow file is missingChoose Default_Comfy_Workflow.json again
The same picture every timeA custom workflow without %prompt%, or a fixed seed with a fixed promptAdd the placeholder. Set the seed to -1
The character ignores the pictureVisibility is off for that way of generatingTurn on the matching visibility option
Swiping the picture regenerates the textYou used the swipe gestureUse the arrow buttons on the image. The documentation warns that the gesture regenerates the message

The language note: prompts that are not in English

By default, the description written by your chat model is cleaned before it is sent. The code removes every character that is not a basic Latin letter, a digit or one of a few punctuation marks.

If you roleplay in English, you never notice. If your chat is in Russian, Japanese, Chinese, Korean or Arabic and the chat model writes the description in that language, the whole description is removed, and you get the “produced no text” error, or a picture made from the prefix alone. In languages with accented Latin letters, the accents are removed and the words can be split at that point.

There are two fixes:

  • Turn on Minimal prompt processing. The documentation describes it as skipping “the aggressive sanitization that is done by default”.
  • Or edit the prompt templates in the drawer so they end with an instruction to answer in English. Most image models understand English prompts best anyway.

We have not seen this cause stated in the documentation’s troubleshooting. It follows directly from the clean-up function in the code.

Is It Worth Setting Up?

For portraits and backgrounds, yes. A face for a new character and a background for a scene are one command each, and with a character prefix the results are steady enough.

For illustrating a story as it happens, be realistic. Each scene picture is a second request to your chat model plus an image generation, and consistency between pictures takes real work: a prefix, a seed, often a LoRA. Nothing in the extension keeps a character’s face stable by itself.

If what you want is a game that illustrates itself with a consistent look and no setup, that is a product feature and not an extension. Our guide to AI RPGs with images compares the platforms that do it, and how they charge for it.

Checklist

  • Source changed away from SillyTavern Extras.
  • Address filled in (local) or key saved (cloud). Stable Horde needs neither.
  • Resolution set for your model. 512 is for SD 1.5 only.
  • Prefix and negative prompt rewritten if your model reads natural language.
  • Character-specific prefix written for the characters you draw often.
  • Free mode tested first, to prove the image side works.
  • Visibility turned on if the character should know about the pictures.
  • ComfyUI workflow contains %prompt%, and every placeholder is in double quotes.
  • Minimal prompt processing on, if your chat is not in English.

Frequently Asked Questions

Does SillyTavern have image generation?

Yes. Image Generation is one of the extensions that ships inside SillyTavern, so there is nothing to install. It does not draw the pictures itself. It sends a prompt to an image source that you choose, such as Stable Horde, a local ComfyUI server or a paid cloud service.

How do I enable image generation in SillyTavern?

Open the Extensions panel, open the Image Generation drawer and choose a Source. On a fresh install the source is set to SillyTavern Extras, which the documentation marks as deprecated, so nothing works until you change it. Then use the Image Generation item in the wand menu, or type /sd followed by a mode or a description.

Is image generation in SillyTavern free?

It can be. SillyTavern’s documentation lists Stable Horde and HuggingFace Serverless as cloud sources that are free of charge, and ComfyUI, Stable Diffusion WebUI, SD.Next, stable-diffusion.cpp and Draw Things as free local sources. Local sources need your own graphics hardware. Most other cloud sources are paid.

Why is SillyTavern image generation not working?

The most common cause on a new install is that no working source is selected, which gives the message that image generation is not available. The second is the prompt step: most modes ask your text model to write the image prompt first, and if that reply is empty or refused, no picture is made.

What does the /sd command do in SillyTavern?

It starts an image generation from the chat box. /sd followed by you, face, me, scene, last, raw_last or background uses one of the seven built-in modes. /sd followed by anything else is free mode: your words are sent to the image source as the prompt.

How do I connect ComfyUI to SillyTavern?

Start ComfyUI, choose ComfyUI as the Source in the Image Generation drawer, enter the server address (the default is http://127.0.0.1:8188) and press Connect. SillyTavern includes a default text-to-image workflow, so you can generate without building one. For your own workflow, export it from ComfyUI in API format and paste it into the workflow editor.

How do I keep a character looking the same in SillyTavern images?

Write a character-specific prompt prefix with the fixed visual facts, such as hair, eyes and clothing. It is added to every prompt for that character. Set a fixed seed and one style as well. The prefix only works in one-to-one chats, and it is not used for backgrounds or free mode unless you add the charPrefix macro.

Can SillyTavern generate images automatically?

Yes, in two ways. Interactive mode watches your messages for a request such as send me a picture of a cat and generates an image in place of a text reply. The function tool option lets a Chat Completion model that supports tool calling decide when a picture was asked for.


The default settings, the source check, the prompt clean-up, the interactive-mode pattern, the visibility defaults and the error messages were read from the Image Generation extension’s source code on SillyTavern’s release branch (version 1.19.0) on 5 October 2026. The list of sources, the generation modes, the /sd arguments, the options and the ComfyUI workflow instructions are from SillyTavern’s documentation. Dated changes are from the project’s release notes. We did not generate images for this guide. The remarks on resolution, on tag-style prefixes for natural-language models, on raw last message and on the cost of scene pictures are our reading.

SillyTavern is an open-source project. Arcanum is not affiliated with SillyTavern, ComfyUI or any service named here. Product names and trademarks are the property of their respective owners.