Local image generation with SDXL on an old GPU
# Local image generation with SDXL on an old GPU
Every thumbnail on my channel, and a good share of the images inside the videos, was generated on the graphics card under my desk. No website in the loop, no monthly plan, no per image fee, no upload to anyone's server. I type a description of the picture I want, the machine grinds for a minute or two, and a file appears in a folder my video pipeline already reads from.
Once that loop exists, your relationship with images changes, because one more attempt costs nothing except a little patience. This post is the tour: how the workflow works in plain terms, how slow it really is on old silicon, and the cases where I would tell you to pay for a cloud service instead.
Why bother running it locally
Opening a website and typing a prompt is easier. I will grant that immediately. Three things keep the work on my own card anyway.
Cost only shows up at volume. Every video needs a thumbnail and usually a few background images, and I rarely accept a first attempt. Regenerating each image five or ten times, across a lot of videos, turns a small per image fee into a real annual bill. On my own hardware the marginal cost of another image is electricity I never notice.
Privacy is quieter. My false starts stay on my own drive. When I am working out a thumbnail concept I might type ten clumsy descriptions before one lands, and those ugly half-formed attempts simply vanish locally instead of living in some account history forever. Nothing leaves the machine: the prompt, the output, any of it.
The reason I underrated at first is iteration. When no meter is ticking in the back of your mind, you stop being careful with attempts and start being playful, and playful is where the good results tend to come from. Generating fifty variations to find one is a legitimate strategy when fifty variations cost nothing, and it is a strategy that a per image price quietly forbids.
The whole machine is three pieces
Strip the tooling away and only three parts remain.
The model is a large file that knows how to turn words into pictures. I run an open model in the SDXL family, a few gigabytes sitting on my drive. The first run of a session loads it into the card's memory, which takes a moment; after that, images come out one after another with no reloading, which is a big part of why batches are efficient. Once downloaded it never touches the internet again.
The prompt is a sentence or two of plain text. A calm desk at night lit by a single lamp. A clean abstract background in dark green. No special syntax, no magic words. You describe the picture in your head as plainly as you can, and the clearer the description, the closer the first batch lands.
Then there is a small pile of settings, most of which can be ignored. Everything else you will read about local generation is detail layered on top of those three pieces.
The three settings that matter
Dozens of knobs exist. Three move the needle for me.
Size sets the width and height. Thumbnails get generated at the wide shape a video player expects, so nothing needs stretching later.
Steps is roughly how many refinement passes the model takes on its way from noise to picture. More steps add a little detail and a lot of time, and past a middling number I cannot see the difference, so a middling number is where I sit.
Guidance controls how strictly the model obeys the prompt. Too strict produces stiff, ugly images. Too loose and it wanders off and ignores what you asked for. I found values that suit my style and stopped touching them.
That is the honest division of labor. The prompt does nearly all the work, and the settings get tuned once and forgotten.
How slow it really is
Here is the cost of doing this locally, stated plainly. My card is several years old. It was strong in its day and it is well behind anything you can buy now. A fast hosted service returns an image in seconds. My machine takes one to two minutes per image depending on size and steps, so a batch of ten variations is a proper wait rather than an instant grid.
The reason this rarely hurts is that I stopped sitting in front of it. I queue a batch, go write a script or edit audio, and come back to a folder of options. There is a compounding trick too: asking the card for several images in one go costs less per image than running each cold, because the model is already resident in memory. Overnight, the machine can grind through a long list and have everything waiting by morning.
Treat generation as something you watch and the slowness is painful. Treat it as something you queue and the slowness mostly stops being a thing you experience at all. It becomes a background chore the computer handles on its own time. The only case that stings is needing one specific image right now, with work blocked until it exists, and my actual workflow almost never produces that situation.
The loop that produces usable images
Local generation has a reputation for warped nonsense, and earning consistent results took practice. Four habits carry most of it.
Write the prompt concretely. Vague prompts return vague pictures. I describe subject, lighting, mood, and rough style in a sentence or two, instead of asking for something nice and hoping.
Generate several and pick. I almost never use the first image. A handful from the same prompt, each slightly different, and I choose whichever reads best. This is exactly where running locally pays off, because being picky is free.
Fix instead of restarting. When an image is mostly right with one messy region, another pass through the model can clean that area, or upscale the whole frame to a sharper version, without gambling away the parts that already work.
And accept the blind spots. Hands come out strange. Text inside an image is nearly always garbled. Faces land in an uncanny zone often enough that I avoid asking for them. I stopped fighting those failures and simply stopped requesting the things the model does badly, which turns out to be a skill of its own. You steer it toward the work it does well and quietly handle the rest another way.
Where a paid service still wins
Fairness requires this section, and I mean it rather than performing balance.
Speed, first. Someone producing images under deadline pressure all day, one after another, should pay for hosted generation and take the results in seconds. My minutes-per-image pace would be a real tax on that kind of work.
The newest models, second. The strongest image models tend to appear behind paid services first, too large or too new to run at home comfortably. Those services currently produce things my setup cannot match, and clean in-image text plus very complex scenes are the clearest examples. I will not claim a tool I run for free beats a paid one on every axis, because it does not.
The split is plain enough. Local costs nothing per attempt and keeps everything private, and it lets you iterate without limit. Hosted is fast and holds the frontier. Choose by whichever of those properties your actual work leans on hardest.
What I actually make with it
The real uses are modest compared with the flashy demos.
Thumbnails are the main one. Every video needs one, and I can try a dozen directions cheaply and pick whatever reads best at a small size, which is the only test a thumbnail has to pass. Backgrounds are the other: the soft abstract backdrops that sit behind a title or fill a moment where stock footage would feel wrong. Those need to fit a mood without distracting, and a local model is exactly right for that job.
There is a quieter benefit in the plumbing. The images come off the same machine my video pipeline runs on, so a freshly generated background drops straight into the folders the pipeline already watches. No downloading, no re-importing, no account to log into, no browser at all. When you make a video most days, that tight loop matters more than it sounds.
I also know what never to ask of it. A logo, a real product shot, a screenshot that must be accurate, anything pixel-perfect or full of precise text: those jobs go elsewhere or get done by hand, because a generated stand-in makes the whole video look fake. I lean on the card for the high volume, good enough, iterate-until-it-fits work. It earns its keep there, and I do not pretend it earns it everywhere.
Get new guides and videos first — join the Telegram channel.