According to the nomenclature recommended by IUPAC, ionic compounds are named according to their composition, not their structure. In the most simple case of a binary ionic compound with no possible ambiguity about the charges and thus the stoichiometry, the common name is written using two words. The name of the cation (the unmodified element name for monatomic cations) comes first, followed by the name of the anion. For example, MgCl is named magnesium chloride, and NaSO is named sodium sulfate (, sulfate, is an example of a polyatomic ion). To obtain the empirical formula from these names, the stoichiometry can be deduced from the charges on the ions, and the requirement of overall charge neutrality.
If there are multiple different cations and/or anions, multiplicative prefixes (di-, tri-, tetra-, ...) are often required to indicate the relative compositions, and cations then anions are listed in alphabetical order. For example, KMgCl is named magnesium potassium trichloride to distinguish it from KMgCl, magnesium dipotassium tetrachloride (note that in both the empirical formula and the written name, the cations appear in alphabetical order, but the order varies between them because the symbol for potassium is K). When one of the ions already has a multiplicative prefix within its name, the alternate multiplicative prefixes (bis-, tris-, tetrakis-, ...) are used. For example, Ba(BrF) is named barium bis(tetrafluoridobromate).
Compounds containing one or more elements which can exist in a variety of charge/oxidation states will have a stoichiometry that depends on which oxidation states are present, to ensure overall neutrality. This can be indicated in the name by specifying either the oxidation state of the elements present, or the charge on the ions. Because of the risk of ambiguity in allocating oxidation states, IUPAC prefers direct indication of the ionic charge numbers. These are written as an arabic integer followed by the sign (... , 2−, 1−, 1+, 2+, ...) in parentheses directly after the name of the cation (without a space separating them). For example, FeSO is named iron(2+) sulfate (with the 2+ charge on the Fe ions balancing the 2− charge on the sulfate ion), whereas Fe(SO) is named iron(3+) sulfate (because the two iron ions in each formula unit each have a charge of 3+, to balance the 2− on each of the three sulfate ions). Stock nomenclature, still in common use, writes the oxidation number in Roman numerals (... , −II, −I, 0, I, II, ...). So the examples given above would be named iron(II) sulfate and iron(III) sulfate respectively. For simple ions the ionic charge and the oxidation number are identical, but for polyatomic ions they often differ. For example, the uranyl(2+) ion, , has uranium in an oxidation state of +6, so would be called a dioxouranium(VI) ion in Stock nomenclature. An even older naming system for metal cations, also still widely used, appended the suffixes -ous and -ic to the Latin root of the name, to give special names for the low and high oxidation states. For example, this scheme uses "ferrous" and "ferric", for iron(II) and iron(III) respectively, so the examples given above were classically named ferrous sulfate and ferric sulfate.
Common salt-forming cations include:
* Ammonium 
* Calcium 
* Iron  and 
* Magnesium 
* Potassium 
* Pyridinium 
* Quaternary ammonium , R being an alkyl group or an aryl group
* Sodium 
* Copper 
Common salt-forming anions (parent acids in parentheses where available) include:
* Acetate  (acetic acid)
* Carbonate  (carbonic acid)
* Chloride  (hydrochloric acid)
* Citrate  (citric acid)
* Cyanide  (hydrocyanic acid)
* Fluoride  (hydrofluoric acid)
* Nitrate  (nitric acid)
* Nitrite  (nitrous acid)
* Oxide  (water)
* Phosphate  (phosphoric acid)
* Sulfate  (sulfuric acid)
Salts with varying number of hydrogen atoms replaced by cations as compared to their parent acid can be referred to as monobasic, dibasic, or tribasic, identifying that one, two, or three hydrogen atoms have been replaced; polybasic salts refer to those with more than one hydrogen atom replaced. Examples include:
* Sodium phosphate monobasic (NaHPO)
* Sodium phosphate dibasic (NaHPO)
* Sodium phosphate tribasic (NaPO)