Updated:

The basic form

/summon minecraft:armor_stand ~ ~ ~ {ShowArms:1b,NoBasePlate:1b}

This places an armor stand with arms and without the stone base at your feet. Settings go inside the braces.

Common settings (Java)

SettingEffect
ShowArms:1bShows arms.
NoBasePlate:1bRemoves the base plate.
Small:1bSmall size.
Invisible:1bHides the body; gear stays visible.
NoGravity:1bFloats in place.
Invulnerable:1bCannot be broken in Survival.
Marker:1bNo hitbox; good for text and markers.
DisabledSlots:4144959Players cannot take or swap its gear.

Floating text

/summon minecraft:armor_stand ~ ~ ~ {Invisible:1b,NoGravity:1b,Marker:1b,CustomName:"Welcome!",CustomNameVisible:1b}

An invisible, hitbox-free armor stand with a visible name looks like text floating in the air. This name format is for 1.21.5 and later; on 1.21.4 and earlier write CustomName:'"Welcome!"'.

Add gear

# Java 1.21.5 and later
/summon minecraft:armor_stand ~ ~ ~ {ShowArms:1b,equipment:{head:{id:"minecraft:diamond_helmet",count:1},chest:{id:"minecraft:diamond_chestplate",count:1},mainhand:{id:"minecraft:diamond_sword",count:1}}}
# Java 1.20.5–1.21.4
/summon minecraft:armor_stand ~ ~ ~ {ShowArms:1b,ArmorItems:[{},{},{id:"minecraft:diamond_chestplate",count:1},{id:"minecraft:diamond_helmet",count:1}],HandItems:[{id:"minecraft:diamond_sword",count:1},{}]}

In the older format, ArmorItems lists feet, legs, chest, head in that order, with {} for an empty slot.

Poses

/summon minecraft:armor_stand ~ ~ ~ {ShowArms:1b,Pose:{RightArm:[-90f,0f,0f],Head:[-15f,0f,0f]}}

Pose sets angles for Head, Body, LeftArm, RightArm, LeftLeg and RightLeg as X, Y, Z degrees. This one stretches the right arm forward and tilts the head up a little.

Bedrock Edition

Bedrock's /summon cannot take these settings. Summon it with /summon armor_stand, then sneak and interact with it to cycle through poses, and add gear by hand or with /replaceitem.

Common problems

Check your command

The Command Error Doctor checks common syntax mistakes in your browser.