Best dyeing for cotton
Choose the right dye
The longest-lasting and easiest-to-use dyes for hand-dyeing cotton are the cold water fiber reactive dyes, such as the Procion MX type dyes found in most tie-dye kits. Since they're fixed with sodium carbonate (a common household chemical), instead of heat, you don't have to invest in a dyeing pot to apply them. It is rare that there's a good reason for a hand dyer to use anything else for dyeing cotton.
Cotton can also be dyed with direct dyes and all-purpose dyes, though the colors from these less washfast dyes will fade quickly unless a cationic aftertreatment is used to fix them. The main advantage of direct dyes is their cheapness. If you buy direct dyes in bulk from a dye supplier, you can dye a pound of fabric with only about six cents' worth of dye. Unfortunately, all-purpose dyes tend to be among the very most expensive of dyes because of the way they are packaged and marketed, costing about two dollars per pound of fiber dyed; compare this to the cost of Procion dyes from the major dye suppliers, typically forty to sixty cents per pound of fiber, although clothing dyed with Procion dyes will stay bright for years longer.
Vat dyes, including indigo, and naphthol dyes can also be used to dye cotton.
If you use natural dyes on cotton, you will need to use a mordant such as alum, often in combination with tannin, to fix the dyes to the fiber. Most natural dyes will not bond to cotton as easily as they do to wool. Don't try to use a recipe for dyeing wool with natural dyes, as cotton requires different materials and techniques. Look for a good recipe that has been worked out specifically for use with cotton.
Dyes to avoid
Never try to dye cotton with food coloring. Food coloring, such as Kool-aid drink mix, Wilton cake dye, or Easter egg dye, works well to dye wool, but cannot be turned into a good dye for cotton. It will just wash out, leaving at most an ugly stain.
The acid dyes that are used to dye protein fibers such as wool will not work on cotton, except for a very few that are capable of also acting as direct dyes. The disperse dyes used to dye synthetic fibers such as polyester will also not work at all on cotton.
The best way to dye cotton is to use a fiber reactive dye, such as Procion MX dye. See How to Hand Dye for instructions. To dye a single solid color, use a washing machine or bucket, with a large ratio of water to fabric, and constant stirring.
Sources for cotton clothing to dye
Any cotton clothing that is free of surface treatments, such as water resistance, stain resistance, or anti-pilling or permanent press finishes, will dye well with the right sort of dye. (Never buy stain-resistant t-shirts to tie-dye!)
However, keep in mind that commercially-sewn garments are held together with polyester stitching unless specifically labeled otherwise. Polyester will not dye with cotton dyes. Unless you buy special clothing that is sewn with cotton thread, expect the seams to stay their original color after you dye cotton clothing.
One of the best available sources for ready-to-dye white cotton clothing blanks is Dharma Trading Company. Many of their clothing blanks are sewn with cotton thread, which takes the same dyes as the fabric. Gildan Ultra Cotton t-shirts are sewn with cotton thread and are available from many suppliers. For tie-dyeing, t-shirts that are sewn with polyester thread are usually satisfactory, but for dyeing solid colors or low water immersion dyeing, cotton thread is best.