Minecraft skin poses: 18 named poses, joints and animation
Every Minecraft skin pose the API renders, from wave and sit to think and dab, with live images, per-joint angles, sign conventions and animation frames.
All 18 poses
Add pose=<name> to a body or bust render. Every image below is live, rendered from /render/steve/body?size=384&pose=%3Cname%3E. Poses marked anim change with the frame parameter.
To pose a skin by clicking rather than writing the URL, the playground is an interactive skin poser: a list of every pose, a slider per joint, and the finished URL to copy.
Standing pose
pose=defaultStanding still, arms and legs straight.Open the standing pose in the poser
Walking pose
pose=walkanimMid-stride walk cycle; use frame to pick the phase.Open the walking pose in the poser
Running pose
pose=runanimWider, faster stride with a slight forward lean.Open the running pose in the poser
Waving pose
pose=waveanimRight arm raised and waving.Open the waving pose in the poser
Sitting pose
pose=sitSitting down, legs forward, as on a minecart or chair.Open the sitting pose in the poser
Sneaking pose
pose=sneakCrouched, as when sneaking in game.Open the sneaking pose in the poser
Pointing pose
pose=pointRight arm pointing straight ahead.Open the pointing pose in the poser
Dab pose
pose=dabThe dab.Open the dab pose in the poser
Zombie pose
pose=zombieBoth arms straight out in front.Open the zombie pose in the poser
T-pose
pose=tposeArms straight out to the sides.Open the T-pose in the poser
Cheering pose
pose=cheerBoth arms raised, head tipped back.Open the cheering pose in the poser
Thinking pose
pose=thinkHand at the chin, head tilted.Open the thinking pose in the poser
Flexing pose
pose=flexBoth arms flexed upward.Open the flexing pose in the poser
Salute pose
pose=saluteRight hand at the brow.Open the salute pose in the poser
Dancing pose
pose=danceanimOne arm up, one down, hips turned.Open the dancing pose in the poser
Punching pose
pose=punchRight arm thrown forward, torso twisted.Open the punching pose in the poser
Shrug pose
pose=shrugArms out, palms up, head tilted.Open the shrug pose in the poser
Jumping pose
pose=jumpArms back, legs tucked, as at the top of a jump.Open the jumping pose in the poser
Per-joint overrides
A named pose is just a set of six rotations (head, torso, two arms, two legs). Every one of them can be overridden with its own parameter, and an explicit joint parameter always wins over the named pose for that joint only. That lets you start from a pose you like and nudge it.
?pose=wave?pose=wave&headYaw=-20: the wave, with the head turned toward the arm.The joint parameters follow the pattern <part><Axis>:
| Part | Pitch | Yaw | Roll | Short alias |
|---|---|---|---|---|
| head | headPitch | headYaw | headRoll | — |
| torso | bodyPitch | bodyYaw | bodyRoll | — |
| left arm | leftArmPitch | leftArmYaw | leftArmRoll | leftArm = leftArmPitch |
| right arm | rightArmPitch | rightArmYaw | rightArmRoll | rightArm = rightArmPitch |
| left leg | leftLegPitch | leftLegYaw | leftLegRoll | leftLeg = leftLegPitch |
| right leg | rightLegPitch | rightLegYaw | rightLegRoll | rightLeg = rightLegPitch |
The four limb aliases exist because pitch is the rotation you want 90% of the time: leftArm=45 swings the left arm 45° forward and is exactly leftArmPitch=45. The torso pivots at the hips and carries the head and arms with it, so bodyYaw=30 turns the upper body while the legs stay put.
https://skinrender.dev/render/853c80ef3c3749fdaa49938b674adae6/body?headPitch=-10&bodyYaw=10&leftArmPitch=20&rightArmPitch=-120&rightArmRoll=15 Sign conventions
All angles are in degrees (or radians with units=rad) and wrap around, so 370 is 10 and -90 is 270. Zero is the standing pose.
- Pitch rotates about the side-to-side axis. Positive swings a limb forward, away from the body’s front; positive on the head tips it down.
rightArm=90holds the arm straight out in front,rightArm=180points it straight up,rightArm=-90swings it out behind. - Yaw twists about the vertical axis. Positive turns the part toward its own right, which is the viewer’s left when the model faces the camera.
- Roll rotates about the front-to-back axis. For arms and legs positive moves the limb outward, away from the body, which is how
tposeis built. On the head it tilts the head toward a shoulder.
These are model-space rotations: they do not change when you move the camera with yaw and pitch, which describe the view, not the pose.
rightArm=90: pitch, forwardrightArmRoll=90: roll, outwardheadYaw=45: yaw, twistAnimation and frame
walk, run, dance, wave are cycles rather than fixed positions. frame is the phase of that cycle from 0 to 1; frame=0.5 is the opposite half of the stride from frame=0, and frame=1 equals frame=0. On the non-animated poses the parameter has no effect.
frame=0frame=0.25frame=0.5frame=0.75Set fit=false for every frame of an animation. With auto-fit on (the default) each frame is framed to fill the canvas individually, so a swinging arm changes the scale from frame to frame and the model appears to jitter. With it off the camera stays fixed.
Rendering GIF frames
Render ten frames, then assemble them with whatever GIF encoder you already use (ImageMagick, ffmpeg, Pillow, gifenc…). The API does not produce GIFs itself, only the frames.
If a GIF is not specifically what you need, one request can return the whole cycle as an animated PNG: format=apng, no encoder and no frame loop.
for f in 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9; do
curl -s -o "walk-$f.png" \
"https://skinrender.dev/render/069a79f444e94726a5befca90e38aaf5/body?pose=walk&fit=false&size=256&frame=$f"
done
# ImageMagick (frames sorted numerically; 10 fps; keep transparency)
convert -delay 10 -loop 0 -dispose previous $(ls walk-*.png | sort -V) walk.gif import requests
from PIL import Image
from io import BytesIO
base = "https://skinrender.dev/render/069a79f444e94726a5befca90e38aaf5/body"
frames = []
for i in range(10):
r = requests.get(base, params={"pose": "run", "fit": "false", "size": 256, "frame": i / 10})
r.raise_for_status()
frames.append(Image.open(BytesIO(r.content)).convert("RGBA"))
frames[0].save("run.gif", save_all=True, append_images=frames[1:],
duration=80, loop=0, disposal=2, transparency=0) Ten frames is a good default for walk and run; wave and dance look smoother with twenty. The frames are ordinary cacheable PNGs, so re-rendering a GIF later costs almost nothing.
Cape angle
Capes hang at capeAngle=10 degrees from the back by default. Raise it for movement (run looks right around 35–45) or set it to 0 so the cape hangs straight. It only matters when the profile has a cape and cape=true, which is the default.
https://skinrender.dev/render/853c80ef3c3749fdaa49938b674adae6/body?yaw=160&pose=run&frame=0.3&capeAngle=40 See the Minecraft skin poser guide for a longer walkthrough, or open the playground and drag the sliders.