Stack any of the 42 banner patterns in 16 dye colors, see it on a shield in 3D, then copy the /give command.
A banner starts as one dyed base color. Each pattern you add at a loom is a stencil tinted with one dye and laid on top of everything before it, so order matters: a Bordure added last frames the whole design, while the same Bordure added first gets painted over. A shield takes the finished banner at a crafting table — shield plus banner — and copies the design onto its face, keeping the banner's base color.
This editor stacks the layers the same way the game does, straight onto the vanilla shield texture. The list reads top to bottom in the order the layers are applied; use the arrows to move one, the dot to hide it without losing it, and Share to copy a link that rebuilds the exact design.
Most patterns only need dye in the loom. These ten also need their banner pattern item in the loom's pattern slot — it isn't used up, so one copy covers every banner you make.
Java 1.20.5 moved banner data into item components (banner_patterns, plus base_color for shields); 1.20.4 and older use the BlockEntityTag NBT with short pattern codes and numeric dye ids. Flow and Guster only exist from 1.21, so they are left out of the NBT version. Bedrock's /give has no way to attach patterns — build the design in a loom there.
Designing armor to match? Preview armor trims in 3D →