There are several mistakes that can cause dyeing to fail
completely:
If you're dyeing synthetic fibers....
Synthetic fibers can be dyed only with the appropriate type
of dye. If you try to dye polyester or acetate or acrylic
with dyes that are suitable for cotton, rayon, silk, or
wool, the dye will simply not stick. See About
Dyes for more information.
If you used all purpose dye (e.g., Rit®, Tintex®)....
Oftentimes people will misuse all-purpose dye for
tie-dyeing. You cannot use all-purpose dye
with cold or warm water! To dye with all-purpose dye, you
must use extremely HOT water. It is
best to immerse the fabric in a dyebath that has been heated
almost to boiling, and continue to simmer the fabric in the dye for half an hour; even then, the dye will wash out much
faster than more permanent types of dye. See How
can I tie dye with all purpose dye?. For more wash-resistant results on cotton, use a fiber reactive dye, such as Procion MX dye.
If you used good fiber-reactive dye (e.g., Procion MX,
Drimarene K, Cibacron/Sabracron F)....
You must have forgotten to use the fixative, if your colors
washed out even though you were
using fiber reactive dye on a natural fiber. (The usual explanation
is that you accidentally put urea powder in the bucket, instead of
soda ash!)
Dichlorotriazine dyes such as Procion MX react with cellulose only
at high pHs. To raise the pH of your dye reaction to the required
level, you must use a product such as soda ash (sodium carbonate or pH Up)
or trisodium phosphate. You can use this as a presoak, mix it in with
your dye, or add it to your dyeing after adding the dye itself. In any
case, the addition of the high pH starts the reaction.
Other fiber reactive dyes such as the Procion H series may require heat as well
as high pH to encourage the reaction of the dye with the cellulose.
You can also dye protein fibers, such as wool or silk, with a "cold
water" fiber reactive dye such as Procion MX at lower pH's, without
the soda ash, but some heat is required in that case, as
well as an acid to actually lower the pH.