Since I offer e-decorating services, I often refer fabric for my client's home... and unless they want to pay me extra to help them place a to-the-trade-only order (which I can do), I suggest fabrics that they can purchase themselves. Want to know my favorite places to shop online for fabric that anyone can buy (yep, some of it's even designer brand!). Of course you do! (I'm not getting perked or anything by any of these companies, they are just my go-to sources when I'm hunting down fabric for an online client... minus ebay and etsy, which can be good sources too).
Premier fabrics has some of the best prices for decent quality heavy weight fabrics (would be great for drapes, pillows, or light use furniture, but maybe not durable enough for an often-used sofa). They're about $10 a yard and most of the patterns have a variety of colors to choose from. You can order swatches for a small cost, which I always recommend before ordering yardage.
Mood has an interesting mixture of fabrics for all kinds of use. The site is a little tricky to navigate but worth sticking around. Prices are in the $20-50 range. Love finding things that haven't been all over the blogs yet. You can order a swatch for $1 plus shipping.
Good for upholstery weight blends. Some beautiful texture suited for updating a vintage chair. Yardage can be limited (say, only 5 yards) so check with your upholsterer how much you'll need before ordering. A sofa can take 7 yards or more. Prices are low in the $20s and $30s. No swatches. Not for everyone, but a good source to have in your back pocket.
One of my faves for finding designer fabrics (and wallpapers) at discounted prices. Granted, they are still expensive ($70/yard is low, average is more like $120-200) but you're still getting a quality product and you don't have to pay a designer's fee. But of course they don't have everything, but they do have a wide selection. Swatches are $10 but good sized.
One of my favorites for my own home (my new curtain fabric is L&S)! Good prices and a wide variety. Do order swatches though because the pictures only show a small portion and I've had my heart set on things only to hate the swatch. Prices vary from the teens to $50 a yard (with a few more expensive). Swatches are $2.50
They've really stepped it up! They're a great place to find the popular modern prints (like Dwell and Thom Filicia's lines). I recommend them to a lot of clients. One stop shopping for pillows and upholstery fabrics. Prices are more in the $35-100 range... and you can spend a lot more than that, but there are a lot of the mid-range price items. Swatches are free but you pay a small shipping charge for every 5, so make sure you order in multiples of 5 to get your money's worth!
The main downside to Joann's is that you can't order swatches online. BUT they also frequently have 50% off sales for Home Decor fabrics... in fact, I would wait to order until they're on sale. That's how frequent the sales are. If you have a store nearby, you can get swatches there... otherwise you can always order a yard and cross your fingers! Their own line is seasonal though, so be sure you have enough before it is discontinued. Good outdoor fabrics too. The site's search function doesn't actually work very well, so it's best to sift through the pages by hand.
Those are my top picks for best places to buy fabric online (if you aren't a designer). Happy shopping!