If you are using raw bones, especially beef bones, it improves flavor to roast them in the oven first. I place them in a roasting pan and roast for 30 minutes at 350°F.
Place the bones in a large stock pot.
Pour cool filtered water and the vinegar over the bones. Let sit for 20-30 minutes in the cool water. The acid helps make the nutrients in the bones more available.
Rough chop and add the onion, carrots, and celery to the pot.
Add any salt, pepper, spices, or herbs, if using.
Bring the broth to a boil. Once it has reached a vigorous boil, reduce to a simmer and simmer until done.
During the first few hours of simmering, you'll need to remove the impurities that float to the surface. A frothy/foamy layer will form and it can be easily scooped off with a big spoon. Throw this part away. I typically check it every 20 minutes for the first 2 hours to remove this. Grass-fed and healthy animals will produce much less of this than conventional animals.
During the last 30 minutes, add the garlic and parsley, if using.
Remove from heat and let cool slightly. Strain using a fine metal strainer to remove all the bits of bone and vegetable. When cool enough, store in a gallon size glass jar in the fridge for up to 5 days, or freeze for later use.