This site contains detailed instructions to make your own concrete stain with or without acid. If you can follow a recipe, mixing your own concrete stain is easy. A do-it-yourself type person can also modify these recipes to formulate custom colors.
The colors in concrete stain are created by mineral salts dissolved in water. Most minerals do not dissolve in water, and many that do are no good as stain because they have a plain white color.
Salts of the elements Iron, Copper, and Manganese are used in the formulas below because of their color, solubility in water, and low cost. The dissolved minerals are carried along with the water as it soaks into the porous concrete. A chemical reaction may occur between the minerals in the stain, the oxygen in the air, and/or the cement in the concrete. The reaction transforms the mineral from a water soluble chloride or sulfate to an insoluble oxide, hydroxide, or carbonate. The insoluble mineral is now left trapped, embedded in the concrete.
The more iron absorbed by the concrete, the more intense the rusty color of iron stains.
Recipes using Ferrous Sulfate and Iron Chloride stain concrete
produce similar results.
Compare the two sides of the image below: the right side has twice as much iron as the left.
Copper salts are almost as widely available as Iron salts.
Formulas with Copper Sulfate and cupric chloride stain concrete
blue or a blue-green color.
alters the color of copper in concrete stains.
The two sides of the image below contain the same amount of copper.
Concrete stained with Potassium or Sodium Dichromate
and copper displays different colors because these chemicals change the oxidation state of copper.
The stain recipe used on right side contains 3 times the amount of Potassium Dichromate.
As with the other stains, the more Manganese absorbed by the concrete, the darker the stain.
Staining the floor with Manganese was not as straightforward as with Iron.
Compare the two sides of the image below: the right side has SIX times as much manganese as the left.
Acid does not seem to be a critically important part of a concrete stain formula. When the acid reacts with the concrete, the resulting compounds are a white solid and carbon dioxide gas. Some people claim that the purpose of the acid is to "open pores" in the concrete. Whatever. If the concrete is not already porous, its because it was treated with sealant.
When developing your own formula, you may find that metallic chlorides are more expensive to purchase than a jug of hydrochloric acid and a bag of metallic carbonate. You can neutralize the carbonate with the acid to make a chloride solution.
Before beginning your staining project, be certain that the concrete is totally clean and free of adhesive, drywall mud, paint, sealer, and grease.
Get down on your hands and knees and study the surface of the concrete. Is the surface plain flat cement or do you see tiny rocks? This is important because, chances are, the rocks will not absorb any stain. The more rocks on the surface, the worse it looks.
The small concrete porch below was already 50 years old when it was stained with a copper + chromium solution. Most of the surface was smooth cement except the high-traffic area along the right-center of the photo where the surface was worn down to the aggregate. The smooth portion accepted stain while the rough area did not.