Is there any way to find out the possible oxidation states for a given element? Something like this: ElementData[1, "OxidationStates"] -> {-1, 1}

Here is a table on wikipedia https://en.wikipedia.org/wiki/List_of_oxidation_states_of_the_elements. Differentiating the more common ones would also be nice. For example ElementData[7, "OxidationStates"] -> {{-3, 3, 5}, {-2, -1, 1, 2, 4}}


1 Answer 1


You almost had the syntax right,

EntityValue[ElementData[7], "KnownOxidationStates"]
(* {-3, -2, -1, 0, 1, 2, 3, 4, 5} *)

These don't seem to match the entries in the Wikipedia entry, and the latter sites its sources at least. For example it seems to say that lithium forms a negative oxidation state, but they drilled into my head in general chemistry (between naps) that alkali metals don't accept electrons

{#, EntityValue[#, "KnownOxidationStates"]} & /@ (ElementData /@ 

enter image description here

The oxidation states that Mathematica uses seem to come from the table on page 28 of Chemistry of the Elements by Greenwood and Earnshaw. This table is reproduced at poor resolution below

image from Greenwood and Shaw

But that's too hard to read, we can go through the arduous task of recreating the figure

 oxstates = 
  EntityValue[#, {"MostCommonOxidationStates", 
      "KnownOxidationStates"}] & /@ (ElementData[]);
 oxstates = 
  If[Head@#[[1]] === Missing, {{}, {}}, {#[[1]], 
       Complement @@ Reverse@#}] & /@ oxstates // 
   DeleteCases[#, 0, Infinity] &;
 oxstates = MapIndexed[
    Function[{oxstate, elnumber},
        ElementData[First@elnumber, "Abbreviation"], {First@elnumber, 
      Text[#, {First@elnumber, #}] & /@ oxstate[[1]],
      Text[#, {First@elnumber, #}] & /@ oxstate[[2]]]
     ], oxstates] /. 
   Text[a_, b_] :> 
    Text[a, b, BaseStyle -> {FontFamily -> "Times", 12}];
    oxstates[[;; 54]], Background -> Gray, AspectRatio -> .25, 
    ImageSize -> 1200],
    oxstates[[55 ;; 108]], Background -> Gray, AspectRatio -> .25, 
    ImageSize -> 1200]},
  Spacings -> 0

Mathematica graphics

Higher resolution here.

Perhaps it's time to update this data. the Wikipedia entry draws from many recent sources, like "B(−5) has been observed in Al3BC, see Melanie Schroeder "Eigenschaften von borreichen Boriden und Scandium-Aluminium-Oxid-Carbiden" (PDF) (in German). p. 139" - which I assume is someone's PhD thesis work. Wolfram, however, tries to get it from one authoritative source, but sometimes an error sneaks in, like that negative oxidation state on lithium. I'll put it on my to-do list to look into updating this information.

  • 1
    $\begingroup$ At least the sodium anion is known to exist: en.wikipedia.org/wiki/Alkalide $\endgroup$
    – shrx
    May 3, 2016 at 13:12
  • $\begingroup$ @shrx To think they lied to me in gen chem!! I think I found the source for Wolfram's data, here, going to try and verify that it matches $\endgroup$
    – Jason B.
    May 3, 2016 at 13:20
  • 1
    $\begingroup$ Of course $\require{mhchem} \cf{Na-}$ exists. I've sat through a few group meetings of my ex-colleagues talking about ultrafast CTTS dynamics of sodide in THF. In general we get lied to in gen chem, and as we progress, they slowly reveal some truths. $\endgroup$
    – RunnyKine
    May 3, 2016 at 14:57
  • 2
    $\begingroup$ @RunnyKine - next thing you're going to tell me that electrons in molecules don't just circle around the nucleus in nice orbitals $\endgroup$
    – Jason B.
    May 3, 2016 at 15:30
  • 1
    $\begingroup$ @JasonB that's correct, they are actually raisins $\endgroup$
    – shrx
    May 3, 2016 at 19:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.