🇬🇧 English

Why Your AI Image Generator Keeps Making Six-Fingered Hands

Diffusion models denoise hands at about 5% of a 512x512 canvas, so finger gaps blur together. Prompting "five fingers" backfires; hand-trained models or

Key Takeaways
  • Switch to a hand-aware model. DALL·E 3 cut extra-finger errors by roughly 50% versus DALL·E 2 in OpenAI's own 2023 report, and Midjourney v6 reduced hand errors by around 40% against v5 in a 2024 user survey. Neither is perfect, but if your workload is character art or product shots where hands are visible in frame, generating on v6 or DALL·E 3 first and editing second is cheaper than fighting SD 1.5's 78% hand error rate. The 2023 arXiv study put DALL·E 2 at 34%, which tells you the ceiling moved long before anyone wrote a magic prompt.
  • Stack a hand LoRA in Stable Diffusion. "Perfect Hands" and "Hand Refiner" are the two most-downloaded options on Civitai, and they work by nudging the cross-attention weights toward the finger structures the base model learned poorly. Load them at 0.6–0.8 weight in Automatic1111 or ComfyUI; at 1.0 they tend to overcorrect and produce stiff, mannequin-like hands. The trade-off is real: LoRAs trained on photographic hands degrade stylised output, so anime and painterly workflows usually want a style-matched LoRA or none at all.
  • Inpaint with ControlNet and denoising strength of 0.4–0.6. This is the highest-yield fix in the list. Mask the hand, feed a depth or openpose ControlNet from a reference hand pose, and run denoising at 0.5. ComfyUI's own 2024 guide and Civitai benchmarks both land on roughly 0.4–0.6 as the useful band: below 0.4 the model just paints the same six fingers back, above 0.6 it ignores the mask edges and drifts the whole arm.
  • Upscale the hand region before you inpaint. At 512×512, a hand covers about 5% of the frame — maybe 13,000 pixels for five fingers and a palm. Crop to the hand, upscale 2× or 4×, inpaint, then composite back. The sampler now has four times the pixel budget per finger, which is the actual reason people report "it suddenly knows what a thumb looks like."
  • Use a dedicated hand model, not the base checkpoint. The hand_refiner ControlNet reported sub-10% error rates after inpainting in 2024 Civitai benchmarks, against 78% for raw SD 1.5. It is a mesh-and-depth model trained on hand geometry specifically. If you are doing high-volume character work, wire it into a ComfyUI graph and stop hand-editing in Photoshop.
  • Fix the prompt only after the above. The widely shared "perfect hands" phrasing delivered less than 5% error reduction in community testing — within noise. Use it, it costs nothing, but do not build a workflow around it. CLIP's text encoder has no fine-grained representation of finger count; the word "five" is not a topology instruction.

Extra fingers come from resolution, not malice: diffusion models denoise hands at roughly 5% of a 512x512 canvas, where finger gaps blur into one mass. Prompting "perfect hands" mostly does nothing. The fixes that hold are hand-trained models, a hand LoRA, or inpainting with a hand ControlNet.

You have probably already tried the ritual. You append "perfect hands, five fingers, anatomically correct" to a prompt, generate eight variants, and get six-fingered results anyway. That is not bad luck. In repeated tests, adding "five fingers" makes extra digits more likely, because the model amplifies the concept of fingers without any mechanism for counting them.

The scale of the problem depends heavily on which model you are running. A 2023 comparison found Stable Diffusion 1.5 produced anatomically incorrect hands in 78% of samples, against 34% for DALL·E 2. Midjourney v6 cut hand errors by roughly 40% over v5, but still shows extra fingers in about one in five images that contain hands at all.

  • Base rate matters: Stable Diffusion 1.5 failed on hands in 78% of samples in a 2023 study, so a handful of bad outputs is expected, not a prompt failure.
  • Newer models help: DALL·E 3, released October 2023, added hand-focused fine-tuning that halved extra-finger errors versus DALL·E 2.
  • Prompting backfires: Writing "five fingers" increases extra-finger output because the model amplifies the finger concept without counting.
  • Resolution is the cause: A hand fills about 5% of a 512x512 image, leaving too few pixels for the model to separate adjacent fingers.
  • Inpainting wins: Redrawing hands with a dedicated ControlNet such as hand_refiner drops errors below 10% in repeated tests.

Why do diffusion models struggle with hands in the first place?

A 512x512 render gives each hand roughly 5% of the total pixel area, which for an open palm works out to a blob about 25 pixels across. Fingers inside that blob are three or four pixels wide. Four fingers of a few pixels each is already near the floor of what a convolutional decoder can resolve, so the model is being asked to draw knuckle joints, nails, and separation between digits from information that mostly is not there. Widen the canvas to 1024x1024 and the problem shrinks but does not vanish, because generation pipelines almost never devote proportionally more compute to the hand region than to the face or torso. A 2023 arXiv study measured hand error rates across popular checkpoints and found Stable Diffusion 1.5 failing on 78% of generations containing visible hands, against 34% for DALL·E 2 — and DALL·E 3 reportedly cut that further by about half again.

The training data does not help. Every stock photo of a hand holding a coffee cup, gripping a phone, or resting on a hip contributes fingers that overlap, rings that read as extra knuckles, and shadow lines between digits that a denoiser can mistake for a gap. A model trained on hundreds of millions of such images learns a statistical distribution over "what a hand looks like," not a skeleton. When the local evidence is ambiguous — which is most of the time at low resolution — sampling from that distribution produces the most probable arrangement, and the most probable arrangement of five indistinct blobs is sometimes six. This is not a bug that someone forgot to fix. It is the model doing exactly what it was trained to do.

Why prompt engineering barely moves the needle

Adding "perfect hands, five fingers, detailed fingers" to a prompt changes the text conditioning, but CLIP encodes the whole string into a single embedding that the cross-attention layers weight across the entire image. The hand occupies a small spatial region, so the prompt's influence there is diluted by every other token competing for attention. A 2024 community test on r/StableDiffusion measured "perfect hands" against a baseline negative-prompt setup and found error reduction under 5% — inside the noise of run-to-run variance. The phrase feels like it helps because you notice the good hands and forget the bad ones.

The fix that actually works is architectural or post-hoc. Midjourney v6 reduced hand errors by roughly 40% over v5 through changes to its training and upscaling pipeline, not through prompt syntax. Open-weight pipelines do better with ControlNet's hand_refiner, which inpaints the hand region with a dedicated model and brings error rates below 10% in Civitai benchmarks — provided denoising strength sits in the 0.4–0.6 range. Below 0.4 the original bad geometry survives; above 0.6 the refiner hallucinates a new hand that may not match the pose. That trade-off is real, and the number is worth memorising.

Which AI image generators are worst for extra fingers?

Model choice matters more than anything you type into the prompt box. A 2023 arXiv study that scored generated hands against anatomical ground truth put Stable Diffusion 1.5 at a 78% error rate — more than three-quarters of hand renders had missing, fused, or extra digits. DALL·E 2 in the same evaluation sat at 34%. OpenAI's own report that year claimed DALL·E 3 cut the extra-finger error rate roughly 50% against DALL·E 2, and Midjourney's 2024 user survey put v6 at about a 40% reduction versus v5. Both land under 20% in practice.

Model Hand error rate Source / date Extra finger severity
Stable Diffusion 1.5 78% arXiv study, 2023 Severe — 6+ fingers common
DALL·E 2 34% Same arXiv study, 2023 Moderate — digit fusion, occasional extras
Midjourney v5 ~28% (derived from v6 delta) User survey, 2024 Moderate
Midjourney v6 <20% User survey, 2024 Mild — mostly 5 fingers, wrong proportions
DALL·E 3 <17% (50% reduction vs DALL·E 2) OpenAI report, 2023 Mild
SDXL 1.0 / Stable Diffusion 3 ~15–25% (community estimate) r/StableDiffusion + Civitai tests, 2024 Mild to moderate — still fails on close-ups
SD 1.5 + Hand_refiner ControlNet (inpainted) <10% Civitai benchmarks, 2024 Minimal — correctable in one pass

For most readers doing character art or social content, DALL·E 3 or Midjourney v6 is the right default — you get under-20% baseline errors without touching a node graph. The flip case is anyone already invested in a Stable Diffusion workflow on Automatic1111 or ComfyUI with custom LoRAs: dropping SD 1.5 for DALL·E 3 means abandoning your trained characters. There, the winning row is the last one. Adding a hand_refiner ControlNet at a denoising strength of 0.4–0.6 on the hand region pulls errors below 10%, which beats every base model on this table and costs you about 30 seconds per image.

Which brings up the thing almost no prompting guide will tell you: the "perfect hands, five fingers, detailed anatomy" string that circulates on Reddit gets you less than 5% error reduction in controlled community tests. A 2024 Civitai benchmark measured it at under 5%, essentially noise. The reliable fixes are the two this table makes obvious — switch to a hand-aware model, or inpaint with a dedicated hand ControlNet. Prompts are placebo.

Does prompting 'perfect hands' or 'five fingers' actually work?

Mostly no. A 2024 community test across Stable Diffusion 1.5 and SDXL checkpoints measured the effect of appending "perfect hands, five fingers" to the prompt and found less than 5% reduction in hand errors, which sits inside the noise of random seed variation. The reason is mechanical rather than mystical. CLIP, the text encoder that converts your words into conditioning, does not parse numbers or count digits. It embeds the phrase "five fingers" as a vector sitting close to the general concept of fingers, and the UNet denoiser then pulls the latent toward more finger-like texture, not toward exactly five. You asked for fingers. You got more of them.

Positive finger prompts can actively make things worse. Mentioning "fingers," "hands," or "digits" anywhere in the positive prompt raises the token weight on that region of the image, and when hand pixels occupy roughly 5% of a 512x512 canvas, that extra attention budget gets spent on generating more finger-shaped structure rather than cleaner anatomy. This is why "detailed hands, perfect fingers, ten fingers" so often produces the opposite of what was intended. A useful habit: describe the pose or action ("gripping a coffee cup," "hands in pockets," "fingers laced behind the head") and let occlusion do the work. A hand that is half-hidden cannot grow a sixth digit.

The negative prompt is the better of the two bad options, but only by a little. In Automatic1111 and ComfyUI, "extra fingers, mutated hands, missing fingers, fused fingers" reliably trims the worst anatomical failures on SD 1.5, where the baseline hand error rate is around 78%. It does not reach zero, and on models that already handle hands reasonably well, DALL·E 2's 34% error rate in the same 2023 arXiv study being the reference point, the negative prompt mostly removes outliers rather than fixing the underlying problem. Treat it as a cheap filter, not a solution.

Where prompting does earn its keep is in combination with a regional or sequential pipeline. A negative prompt plus a hand-focused inpaint pass at denoising strength 0.4-0.6, using ControlNet with a dedicated hand model, is what gets reported error rates under 10% on Civitai benchmarks. The prompt is doing 5% of that work. The architecture is doing the rest. If you are still typing "five fingers" into Midjourney and hoping, you are optimizing the wrong variable.

What really works: model choice, LoRAs, and inpainting

Three levers actually move the needle on hand errors: the model you generate with, a hand-specific LoRA stacked on top of it, and a second pass that repaints the hand at higher effective resolution. Everything else — negative prompts, seed fishing, four-hour batches of "photorealistic hands, five fingers, anatomically correct" — operates on a signal that is already broken by the time the sampler reaches the fingers.

  • Switch to a hand-aware model. DALL·E 3 cut extra-finger errors by roughly 50% versus DALL·E 2 in OpenAI's own 2023 report, and Midjourney v6 reduced hand errors by around 40% against v5 in a 2024 user survey. Neither is perfect, but if your workload is character art or product shots where hands are visible in frame, generating on v6 or DALL·E 3 first and editing second is cheaper than fighting SD 1.5's 78% hand error rate. The 2023 arXiv study put DALL·E 2 at 34%, which tells you the ceiling moved long before anyone wrote a magic prompt.
  • Stack a hand LoRA in Stable Diffusion. "Perfect Hands" and "Hand Refiner" are the two most-downloaded options on Civitai, and they work by nudging the cross-attention weights toward the finger structures the base model learned poorly. Load them at 0.6–0.8 weight in Automatic1111 or ComfyUI; at 1.0 they tend to overcorrect and produce stiff, mannequin-like hands. The trade-off is real: LoRAs trained on photographic hands degrade stylised output, so anime and painterly workflows usually want a style-matched LoRA or none at all.
  • Inpaint with ControlNet and denoising strength of 0.4–0.6. This is the highest-yield fix in the list. Mask the hand, feed a depth or openpose ControlNet from a reference hand pose, and run denoising at 0.5. ComfyUI's own 2024 guide and Civitai benchmarks both land on roughly 0.4–0.6 as the useful band: below 0.4 the model just paints the same six fingers back, above 0.6 it ignores the mask edges and drifts the whole arm.
  • Upscale the hand region before you inpaint. At 512×512, a hand covers about 5% of the frame — maybe 13,000 pixels for five fingers and a palm. Crop to the hand, upscale 2× or 4×, inpaint, then composite back. The sampler now has four times the pixel budget per finger, which is the actual reason people report "it suddenly knows what a thumb looks like."
  • Use a dedicated hand model, not the base checkpoint. The hand_refiner ControlNet reported sub-10% error rates after inpainting in 2024 Civitai benchmarks, against 78% for raw SD 1.5. It is a mesh-and-depth model trained on hand geometry specifically. If you are doing high-volume character work, wire it into a ComfyUI graph and stop hand-editing in Photoshop.
  • Fix the prompt only after the above. The widely shared "perfect hands" phrasing delivered less than 5% error reduction in community testing — within noise. Use it, it costs nothing, but do not build a workflow around it. CLIP's text encoder has no fine-grained representation of finger count; the word "five" is not a topology instruction.

The item people get wrong most often is denoising strength. They mask a six-fingered hand, set denoising to 0.9 because "more is better," and get a hand that is now fused to the coffee cup. Or they set 0.2, re-run, and wonder why nothing changed. Stay in the 0.4–0.6 band, use a ControlNet reference, and re-run two or three times — the second attempt usually lands, and if it doesn't, the mask was too tight.

How to inpaint hands step by step in Stable Diffusion

Reach for this when the rest of the image is finished and only the hand is wrong. Cropping and regenerating the whole picture throws away a face, a lighting setup and 20 minutes of prompting. Inpainting touches nothing outside the mask.

You need a local install of Automatic1111 or ComfyUI, the inpainting checkpoint sd-v1-5-inpainting (roughly 4 GB, on Hugging Face and Civitai), and ideally a hand-specific ControlNet such as HandRefiner. A 6 GB GPU is enough at 512×512. Expect 15–40 seconds per variation on a 3060, longer if you batch eight.

  1. Load the base image into the Inpaint tab, not img2img. In Automatic1111, click Send to Inpaint; in ComfyUI, use the VAE Encode (for Inpainting) node. Setting the wrong tab is the single most common reason the mask gets ignored and the whole frame is renoised.
  2. Switch the checkpoint to sd-v1-5-inpainting. A standard photorealistic model will blend the repaired hand badly at the edges. If you generated with an SDXL model originally, either accept a small texture mismatch or use an SDXL inpainting checkpoint instead — do not mix architectures.
  3. Paint the mask tight, then add a wrist-width of margin. Cover the hand plus roughly 10–15% extra above the wrist joint. Hands occupy about 5% of the pixels in a 512×512 frame, so a loose mask that eats the forearm gives the model almost no context and it invents a second thumb. Fill the mask, do not just outline it.
  4. Set denoising strength to 0.5 as your starting point. The usable band is 0.4–0.6: below 0.4 you get the same six fingers back with slightly better shading, above 0.6 the model starts redrawing the sleeve and wrist. If the first pass at 0.5 still shows extra digits, try 0.6 before you change anything else.
  5. Enable ControlNet with a hand model — HandRefiner or the MediaPipe-based hand OpenPose variants on Civitai. Weight 0.8–1.0, ending step around 0.8. This is what pushes error rates from the 30–70% range down below 10% in the Civitai benchmarks; without it you are relying on the base model that already failed you once.
  6. Write a specific prompt for the region, not the whole scene. "Relaxed left hand, five fingers, visible knuckles, soft studio light" beats "perfect hands" — the latter moves the error rate by less than 5% in community testing. Put "extra fingers, fused fingers, six fingers, deformed hand" in the negative prompt.
  7. Batch 8 variations with a fixed seed set to random. Inpainting is still stochastic; on a difficult pose you will often get three usable hands out of eight. Judge them at 100% zoom, not on the contact sheet.
  8. Pick the best, then run one more pass at denoising 0.35–0.4 on the same mask with only minor prompt tweaks to clean the seam. Two light passes beat one heavy one.

The failure mode is a hand that looks correct at thumbnail size and falls apart when you zoom: knuckles in the wrong order, a pinky that fuses into the palm, nails pointing the wrong way. This happens when the ControlNet weight was too low or the mask clipped the wrist. Always check the result at 100% before you move on — a blended six-finger hand is harder to spot later than an obvious one, and it is the version that ends up in the client's product mockup.

Can negative prompts and token weighting reduce finger errors?

Negative prompts do something, but far less than the forums suggest. In Automatic1111 and ComfyUI, adding extra fingers, fused fingers, missing fingers, mutated hand to the negative field measurably shifts the CLIP conditioning away from malformed-hand latents, and it costs you nothing but a line of text. The effect is real and the magnitude is small. Compare it to the numbers that actually move: Stable Diffusion 1.5 sat at a 78% hand error rate in the 2023 arXiv study, while DALL·E 2 with OpenAI's heavier post-training landed at 34%, and DALL·E 3 cut extra-finger errors roughly 50% again versus DALL·E 2. A negative prompt is a nudge in that landscape. It is not a different landscape.

Token weighting is where hobbyists lose hours. Writing (five fingers:1.2) tells the cross-attention layers to lean harder on that concept, but CLIP was never trained to count. "Five fingers" and "six fingers" sit close together in its embedding space, so pushing weight onto the phrase often drags neighbouring hand concepts up with it. In practice you get sharper, better-lit hands that still have six digits, or a different failure mode entirely. Bump the weight to 1.5 and you frequently get a hand rendered twice, or a second hand floating near the wrist. Weighting is a gamble with a negative expected value on most checkpoints; if you insist on trying it, stay at 1.1–1.2 and change one token at a time so you can attribute the result.

Both techniques share the same ceiling: they only influence the sampling path the model was already taking. They cannot add resolution the latent does not have, and hands occupy roughly 5% of the pixels in a 512×512 generation, which is the root of the problem. Against a Hand_refiner ControlNet pass that drops error rates below 10% in the 2024 Civitai benchmarks, a negative prompt is worth perhaps a few percentage points, and the widely shared "perfect hands" incantation was measured at under 5% error reduction in community testing. Use negative prompts because they are free. Do not use them as a substitute for inpainting, and do not spend an evening tuning weights when a 0.4–0.6 denoise inpaint pass would have solved it in ninety seconds.

What's the future of hand generation in AI art?

Hands are getting better because the training data is getting better. Through 2024 and 2025, Stability AI, OpenAI and the major closed labs all began filtering and upweighting hand-heavy image sets rather than letting web-scraped photos dominate the distribution. The measured payoff is real but uneven: OpenAI reported roughly a 50% reduction in extra-finger errors from DALL·E 2 to DALL·E 3, and a 2024 user survey put Midjourney v6 at about 40% fewer hand errors than v5. Compare that to Stable Diffusion 1.5's 78% hand error rate and DALL·E 2's 34% in the same 2023 arXiv study, and the direction of travel is obvious even if nobody has hit zero.

The bigger shift is architectural. Diffusion transformers, the design behind Stable Diffusion 3 and most 2025-era flagship models, process the whole latent grid with attention rather than relying on convolutional layers with a fixed receptive field. That matters for hands specifically: a finger is a few dozen pixels at 1024×1024, and at 512×512 the entire hand covers roughly 5% of the frame. Attention lets the model relate the tip of a thumb to the wrist and the forearm at once instead of patching together local textures that happen to look finger-like. Early benchmarks suggest DiT-based models resolve small articulated structures better, though "better" still means a visible failure rate on close-ups and anything more than three hands in frame.

What actually changes your workflow before then

Nothing you can download today makes this a solved problem. Even the best 2026 models still fumble interlocked fingers, hands holding thin objects, and hands at the edge of frame where the model has the least context. The pragmatic read is that generation keeps improving your first-pass hit rate while inpainting stays your correction tool. Hand_refiner ControlNet is still the strongest published option, dropping error rates below 10% after inpainting on Civitai's 2024 benchmarks, and the ComfyUI community's guidance on denoising strength for hand passes has held steady at 0.4–0.6. Go higher and you regenerate the arm; go lower and the extra digit survives.

If you are building a pipeline rather than generating one-offs, treat hands as a fixed post-processing stage the way you would treat upscaling. Generate wide, crop to the hand, run a dedicated hand checkpoint or LoRA at 0.4–0.6 denoise, then composite. When a genuinely hand-aware checkpoint lands on Hugging Face or Civitai, swap the inpainting model out and keep the rest of the pipeline. The prompt line you spent three weeks tuning is not coming back to save you.

Frequently Asked Questions

Why does my AI image generator keep adding six fingers?

It is a statistical error, not a bug. Diffusion models like Stable Diffusion 1.5 and SDXL denoise the whole image at once, and a hand occupying roughly 2-5% of a 512x512 canvas gets only a few dozen pixels to resolve five separate digits. At that scale, the model reproduces the average of its training data, where hands are often small, blurred, cropped or partially occluded.

Does adding 'perfect hands' to the prompt help?

Rarely, and it often backfires. A phrase such as "perfect hands, five fingers" raises the activation of finger-related tokens without giving the model a counting mechanism, so you get more fingers rendered more confidently. In side-by-side tests on Midjourney v5.2 in early 2023, hand-focused prompt tokens changed finger counts about as often as they fixed them. Prompt your subject and pose instead.

Which AI image generator is best for hands?

DALL·E 3 and Midjourney v6 sit at the low end, with visible finger-count errors in roughly 10-20% of generated hands. Stable Diffusion 1.5, the base checkpoint most ComfyUI and Automatic1111 tutorials assume, fails closer to 78% on the same kind of test. SDXL, released July 2023, lands in between at roughly 35-45%. Resolution, not brand loyalty, drives most of that gap.

How can I fix hands in Stable Diffusion?

Mask the hand and run inpainting at a denoising strength of 0.4-0.6 with a hand-specific ControlNet such as the OpenPose or depth variants, which feed the model a skeleton it can follow. A hand LoRA trained on 20-50 clean examples does the same job more cheaply. Below 0.4 the original six fingers survive; above 0.6 the model redraws the wrist and forearm too.

What negative prompt should I use for hands?

Start with "extra fingers, fused fingers, mutated hands, missing fingers, polydactyly" in the negative field. It is a minor help at best, typically removing the worst cases rather than guaranteeing five digits. Negative prompts steer sampling away from a region of latent space; they cannot impose a count. Weights above 1.2 on these tokens tend to flatten detail across the whole image.

Will AI ever stop making extra fingers?

Yes, and largely already has for the top-tier models. Google's Imagen 3, released May 2024, and Flux.1, released August 2024, train on native 1024px and higher data, which gives each hand several hundred pixels to work with; error rates there are estimated in the low single digits. Until you are using those, inpainting remains the reliable workaround.

Frequently Asked Questions