Animal fibres such as wool and silk take up dye much more readily than cellulose (plant) fibres such as cotton and linen. With the exception of woad and the indigos, most natural dyes do not adhere very well to the fibres and need the help of a mordant.
A mordant is a chemical binding agent that adheres well to both the fibres and the dye. The word comes from the Latin mordere, which means to bite.
I use alum powder as my mordant but in the future I would like to try plant mordants. Plant fibres need to be treated with tannin as well. Buy alum mordant here.
Cream of Tartar is used as an assistant when mordanting wool. It improves the consistency of the colour as well as the consistency between batches. Do not use cream of tartar sold for cooking for this purpose but buy a special one from dyeing suppliers (buy Cream of Tartar here).
All fibres need to be well washed before being treated with a mordant. And whatever fibre I am using, I find it very important not to overcrowd the vat. I mordant (or dye) at most 100 grams of fibre in a 10 litre saucepan. I always leave the fibre for at least 48 hours in the mordant bath. After taking the fibre from the bath, I leave it for at least a week before dyeing it. This ageing process is called batching and it improves the fastness of the dye.