The portrait is great. The pose is great. Then your eye drifts down to the hands and there are six fingers, a thumb that grew out of a wrist, or a fist fused into a single mitten shape. Hands are the second-hardest body part for diffusion models after teeth, even in mid-2026 models. The fix is rarely a prompt tweak. It is workflow: hide hands when you can, give them enough pixels when you cannot, and run a dedicated inpaint pass when the composition forces them into view.
Fastest fix: if hands are not the subject, crop or hide them (cut framing at the chest, hands in pockets or behind back). If hands must show, raise their pixel budget (vertical aspect, tighter crop, higher base resolution), then fix what remains with a hand-targeted inpaint pass: ADetailer hand_yolov8n.pt at denoise ~0.4 in A1111, the MeshGraphormer Hand Refiner node in ComfyUI, or the Editor on midjourney.com. Steps 1 and 2 alone clear roughly 70% of cases.
Which bucket are you in
Find your symptom, then jump to the step that fixes it.
| Symptom | Most likely cause | Go to |
|---|---|---|
| Hands tiny in a full-body shot, fingers blur together | Too few pixels per hand | Step 2 |
| Hands holding/touching an object | Hand+object composition is hard | Step 4 (inpaint) |
| Group photo, several hands all bad | Hand budget split across hands | Step 1 or Step 2 |
| Only 1 of 4 seeds breaks | Seed noise, not structural | Re-roll once, else Step 4 |
| All anatomy breaks (feet, face, hands) | Pixel budget / weak model | Step 2, then Step 5 |
| Single bad hand in an otherwise perfect image | Local generation error | Step 4 (inpaint) |
| Hand pose is wrong but you need an exact gesture | No structural guidance | ControlNet (see FAQ) |
Common causes
Ordered by how often each is the actual root cause.
1. Hands occupy too few pixels
A standing full-body shot at 1024x1536 gives each hand roughly 60-90 vertical pixels. That is too few for the model to articulate five distinct fingers reliably. Below about 128 pixels per hand, expect failure.
How to spot it: Crop to one hand at 100% and measure. Below 100x100 pixels of bounding box, the hand is undersized.
2. Hand is in motion or partially occluded
“Holding a coffee cup”, “waving hello”, “playing guitar” — the model has to compose a hand and an object simultaneously. Articulated objects (instruments, tools, weapons) are the hardest case; smooth objects (cups, balls) are easier.
3. Multiple hands in frame
Two people shaking hands, group photos with visible hands, hand-on-shoulder poses. The model splits its already-thin hand budget across all of them.
4. Extreme angle on the hand
Hands viewed from the side, from above the knuckles, or fully foreshortened (palm directly at camera) push the model into low-data territory.
5. Stylized prompts fighting realism
“Photorealistic hand in the style of Picasso” — the model averages styles and hands fail first because they have the least stable training signal.
6. Older model or low-step generation
SD 1.5 hands are notoriously bad. SDXL base is meaningfully better. As of June 2026, the strongest models for hands are FLUX.1 Pro / 1.1 Pro, Midjourney V8.1, and Google Imagen 4; among open weights, FLUX.1 [dev] leads on anatomy while SDXL keeps the largest LoRA/ControlNet library. Low step counts (under 20 on SDXL) skip the iterations that would have refined finger geometry.
Before you start
- Decide whether the hands need to be visible at all. Cropping them out is often the fastest fix.
- Save the seed, prompt, model, and tier of the broken image.
- Generate 4 seeds. If 4 of 4 break, the prompt or composition is structural. If 1 of 4 breaks, it is noise.
- Confirm other anatomy is not also breaking. If feet, faces, and hands all break, the root cause is pixel budget, not hands specifically.
Information to collect
- Full prompt, negative prompt, model, seed, sampler, steps, aspect ratio.
- A 100% crop of the broken hand with pixel measurement.
- Whether the hand is interacting with an object or empty.
- Intended use case — a print product hero needs more accuracy than a blog header.
Step-by-step fix
Ordered by ROI. Step 1 and Step 2 together clear about 70% of cases.
Step 1: Hide or crop hands when possible
The cheapest fix is composition. If hands are not the story:
- Cut framing at the chest, not at the waist. No hands in frame.
- Put hands behind back, in pockets, or out of frame.
- Use props that hide hands (a mug held with the back of the hand toward camera, sleeves over knuckles).
For commercial portrait work, “hands out of frame or in pockets” is the standard delivery default.
Step 2: Raise pixel budget for the hand region
If hands must be visible, give them more pixels:
- Switch to a vertical aspect ratio so the body has more vertical pixels.
- Crop tighter — half-body instead of full-body.
- Generate at higher base resolution. Flux at
1024x1280, SDXL at1024x1536. Then upscale; do not generate hands at a tiny size and hope an upscaler invents fingers.
Step 3: Add hand-specific negative prompts
For SDXL and SD-family models, a hand negative block helps (Flux and Midjourney do not use negative prompts the same way, so skip this for them):
extra fingers, missing fingers, fused fingers, malformed hand,
mutated hand, six fingers, deformed hand, extra thumb,
wrong hand anatomy
This will not save a totally broken hand, but it reduces the failure rate at the population level.
Step 4: Run a hand-specific inpaint pass
This is the highest-ROI step for any visible hand that is still wrong after steps 1-3. Use a focused inpaint prompt (just the hand), not your full main prompt.
- A1111 / SDXL: Enable ADetailer with the
hand_yolov8n.ptdetection model. Start at denoise 0.4 (the workable range is about 0.35-0.45); raise toward 0.5-0.6 only if the hand is still wrong. Going much higher reshapes the wrist and forearm. Two light passes beat one aggressive pass. - ComfyUI: The current state of the art is the MeshGraphormer Hand Refiner (the
MeshGraphormer-DepthMapPreprocessornode fromcomfyui_controlnet_aux). It builds a 3D hand depth map plus a precise hand mask, then drives a depth ControlNet inpaint so fingers regenerate with correct geometry. Simpler alternative: aHand Detailer/ FaceDetailer-style node pointed athand_yolov8n.pt. - Midjourney: Open the image in the Editor on midjourney.com (Vary / Region is not yet available on V8.1 images in Discord as of June 2026; the on-site Editor inpaints them), mask only the hand, and re-prompt with
well-defined hand, five fingers, natural finger anatomy, sharp focus. Note: running the Editor on an HD image downscales the result to SD, so do hand fixes before your final HD upscale. - Flux: ComfyUI Flux Fill with a manual hand mask, or FLUX.1 Kontext with a natural-language instruction such as “fix the right hand to have five normal fingers”.
- Photoshop: Generative Fill on the hand region with a focused prompt.
Step 5: Switch to a stronger model for hands
If the model itself is weak on hands, regenerate on a stronger one (as of June 2026):
- FLUX.1 Pro / 1.1 Pro: currently the strongest on hand anatomy in realistic work; FLUX.1 Kontext for editing an existing image.
- Midjourney V8.1: default since June 10, 2026; fix hands via the on-site Editor.
- Google Imagen 4: very few anatomical errors, strong in soft / editorial lighting; Nano Banana (in Gemini) for conversational hand edits.
- Avoid SD 1.5 for any hand-visible work; use SDXL or FLUX.1 [dev] locally instead.
How to confirm the fix
- Count fingers on every visible hand. Five per hand. Verify thumbs are in the right place.
- Check knuckle direction. Fingers should bend toward the palm side, not backward.
- Check for fused fingers. Each finger should be separable by visible shadow lines.
- Zoom to 100% on each hand — never judge from the thumbnail.
- Get a second pair of eyes. Self-blindness is real, especially on your own renders.
- Regenerate 4 candidates at the fixed prompt. All four should pass the count and bend checks.
Long-term prevention
- For any portrait series, design framing to hide hands by default unless they are the story.
- Build a saved negative prompt snippet for hands and paste it into every realistic SDXL portrait.
- Always run a hand-specific inpaint pass on portraits where hands are visible — treat it as a workflow step, not a rescue.
- Standardize on FLUX.1 Pro or Midjourney V8.1 for any hand-critical work.
- Maintain a personal blacklist of poses and props that historically break hands in your favorite model.
Common pitfalls
- Re-rolling 20 seeds hoping for a good hand. After 4 bad rolls, change workflow.
- Trusting the thumbnail. Always inspect hands at 100% zoom.
- Setting ADetailer denoise too high — it reshapes the wrist and forearm, not just the fingers.
- Adding “perfect hands” to the positive prompt expecting magic. It does almost nothing alone.
- Inpainting hands after the final HD upscale in Midjourney, which downscales the whole image back to SD.
FAQ
Q: Why are hands so much harder than faces? A: Faces have a strong symmetric prior — two eyes, one nose, one mouth, in fixed positions. Hands have variable poses, articulations, occlusions, and 14 finger joints each. Training data covers far more frontal faces than well-posed hands.
Q: Will newer models eliminate this problem? A: They are improving fast. As of June 2026, FLUX.1 Pro, Midjourney V8.1, and Imagen 4 are markedly better than 2023-era models, but independent testing still shows a meaningful share of generations with hand errors. Plan to fix hands at the inpaint step for at least the next few model generations.
Q: Does adding “five fingers” to the positive prompt help? A: Marginal at best. Negative prompts (on SD-family models) plus a dedicated inpaint pass do the real work.
Q: Which inpaint tool fixes hands most reliably?
A: In ComfyUI, the MeshGraphormer Hand Refiner, because it reconstructs a 3D hand and uses its depth map to constrain the regeneration. In A1111, ADetailer with hand_yolov8n.pt at denoise ~0.4. In Midjourney, the on-site Editor.
Q: Can I use a hand-pose ControlNet? A: Yes. For SDXL, DWPose-Hand or OpenPose-Hand ControlNets force a specific hand shape, and the MeshGraphormer depth ControlNet repairs an existing bad hand. This is the most reliable approach for hand-critical work but adds setup overhead.
Related
- AI image distorted faces fix
- AI image unnatural pose
- AI image symmetric pose broken
- AI image text garbled fix
- AI image not matching prompt
External references: Midjourney Editor docs, ComfyUI ControlNet Aux (MeshGraphormer node)