The purpose of this report is to describe the theory and operation of the program PHREEQC. The report includes the definition of the constituent equations, explanation of the transformation of these equations into a numerical method, description of the organization of the computer code that implements the numerical method, description of the input for the program, and presentation of a series of examples of input data sets and model results that demonstrate many of the capabilities of the program.