If you've been stitching for any length of time and use any hand dyed products then this is something you've encountered before. The question is, why does it happen?
The answer? LOTS of reasons. It's all a matter of chemistry.
If you've ever painted or wall-papered your house, you know that you have to buy enough up front, because if you run out and have to get more, it might not match.
Let's start with fabric.
The first thing to remember is that not all fabrics take dye the same way, AND that not all dyes work the same way. Some dyes work best with animal fibers (silk or wool for example). Some dyes work best with plant fibers (cotton or linen) and some work best with synthetics (like rayon). If you remember anything from chemistry in high school - some things don't react with each other and some things do, and in varying degrees. All fibres used in fabric (and floss) have a different molecular structure, so using the same dye for every type of fibre just doesn't work very well.
What happens when you dye is a chemical reaction. The dye molecules form a chemical bond with the fabric molecules. Usually this requires a catalyst - either a chemical added to the dye bath or heat - something which will cause the chemical reaction to happen. Some molecules react more strongly with each other, some react more weakly with each other. Some also form stronger bonds than others - which is why some hand dyed materials are not colourfast (but I'll touch on that more later).
Most fabric dyers work with dyes made for plant based fibers, because most fabric is made with natural plant fibers or a combination of plant and synthetic. These are chemically engineered to react with organic (carbon based) plant molecules. Because of this, linen and cotton fabrics will always give you the most vivid or darkest colours. Why? Because on a fabric like aida, which is usually 100% cotton, the dye reacts with more molecules of fiber than it will in lugana, which is only 52% cotton. Thus, aida will be darker than lugana. The same is true with linen vs. lugana. This is also why an opalescent fabric dyes lighter than a non opalescent - because the opalescent fibers are synthetic and don't react significantly with the dye. In other words your friend's linen will NOT look the same as your lugana. The same can be said for linen vs. aida - linen will usually dye darker because the molecules that make up linen react differently with the dye than the molecules that make up cotton. This is not the dyer's fault, this is simply due to the nature of atoms and molecules.
Some dyers will make an effort to show the same dye colour on various different fabrics, so you can get a better idea of what it will look like when it arrives, some don't. It's always easiest when you know what kind of fabric the picture was taken on. So if you see a picture of a deep dark blue on Belfast linen and you order it in lugana instead, don't be surprised that it's not as deep and dark as the picture was. You also have to consider that not all cameras are created equally. Some are more accurate than others. And not all monitors and computer graphics cards are created equally. So what you see on your monitor might not look even remotely like what the same picture looks like on my monitor or what it looks like on the dyer's monitor. The light the picture is taken in or whether or not a flash was used will also make a huge difference to how the fabric looks.
Makes sense, right?
So now the question... I ordered a piece of blue linen last month and the same colour of blue linen this month and they're not the same. Why is that?
Most fabric dyers dye to order. They don't dye up large quantities to
hold in stock because, let's face it, every piece of fabric that doesn't
sell quickly is tying up raw materials, space, time and money.
Unless you're a massive company that ships out yards and yards of fabric
every day, this is just not feasible.
There are a lot of things that factor into dye lot variations. The temperature of the water, the ambient temperature of the room, relative humidity in the air, the tiniest variation in dye amounts, different batches of dye from the supplier, variations in water additives from the water treatment plant, different batches of fabric from the supplier... heck even weather conditions in the year the flax or cotton was grown will make a difference because they all affect the molecular structure of both the dye and the fabric. Dyers can make every effort to exactly replicate the recipe each time they dye a colour, but unless they are doing their dying in a hermetically sealed, climate controlled chemistry lab, these things are bound to happen, and most of them are beyond the dyer's control.
That is not to say that there aren't dyers out there who aren't sloppy about dye lots. I'm certain there are. Some are more particular than others of course, but at least this helps to explain a little bit about why your piece of fabric doesn't look like your friend's.
So why is it that Zweigart can make the same solid colours over and over again?
The answer is that they can't. These same variations apply as much to a huge corporation like Zweigart as they do to a small dyer on Facebook. The main difference its that Zweigart makes fabrics in such large batches that it might be 2-3 years between dye lots in less popular colours. So the piece you bought last month and the one you bought this month are probably from the same dye lot. Even six months from now this will likely be true unless it's a very popular colour like white or antique white. When they do run a new batch of a colour there will be slight variations from the last one. It's inevitable. Ask a shop owner - they will tell you - sometimes antique white is more white than white, and sometimes flax is darker than raw. It happens on this large scale too, it's just longer time periods between dye lots so it's not as noticeable.
These same things apply to floss, but on an even grander scale, because now you're not only talking about the variations above, which all apply to floss as well, you also have to factor in that dye patterns will inevitably change from batch to batch. Not necessarily the order of the colours in a variegated thread, but the length of the dye patterns. Even a variance of a millimetre in the placement of dye will affect the final result.
Unlike fabric dyers, most floss dyers don't dye on request but keep a running stock because it doesn't make a whole lot of sense to dye one skein at a time. A dye lot of floss can range anywhere from 20 - 1000 skeins or more. Some dye floss already cut into skeins, some dye in larger hanks and separate into skeins later. How often a dye lot changes depends solely on how much floss a dyer sells.
And again the question comes up - then how come DMC colours don't change as much?
Again, they do, but like Zweigart, DMC dyes colours in such large batches that it can take a very long time between dye lots so it's not as noticeable. But if you look at a skein of any colour from five years ago and compare it to a skein bought yesterday, it's pretty likely they're not identical.
Why can't I wash my hand dyed materials?
Most dyers make every effort to make sure their colours are as colourfast as possible, but again, it all comes down to chemical reactions. Most of the time when colours run it's not because they are breaking these bonds, but because there are residual excess dye molecules that didn't bond with the fabric or floss and the washing process frees these molecules. Most dyers wash and rinse fabric and floss after dying but these can still be present and there is NOTHING you can do about this except to keep rinsing until you've rinsed away all of these residual molecules. Adding salt or vinegar to your wash will not prevent unbonded molecules from washing away, nor will they make them bond if the fabric or floss is already saturated - meaning there are no fibre molecules left for the dye to bond with.
As I mentioned earlier, some molecules form stronger bonds, and some form weaker bonds. Generally when dying, a catalyst is required to make the chemical reaction happen. In simpler terms, to make the fibre molecules combine with the dye molecules. Sometimes this is an added chemical, sometimes it's the addition of heat. This is why most dyers will tell you to that if you are going to wash, use very cold water. Hot water is a catalyst and can break these bonds. The stronger the bond is, the more washable the finished product is. The strength of the bond will vary from colour to colour and fibre to fibre - why? Because each of these molecules is different and reacts differently. Occasionally when your colours run, it is the washing process actually breaking these bonds. In these cases, adding salt or vinegar or a chemical like Retayne, CAN help to alleviate the problem, BUT how effective each is depends on what dye and what dye process the original dyer used. For example, vinegar might help with one brand of dye but do absolutely nothing with another brand of dye.
The best way to combat the problem is to not wash anything dyed, though this isn't a reality for some. It's always best to rinse materials well in cold water before using them to avoid disasters later. If you didn't rinse and have to wash, make your water as cold as possible and use a very mild soap. And if a disaster happens and it does run while washing, rinse, rinse, and rinse some more. Don't let the fabric dry, just keep rinsing until the water runs clear.
The point of all of this? While most dyers will allow you to return or exchange pieces of fabric or skeins of floss that aren't right to try to please their customers, much of what we complain about isn't always fixable. Remember from science class - every tiny variation in an experiment will cause a change in the result. When it comes to dying there are no guarantees.