Four things to get right first
64×64, and the slim model is a different shape
Modern skins are 64×64. The slim model has three-pixel-wide arms, so a classic skin worn on a slim model loses a column of pixels down each arm.
The second layer is not decoration
The outer layer is where hair, hats and jackets live. Leave it fully transparent if you are not using it — a stray opaque pixel there shows as a floating block next to the head.
Capes have their own layout
A cape PNG is 64×32 and only part of it is the cape; the rest is the elytra texture. Fill the whole file even if you only care about one half.
Bedrock skin packs need a manifest
A pack is a folder of PNGs plus skins.json and manifest.json. The names in skins.json must match the file names exactly.
Tools that do the work
Free, in the browser, nothing to install.
Reference, straight from the game files
Read out of the game with Mojang’s own data generator, so it matches the version exactly.
