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 or the Instant 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.
Stove Top
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.
Simmer for 8 hours for fish broth, 24 hours for chicken, or 48 hours for beef.
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.
Instant Pot
Add the garlic and parsley to the pot if using, place the lid on the pot, and set valve to seal.
Cook at high pressure for 2 hours, followed by either a quick release or natural pressure release. Either is fine.
Let cool slightly, strain, and store in a gallon size glass jar in the fridge for up to 5 days, or freeze for later use.