Abstract The computer code LPNORM implements the mathematical method of linear programming to calculate the mineralogical makeup of mineral mixtures, such as rock, sediment, or soil samples, from their bulk geochemical composition and from the mineralogical (or geochemical) composition of the contained minerals. This method simultaneously solves the set of linear equations governing the distribution of oxides into these minerals, subject to an objective function and a set of basic constraints. LPNORM allows the user to specify what minerals will be considered for normative analysis, what their composition is (in terms of mineral formula or geochemical composition), and whether to maximize mineral abundances, minimize slack variables (oxides that can not be accounted for), or do both at once in the objective function. Independent knowledge about the abundance of one or several of the minerals in the sample can be entered as additional equality or inequality constraints. Trial-and-error approach enables the user to “optimize” the composition of one or a few of the contained minerals. Results of comparative tests, highlighting the efficiency, as well as the shortcomings, of LPNORM are presented.