PHREEQC version 3 is a computer program written in the C and C++ programming languages that is designed to perform a wide variety of aqueous geochemical calculations. PHREEQC implements several types of aqueous models: two ion-association aqueous models (the Lawrence Livermore National Laboratory model and WATEQ4F), a Pitzer specific-ion-interaction aqueous model, and the SIT (Specific ion Interaction Theory) aqueous model. Using any of these aqueous models, PHREEQC has capabilities for (1) speciation and saturation-index calculations; (2) batch-reaction and one-dimensional (1D) transport calculations with reversible and irreversible reactions, which include aqueous, mineral, gas, solid-solution, surface-complexation, and ion-exchange equilibria, and specified mole transfers of reactants, kinetically controlled reactions, mixing of solutions, and pressure and temperature changes; and (3) inverse modeling, which finds sets of mineral and gas mole transfers that account for differences in composition between waters within specified compositional uncertainty limits. Many new modeling features were added to PHREEQC version 3 relative to version 2. The Pitzer aqueous model (pitzer.dat database, with keyword PITZER) can be used for high-salinity waters that are beyond the range of application for the Debye-Hückel theory. The Peng-Robinson equation of state has been implemented for calculating the solubility of gases at high pressure. Specific volumes of aqueous species are calculated as a function of the dielectric properties of water and the ionic strength of the solution, which allows calculation of pressure effects on chemical reactions and the density of a solution. The specific conductance and the density of a solution are calculated and printed in the output file. In addition to Runge-Kutta integration, a stiff ordinary differential equation solver (CVODE) has been included for kinetic calculations with multiple rates that occur at widely different time scales. Surface complexation can be calculated with the CD-MUSIC (Charge Distribution MUltiSIte Complexation) triple-layer model in addition to the diffuse-layer model. The composition of the electrical double layer of a surface can be estimated by using the Donnan approach, which is more robust and faster than the alternative Borkovec-Westall integration. Multicomponent diffusion, diffusion in the electrostatic double layer on a surface, and transport of colloids with simultaneous surface complexation have been added to the transport module. A series of keyword data blocks has been added for isotope calculations—ISOTOPES, CALCULATE_VALUES, ISOTOPE_ALPHAS, ISOTOPE_RATIOS, and NAMED_EXPRESSIONS. Solution isotopic data can be input in conventional units (for example, permil, percent modern carbon, or tritium units) and the numbers are converted to moles of isotope by PHREEQC. The isotopes are treated as individual components (they must be defined as individual master species) so that each isotope has its own set of aqueous species, gases, and solids. The isotope-related keywords allow calculating equilibrium fractionation of isotopes among the species and phases of a system. The calculated isotopic compositions are printed in easily readable conventional units. New keywords and options facilitate the setup of input files and the interpretation of the results. Keyword data blocks can be copied (keyword COPY) and deleted (keyword DELETE). Keyword data items can be altered by using the keyword data blocks with the _MODIFY extension and a simulation can be run with all reactants of a given index number (keyword RUN_CELLS). The definition of the complete chemical state of all reactants of PHREEQC can be saved in a file in a raw data format ( DUMP and _RAW keywords). The file can be read as part of another input file with the INCLUDE$ keyword. These keywords facilitate the use of IPhreeqc, which is a module implementing all PHREEQC version 3 capabilities; the module is designed to be used in other programs that need to implement geochemical calculations; for example, transport codes. Charting capabilities have been added to some versions of PHREEQC. Charting capabilities have been added to Windows distributions of PHREEQC version 3. (Charting on Linux requires installation of Wine.) The keyword data block USER_GRAPH allows selection of data for plotting and manipulation of chart appearance. Almost any results from geochemical simulations (for example, concentrations, activities, or saturation indices) can be retrieved by using Basic language functions and specified as data for plotting in USER_GRAPH. Results of transport simulations can be plotted against distance or time. Data can be added to a chart from tab-separated-values files. All input for PHREEQC version 3 is defined in keyword data blocks, each of which may have a series of identifiers for specific types of data. This report provides a complete description of each keyword data block and its associated identifiers. Input files for 22 examples that demonstrate most of the capabilities of PHREEQC version 3 are described and the results of the example simulations are presented and discussed.