Oxidation Number Calculator
Find the oxidation number of every atom in a compound or ion, the element that is oxidised or reduced in a reaction, the metal in a coordination compound, or each carbon in an organic molecule. Every answer shows the rule used at each step, the check that the numbers add up to the charge, a number-line figure and four charts.
⚡ 0. Quick Answer
To calculate an oxidation number, give the atoms with fixed values their numbers (group 1 metals +1, oxygen −2, hydrogen +1, fluorine −1), then choose the unknown so that all the oxidation numbers add up to the charge on the compound or ion. For chromium in potassium dichromate, K2Cr2O7:
Rule of thumb: the sum of the oxidation numbers equals the overall charge: 0 for a neutral compound, −2 for Cr2O72−. An oxidation number that goes up in a reaction means oxidation; one that goes down means reduction.
🔑 Key Takeaways
- An oxidation number is the charge an atom would carry if every bond were fully ionic, with the electrons given to the more electronegative atom.
- Free elements are 0; a monatomic ion equals its charge; F is −1; group 1 is +1 and group 2 is +2; H is usually +1 and O usually −2.
- The oxidation numbers add up to the charge, so one unknown can always be solved: Cr is +6 in K2Cr2O7, Mn is +7 in KMnO4 and S is +6 in H2SO4.
- Exceptions are found by the same sum: O is −1 in H2O2 and +2 in OF2; H is −1 in NaH. A fraction such as Fe +8/3 in Fe3O4 is an average.
- In a reaction, the element whose oxidation number rises is oxidised and the one whose number falls is reduced: in MnO4− + 5Fe2+, Mn goes +7 → +2 and Fe goes +2 → +3, a transfer of 5 electrons.
📚 1. What Is an Oxidation Number, and How Does an Oxidation Number Calculator Work?
An oxidation number (or oxidation state) is a bookkeeping charge. Imagine every bond in a compound broken so that the more electronegative atom takes all the shared electrons: the charge left on each atom is its oxidation number. IUPAC defines it this way in its 2016 recommendation (Karen, McArdle & Takats, 2016). In water, oxygen takes both bonding pairs, so O is −2 and each H is +1.
An oxidation number calculator applies the standard rules in the order textbooks teach them, then uses one fact to finish the job: the oxidation numbers of all the atoms add up to the overall charge. Whatever is left unknown is solved from that sum. The calculator also tracks oxidation numbers across a reaction to find what is oxidised and reduced, works out the metal in a coordination compound from its ligands, and counts bonds to give each carbon in an organic molecule its own oxidation number.
A worked one-liner: in KMnO4, K is +1 and each O is −2, so +1 + x + 4(−2) = 0 and Mn is +7.
Who uses it: oxidation numbers are taught in NCERT Class 11 (“Redox Reactions”) and asked every year in JEE and NEET; GCSE, A level, AP Chemistry and IB courses use them to balance redox equations and name compounds such as iron(III) chloride. Analysts use them to work out redox titrations, and electrochemists to count the electrons in a cell reaction.
| Species | Element | Equation | Oxidation number |
|---|---|---|---|
| K2Cr2O7 | Cr | 2(+1) + 2x + 7(−2) = 0 | +6 |
| KMnO4 | Mn | +1 + x + 4(−2) = 0 | +7 |
| H2SO4 | S | 2(+1) + x + 4(−2) = 0 | +6 |
| CO2 | C | x + 2(−2) = 0 | +4 |
| Cr2O72− | Cr | 2x + 7(−2) = −2 | +6 |
What this free oxidation number calculator solves
One tool covers every oxidation number calculation in a typical course. It works as an oxidation number calculator with steps for compounds and ions, a change in oxidation number calculator for redox reactions, an oxidation number calculator for coordination compounds, and an oxidation number calculator for organic compounds that gives each carbon separately. Press Try it to load an example into the calculator, then press the button to see the full working.
| Problem | What it works out | Example | |
|---|---|---|---|
| Oxidation number of an element in a compound | Every element, the rule used, and the sum check | K2Cr2O7 → Cr +6 | |
| Polyatomic ions | The sum equals the ion’s charge | Cr2O72− → Cr +6 | |
| Exceptions | Peroxides, hydrides, OF2 | H2O2 → O −1 | |
| Fractional oxidation numbers | Exact fractions, explained as averages | Fe3O4 → Fe +8/3 | |
| Change in oxidation number | Oxidised, reduced, agents, electrons transferred | MnO4− + Fe2+ → 5 e− | |
| Disproportionation | One element both oxidised and reduced | Cl2 → Cl− + ClO3− | |
| Coordination compounds | Metal oxidation number, coordination number, d-electron count | K4[Fe(CN)6] → Fe +2 | |
| Organic compounds | Each carbon by counting bonds | CH3CH2OH → C −3, C −1 |
Free, with no sign-up. Everything runs in your browser: nothing you type is sent to a server or stored.
En español: ¿cómo se calcula el número de oxidación? Asigna los valores fijos (O −2, H +1, metales del grupo 1 +1) y despeja la incógnita para que la suma sea igual a la carga: en K2Cr2O7, 2(+1) + 2x + 7(−2) = 0, así que el Cr es +6.
How accurate is this oxidation number calculator?
The rules follow the IUPAC definition and the priority order used in textbooks: fixed values first, then the sum. Results are exact fractions, never rounded decimals, so Fe3O4 gives +8/3 rather than 2.67. Every answer is checked before it gets the Verified badge: the atoms × oxidation numbers must add up to the charge, and in a balanced redox equation the electrons lost must equal the electrons gained. The calculator also warns when a value is above an element’s group maximum (a sign of peroxide bonds, as in CrO5) or when it had to assume a value. The R and Python scripts in Sections 10 and 11 return the same +6 for chromium in K2Cr2O7.
Studies of how students learn redox find that oxidation numbers are easy to calculate but often confused with ionic charges and with the gain or loss of real electrons (Garnett & Treagust, 1992; Österlund, Berg & Ekborg, 2010). That is why the results label each value with the rule it came from and show where it sits on the number line.
🧮 2. Enter Your Formula in the Oxidation Number Calculator
1. What do you want to find?
2. Compound or ion
Write ion charges with ^, for example MnO4^- or SO4^2-, or type the charge in its own box.
⌨ Quick picks and symbol keys tap to insert into the active box
Press Enter in any box to calculate. Nothing is calculated until you press the button.
📊 3. Your Results: Oxidation Number Calculator with Steps
🧠 4. What Does Your Oxidation Number Mean?
4.1 Positive, negative and zero
A positive oxidation number means the atom has, on paper, given electrons to more electronegative partners; a negative one means it has taken them. Zero means neither, as in every free element (O2, I2, S8, Fe). The size tells you how many: Mn at +7 in KMnO4 has given away all seven of its valence electrons, which is why permanganate is such a strong oxidising agent.
4.2 The highest and lowest possible values
For main-group elements the highest oxidation number is the number of valence electrons (the group number, or group − 10 for groups 13 to 18), and the lowest is that number minus 8. Sulfur ranges from −2 (H2S) to +6 (H2SO4); nitrogen from −3 (NH3) to +5 (HNO3). Transition metals reach their group number at most: Cr +6, Mn +7. A species at its maximum can only be reduced; at its minimum it can only be oxidised.
| Element | Lowest | Example | Highest | Example |
|---|---|---|---|---|
| Carbon | −4 | CH4 | +4 | CO2 |
| Nitrogen | −3 | NH3 | +5 | HNO3 |
| Sulfur | −2 | H2S | +6 | H2SO4 |
| Chlorine | −1 | NaCl | +7 | HClO4 |
| Chromium | 0 | Cr metal | +6 | K2Cr2O7 |
| Manganese | 0 | Mn metal | +7 | KMnO4 |
4.3 Fractional oxidation numbers are averages
An oxidation number such as +8/3 for iron in Fe3O4 does not mean any atom carries a fraction of an electron. Magnetite contains one Fe2+ and two Fe3+: (2 + 3 + 3) ÷ 3 = 8/3. The same happens in S4O62− (average +5/2) and in KO2 (O at −1/2). The algebraic method always gives the average; the structure gives each atom.
4.4 A value above the maximum means a peroxide
If the sum puts an element above its group number, the rule “O is −2” has failed somewhere. CrO5 gives Cr +10, which is impossible: the molecule has two O–O peroxide groups, so four oxygens are −1 and chromium is really +6. Peroxodisulfate (S2O82−) gives +7 for S for the same reason; the true value is +6. The calculator flags these cases.
4.5 Oxidation number, charge, valency and formal charge
These four are easy to mix up (Parkin, 2006). The charge is real and belongs to a whole ion. The oxidation number is a bookkeeping charge per atom with every bond made ionic. Valency is the number of bonds an atom forms, with no sign. Formal charge splits each bond equally instead of giving it to the more electronegative atom. In carbon monoxide, C has oxidation number +2 but formal charge −1, and the molecule has no charge at all.
4.6 Oxidation and reduction: OIL RIG
Oxidation is loss of electrons, so the oxidation number goes up; reduction is gain, so it goes down. The oxidising agent contains the element that is reduced, and the reducing agent contains the element that is oxidised. In a balanced equation the electrons lost equal the electrons gained: in MnO4− + 5Fe2+ + 8H+ → Mn2+ + 5Fe3+ + 4H2O, one Mn gains 5 and five Fe lose 1 each.
4.7 Coordination compounds and d-electron counts
In a complex the metal’s oxidation number is the charge of the complex ion minus the ligand charges. Neutral ligands (NH3, H2O, CO, en) add nothing; anionic ones (Cl−, CN−, C2O42−) add their charge. Once you have it, the d-electron count is group number minus oxidation number: Fe(II) in K4[Fe(CN)6] is d6, and Co(III) in [Co(NH3)6]3+ is also d6.
4.8 Organic carbon: the oxidation ladder
Each bond from carbon to a more electronegative atom (O, N, halogen) counts +1, each bond to H counts −1, and C–C bonds count 0. That gives the ladder used in organic chemistry: CH4 (−4), CH3OH (−2), HCHO (0), HCOOH (+2), CO2 (+4). Turning ethanol into acetic acid moves the CH2OH carbon from −1 to +3, an oxidation (Menzek, 2002).
4.9 A field note on where these problems go wrong
In marking oxidation number work, the same slips appear again and again: forgetting to multiply by the number of atoms (writing 2 + x − 2 = 0 for K2Cr2O7), setting the sum to 0 for an ion, giving oxygen −2 in a peroxide, and treating the oxidation number as a real ionic charge (Cr6+ does not exist in dichromate). Concept-inventory research finds these errors persist into university (Brandriet & Bretz, 2014). The calculator shows the multiplication in every step and checks the sum against the charge.
✍ 5. How to Write an Oxidation Number Answer
📌 Conventions examiners look for
- Write the equation with every atom counted: 2(+1) + 2x + 7(−2) = 0.
- Set the sum equal to the charge of the ion, not 0, for an ion.
- Always give the sign: +6, not 6.
📌 Conventions
- Oxidation numbers carry the sign before the number (+6); ionic charges put it after (6+).
- In names, use Roman numerals: chromium(VI), iron(III).
📌 Conventions
- For a titration, state the change: manganese is reduced from +7 to +2.
- Above the symbol, an oxidation number may be written as a Roman numeral: FeIII.
📌 Conventions
- Accept fractions such as +8/3 as averages, or the split values (+2 and +3) for Fe3O4.
- Use the Batch tab to make a whole worksheet answer key.
📌 Conventions
- Write subscripts and charges as plain text: Cr2O7^2-, Cr +6.
∑ 6. Rules and Formulas for Calculating Oxidation Numbers
The rules for calculating oxidation numbers are applied in order: a rule higher on the list wins when two disagree. The final rule, that the oxidation numbers add up to the charge, turns the problem into one equation with one unknown.
🔀 7. How to Calculate the Oxidation Number: Flowchart, Step by Step
This flowchart shows how to calculate the oxidation number of an element in a compound, on the same problem used in the Excel, R, Python and by-hand sections: calculate the oxidation number of Cr in K2Cr2O7.
Check any box yourself: the Excel sheet in Section 9, the R script in Section 10 and the Python script in Section 11 all return +6 for this problem.
📝 8. How to Use This Oxidation Number Calculator
- Choose what you want to find. Pick a compound or ion, a change in a reaction, the metal in a complex, or each carbon in an organic molecule.
- Type the formula or name. Write K2Cr2O7 or potassium dichromate; the preview shows the atoms and the charge as you type.
- Add the charge for an ion. Write it in the formula as Cr2O7^2- or in the charge box as 2-.
- Pick the element to find. Choose the underlined atom from the list, or leave it on every element.
- For a reaction, type the equation. Use -> for the arrow and choose acidic or basic solution for ionic redox equations.
- For a complex, use square brackets. Write K4[Fe(CN)6] or [Co(NH3)6]Cl3 with ligands in round brackets.
- For an organic compound, write it condensed. Write CH3CH2OH, with = and # for double and triple bonds.
- Press the button. Nothing is calculated before you press it, and changing any input clears the old answer.
- Read the rule for each element and the check. The Verified badge means the oxidation numbers add up to the charge.
- Copy, share or batch. Copy the answer, share a link, download a report, or solve a whole worksheet on the Batch tab.
📈 9. How to Calculate Oxidation Numbers in Excel
Excel turns the sum rule into one small table: one row per element with its number of atoms and its known oxidation number, a column for atoms × oxidation number, and one cell that solves for the unknown. The sheet below uses the headline problem, so it must return +6 for chromium in K2Cr2O7, the same as the oxidation number calculator above.
=(B6-SUM(D2:D4))/B3 gives the oxidation number of the unknown element.9.1 The functions you need
| You want | Excel formula | Note |
|---|---|---|
| Contribution of an element | =B2*C2 | Atoms × oxidation number; leave the unknown’s C cell empty |
| Sum of the known contributions | =SUM(D2:D4) | Empty cells count as 0 |
| The unknown oxidation number | =(B6-SUM(D2:D4))/B3 | B6 = charge, B3 = atoms of the unknown |
| Same thing in one cell | =(B6-SUMPRODUCT(B2:B4,C2:C4))/B3 | No helper column |
| As a fraction | Format Cells → Fraction | Shows 2.6667 as 8/3 |
| With a sign | =TEXT(C3,"+0;-0;0") | Shows +6 instead of 6 |
| Change in oxidation number | =C_after-C_before | Positive: oxidised; negative: reduced |
9.2 Step by step
1 Atoms and the known oxidation numbers
Type each element in A, its number of atoms in B and its known oxidation number in C. Leave the unknown (Cr) blank. In D2 multiply and fill down.
Known contributions: K +2, O −14; Cr is still blank.
2 Solve for the unknown
Put the charge in B6 and solve for Cr in C3.
=(B6-SUM(D2:D4))/B3
(0 − (−12)) ÷ 2 = +6, so chromium is +6.
3 Check: the contributions add up to the charge
Once C3 is filled, D3 updates and the total in D5 must equal the charge.
=SUM(D2:D4) =IF(D5=B6,"Verified","Check")
+2 + 12 − 14 = 0: verified.
4 A whole worksheet of compounds
For a list, keep the charge, the known total and the number of unknown atoms in columns, and solve in one formula per row.
Five oxidation number calculation examples solved with the same formula.
9.3 Awkward cases
- Peroxides and hydrides. Type the exception in column C (O = −1 in H2O2, H = −1 in NaH) before solving.
- Ammonium salts. Solve each ion on its own row block: NH4+ with charge +1 and NO3− with charge −1.
- Two unknowns. Excel needs one unknown per equation. Split the compound into its ions (Fe2(SO4)3 into Fe3+ and SO42−) or use the calculator.
9.4 Why your Excel answer might differ
| Situation | What happens | Fix |
|---|---|---|
| Cr comes out +7 for dichromate ion | Charge left at 0 | Put −2 in B6 |
| Answer twice too big | Divided by 1 instead of the number of atoms | Divide by B3 |
| 2.666666667 | An average oxidation number | Format as a fraction: 8/3 |
| O comes out positive | Fluorine present (OF2) | That is correct: O is +2 |
| Tool | Unknown oxidation number |
|---|---|
| Excel / Google Sheets | =(B6-SUM(D2:D4))/B3 |
| R | (z - known) / counts[x] |
| Python | (z - known) / counts[x] with Fraction |
| Casio fx-991EX | ( 0 − ( 2 × 1 + 7 × (−2) ) ) ÷ 2 = |
9.5 Charting in Excel
- Select the elements and their contributions (A2:A4, D2:D4).
- Insert → Charts → Clustered Column. Positive bars (electrons given away) and negative bars (electrons taken) balance at zero, as in Chart 2 above.
9.6 Excel errors you will probably hit
| Excel shows | Why | Fix |
|---|---|---|
#DIV/0! | The atom count of the unknown is empty | Fill B3 |
#VALUE! | A sign typed as text, such as “+6” with a space | Numbers only: 6 or -2 |
| Circular reference | D3 uses C3 and C3 uses SUM(D2:D4) | Use SUMPRODUCT over the known rows only, or enable iterative calculation |
📈 10. How to Calculate Oxidation Numbers in R
This base R script reads a formula (with brackets and an ion charge), applies the fixed rules in priority order, solves the remaining element from the sum rule, prints each element with the rule it used, checks nine textbook compounds and saves one 300 dpi chart. For the headline problem it prints Cr = +6, matching the oxidation number calculator on this page.
Rscript oxidation_number.R. Change only the formula and find lines.10.1 The complete script
R, base only, saves oxidation_number.png
# ============================================================
# Oxidation number calculator in R (base R only):
# fixed rules first, then solve the unknown from "sum = charge"
# StatsUnlock - https://statsunlock.com/oxidation-number-calculator/
# ============================================================
# ---- 1. Your compound or ion ----------------------------------------
formula <- "K2Cr2O7" # write ions as "Cr2O7^2-" or "MnO4^-"
find <- "Cr" # the element you want (the underlined atom)
group1 <- c("Li", "Na", "K", "Rb", "Cs")
group2 <- c("Be", "Mg", "Ca", "Sr", "Ba")
fixed <- c(Al = 3, Zn = 2, Ag = 1)
metals <- c(group1, group2, "Al", "B") # partners that make H a hydride (-1)
parse_formula <- function(f) {
charge <- 0
m <- regmatches(f, regexec("\\^([0-9]*)([+-])$", f))[[1]]
if (length(m)) {
charge <- ifelse(m[2] == "", 1, as.numeric(m[2])) * ifelse(m[3] == "+", 1, -1)
f <- sub("\\^[0-9]*[+-]$", "", f)
}
# expand brackets such as Ca(NO3)2 -> CaN2O6 counts
while (grepl("\\(", f)) {
m2 <- regmatches(f, regexec("\\(([^()]*)\\)([0-9]*)", f))[[1]] # innermost bracket and its multiplier
k <- ifelse(m2[3] == "", 1, as.numeric(m2[3]))
parts <- regmatches(m2[2], gregexpr("[A-Z][a-z]?[0-9]*", m2[2]))[[1]]
rep <- paste0(sapply(parts, function(p) {
el <- sub("[0-9]+$", "", p); n <- sub("^[A-Z][a-z]?", "", p)
paste0(el, ifelse(n == "", 1, as.numeric(n)) * k)
}), collapse = "")
f <- sub(m2[1], rep, f, fixed = TRUE)
}
parts <- regmatches(f, gregexpr("[A-Z][a-z]?[0-9]*", f))[[1]]
counts <- setNames(numeric(0), character(0))
for (p in parts) {
el <- sub("[0-9]+$", "", p); n <- sub("^[A-Z][a-z]?", "", p)
n <- ifelse(n == "", 1, as.numeric(n))
if (el %in% names(counts)) counts[el] <- counts[el] + n else counts[el] <- n
}
list(counts = counts, charge = charge)
}
oxidation_numbers <- function(f) {
p <- parse_formula(f); counts <- p$counts; z <- p$charge
els <- names(counts)
ox <- setNames(rep(NA_real_, length(els)), els)
rule <- setNames(rep("", length(els)), els)
if (length(els) == 1) {
ox[1] <- z / counts[1]; rule[1] <- "element or simple ion"
return(list(counts = counts, z = z, ox = ox, rule = rule))
}
n_unknown <- function() sum(is.na(ox))
for (e in els) {
if (e == "F") { ox[e] <- -1; rule[e] <- "F is always -1" }
else if (e %in% group1) { ox[e] <- 1; rule[e] <- "group 1 is +1" }
else if (e %in% group2) { ox[e] <- 2; rule[e] <- "group 2 is +2" }
else if (e %in% names(fixed)) { ox[e] <- fixed[[e]]; rule[e] <- "fixed value" }
}
if ("H" %in% els && is.na(ox["H"]) && n_unknown() > 1) {
hydride <- all(setdiff(els, "H") %in% metals)
ox["H"] <- ifelse(hydride, -1, 1); rule["H"] <- ifelse(hydride, "H is -1 in a metal hydride", "H is +1")
}
if ("O" %in% els && is.na(ox["O"]) && n_unknown() > 1) { ox["O"] <- -2; rule["O"] <- "O is -2" }
for (e in c("Cl", "Br", "I")) {
if (e %in% els && is.na(ox[e]) && n_unknown() > 1 && !("O" %in% els) && !("F" %in% els)) { ox[e] <- -1; rule[e] <- "halogen is -1" }
}
left <- els[is.na(ox)]
if (length(left) != 1) stop("More than one unknown: ", paste(left, collapse = ", "))
known <- sum(counts[!is.na(ox)] * ox[!is.na(ox)])
ox[left] <- (z - known) / counts[left]; rule[left] <- "solved from sum = charge"
list(counts = counts, z = z, ox = ox, rule = rule)
}
frac_txt <- function(v) { # 2.666667 -> "8/3" without extra packages
for (d in 1:12) if (abs(v * d - round(v * d)) < 1e-9) return(if (d == 1) as.character(round(v)) else paste0(round(v * d), "/", d))
format(v, digits = 6)
}
sgn <- function(v) ifelse(v > 0, paste0("+", frac_txt(v)), frac_txt(v))
# ---- 2. Solve and show the working ------------------------------------
r <- oxidation_numbers(formula)
cat("Formula ", formula, ", charge ", r$z, "\n", sep = "")
for (e in names(r$counts)) {
cat(sprintf(" %-2s atoms %d ON %5s contribution %5s (%s)\n", e, r$counts[[e]],
sgn(r$ox[[e]]), sgn(r$counts[[e]] * r$ox[[e]]), r$rule[[e]]))
}
total <- sum(r$counts * r$ox)
cat(" Sum of contributions =", total, ifelse(abs(total - r$z) < 1e-9, "= charge", "!= charge"), "\n")
cat("Oxidation number of", find, "in", formula, "=", sgn(r$ox[[find]]), "\n")
# ---- 3. Checks ----------------------------------------------------------
stopifnot(abs(total - r$z) < 1e-9)
tests <- list(c("K2Cr2O7", "Cr", 6), c("KMnO4", "Mn", 7), c("H2SO4", "S", 6),
c("Cr2O7^2-", "Cr", 6), c("Na2S2O3", "S", 2), c("Na5P3O10", "P", 5),
c("H2O2", "O", -1), c("NaH", "H", -1), c("OF2", "O", 2))
for (t in tests) stopifnot(abs(oxidation_numbers(t[1])$ox[[t[2]]] - as.numeric(t[3])) < 1e-9)
stopifnot(abs(oxidation_numbers("Fe3O4")$ox[["Fe"]] - 8 / 3) < 1e-9)
cat("Verdict: Verified (all test compounds agree)\n")
# ---- 4. Figure: each element's contribution to the charge ---------------
vals <- r$counts * r$ox
png("oxidation_number.png", width = 2100, height = 1350, res = 300)
par(mar = c(4, 4.5, 3, 1))
b <- barplot(vals, names.arg = names(vals), col = ifelse(vals > 0, "#ea580c", "#2563eb"),
ylab = "Atoms x oxidation number", main = paste0(formula, ": contributions add up to ", r$z),
ylim = range(c(0, vals)) * 1.25)
abline(h = 0, col = "#334155")
text(b, vals, labels = paste0(r$counts, " x (", sapply(r$ox, sgn), ")"), pos = ifelse(vals >= 0, 3, 1), cex = 0.8)
invisible(dev.off())
cat("Saved oxidation_number.png\n")Output: Cr atoms 2 ON +6 contribution +12 (solved from sum = charge), Oxidation number of Cr in K2Cr2O7 = +6, Verdict: Verified. With formula <- "Fe3O4" it prints +8/3.
10.2 R traps
- Escape the caret in regular expressions:
"\\^", or the charge is not read. - Named vectors keep the element order of the formula;
counts[el]on a missing name givesNA, so test with%in%first. - The script stops with a message when two elements have no rule (for example Fe2(SO4)3); split the salt into its ions.
10.3 What each part does
| Part | What it does |
|---|---|
parse_formula() | Counts atoms, expands brackets and reads the charge |
for (e in els) ... | Fixed values: F, group 1, group 2, Al, Zn, Ag |
hydride <- ... | H is −1 only when every partner is a metal or boron |
(z - known) / counts[left] | The sum rule |
stopifnot(...) | The checks |
10.4 The figure
The script saves oxidation_number.png at 2100 × 1350 pixels and 300 dpi: one bar per element showing atoms × oxidation number, orange above zero and blue below.
🐍 11. How to Calculate Oxidation Numbers in Python
This script does the same job in plain Python with exact fractions: it parses the formula, applies the fixed rules, solves the unknown from the sum rule, prints the working, checks ten compounds (including Fe3O4 at +8/3) and saves a 300 dpi chart. It is the same method the oxidation number calculator runs in your browser.
Install once: pip install matplotlib
11.1 The complete script
Python, saves oxidation_number.png
# ============================================================
# Oxidation number calculator in Python:
# fixed rules first, then solve the unknown from "sum = charge"
# StatsUnlock - https://statsunlock.com/oxidation-number-calculator/
# pip install matplotlib
# ============================================================
import re
from fractions import Fraction
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
# ---- 1. Your compound or ion ----------------------------------------
formula = "K2Cr2O7" # write ions as "Cr2O7^2-" or "MnO4^-"
find = "Cr" # the element you want (the underlined atom)
GROUP1 = {"Li", "Na", "K", "Rb", "Cs"}
GROUP2 = {"Be", "Mg", "Ca", "Sr", "Ba"}
FIXED = {"Al": 3, "Zn": 2, "Ag": 1}
METALS = GROUP1 | GROUP2 | {"Al", "B"} # partners that make H a hydride (-1)
def parse(f):
"""Return (atom counts, charge) for a formula such as Ca(NO3)2 or SO4^2-."""
charge = 0
m = re.search(r"\^(\d*)([+-])$", f)
if m:
charge = (int(m.group(1)) if m.group(1) else 1) * (1 if m.group(2) == "+" else -1)
f = f[:m.start()]
def group(s, i):
out, order = {}, []
while i < len(s) and s[i] != ")":
if s[i] == "(":
inner, i, sub_order = group(s, i + 1)
i += 1 # skip ")"
n = re.match(r"\d*", s[i:]).group(); i += len(n)
for k, v in inner.items():
out[k] = out.get(k, 0) + v * (int(n) if n else 1)
order += [k for k in sub_order if k not in order]
else:
el = re.match(r"[A-Z][a-z]?", s[i:]).group(); i += len(el)
n = re.match(r"\d*", s[i:]).group(); i += len(n)
out[el] = out.get(el, 0) + (int(n) if n else 1)
if el not in order: order.append(el)
return out, i, order
counts, _, order = group(f, 0)
return {k: counts[k] for k in order}, charge
def oxidation_numbers(f):
counts, z = parse(f)
ox, rule = {}, {}
if len(counts) == 1: # element or monatomic/homonuclear ion
el = next(iter(counts))
ox[el] = Fraction(z, counts[el]); rule[el] = "element or simple ion"
return counts, z, ox, rule
def unknown():
return [e for e in counts if e not in ox]
for e in counts:
if e == "F": ox[e], rule[e] = Fraction(-1), "F is always -1"
elif e in GROUP1: ox[e], rule[e] = Fraction(1), "group 1 is +1"
elif e in GROUP2: ox[e], rule[e] = Fraction(2), "group 2 is +2"
elif e in FIXED: ox[e], rule[e] = Fraction(FIXED[e]), "fixed value"
if "H" in counts and "H" not in ox and len(unknown()) > 1:
hydride = all(e in METALS for e in counts if e != "H")
ox["H"], rule["H"] = (Fraction(-1), "H is -1 in a metal hydride") if hydride else (Fraction(1), "H is +1")
if "O" in counts and "O" not in ox and len(unknown()) > 1:
ox["O"], rule["O"] = Fraction(-2), "O is -2"
for e in ("Cl", "Br", "I"):
if e in counts and e not in ox and len(unknown()) > 1 and "O" not in counts and "F" not in counts:
ox[e], rule[e] = Fraction(-1), "halogen is -1"
left = unknown()
if len(left) != 1:
raise ValueError("More than one unknown: " + ", ".join(left) + ". Use the online calculator.")
x = left[0]
known = sum(counts[e] * ox[e] for e in ox)
ox[x] = (z - known) / counts[x]; rule[x] = "solved from sum = charge"
return counts, z, ox, rule
def sign(v):
return ("+" if v > 0 else "") + str(v)
# ---- 2. Solve and show the working ------------------------------------
counts, z, ox, rule = oxidation_numbers(formula)
print(f"Formula {formula}, charge {z}")
for e, n in counts.items():
print(f" {e:2s} atoms {n} ON {sign(ox[e]):>5s} contribution {sign(n * ox[e]):>5s} ({rule[e]})")
total = sum(counts[e] * ox[e] for e in counts)
print(" Sum of contributions =", total, "= charge" if total == z else "!= charge")
print(f"Oxidation number of {find} in {formula} = {sign(ox[find])}")
# ---- 3. Checks ----------------------------------------------------------
assert total == z, "oxidation numbers must add up to the charge"
for f, el, expected in [("K2Cr2O7", "Cr", 6), ("KMnO4", "Mn", 7), ("H2SO4", "S", 6),
("Cr2O7^2-", "Cr", 6), ("Na2S2O3", "S", 2), ("Na5P3O10", "P", 5),
("H2O2", "O", -1), ("NaH", "H", -1), ("OF2", "O", 2)]:
assert oxidation_numbers(f)[2][el] == expected, f
assert oxidation_numbers("Fe3O4")[2]["Fe"] == Fraction(8, 3)
print("Verdict: Verified (all test compounds agree)")
# ---- 4. Figure: each element's contribution to the charge ---------------
els = list(counts)
vals = [float(counts[e] * ox[e]) for e in els]
fig, ax = plt.subplots(figsize=(7, 4.5))
bars = ax.bar(els, vals, color=["#ea580c" if v > 0 else "#2563eb" for v in vals])
ax.axhline(0, color="#334155", linewidth=1)
for b, e in zip(bars, els):
ax.annotate(f"{counts[e]} x ({sign(ox[e])})", (b.get_x() + b.get_width() / 2, b.get_height()),
ha="center", va="bottom" if b.get_height() >= 0 else "top", fontsize=10)
ax.set_ylabel("Atoms x oxidation number")
ax.set_title(f"{formula}: contributions add up to {z}")
fig.tight_layout()
fig.savefig("oxidation_number.png", dpi=300)
print("Saved oxidation_number.png")Output: K atoms 2 ON +1 contribution +2 (group 1 is +1), Oxidation number of Cr in K2Cr2O7 = +6, Verdict: Verified.
11.2 Python traps
- Use
Fraction, not floats: 8/3 stays exact and the sum check is an exact equality. - Dictionary keys are case sensitive:
"Co"is cobalt,"CO"is carbon monoxide. - The regular expression
\^(\d*)([+-])$reads the charge only at the end of the formula.
11.3 Packages
pip install pymatgen gives Composition("K2Cr2O7").oxi_state_guesses(), which guesses oxidation states from a table of common values, and chempy parses formulas and balances reaction equations.
11.4 What each part does
| Part | What it does |
|---|---|
parse() | Atom counts in formula order, brackets expanded, charge read |
oxidation_numbers() | The rules in priority order, then the sum rule |
(z - known) / counts[x] | Solves the unknown |
assert ... | The checks |
11.5 The figure
The script saves oxidation_number.png at 300 dpi with each element’s contribution to the charge.
📋 12. Oxidation Number Tables and Worksheet
12.1 Rules for calculating oxidation numbers, with exceptions
| # | Rule | Example | Exception |
|---|---|---|---|
| 1 | A free element is 0 | Na, O2, I2, S8, P4: 0 | None |
| 2 | A monatomic ion equals its charge | Fe3+ +3, S2− −2 | None |
| 3 | Fluorine is −1 in compounds | HF, OF2, SF6 | None |
| 4 | Group 1 metals +1, group 2 metals +2 | NaCl, CaCO3 | None in ordinary compounds |
| 5 | Hydrogen is +1 | H2O, NH3, HCl | −1 in metal hydrides: NaH, CaH2, LiAlH4 |
| 6 | Oxygen is −2 | H2O, CO2, SO42− | −1 in peroxides, −1/2 in superoxides, +2 in OF2 |
| 7 | Cl, Br, I are −1 | NaCl, KBr, HI | Positive with O or a lighter halogen: HClO4 +7, ICl +1 |
| 8 | The sum equals the overall charge | K2Cr2O7: 0; Cr2O72−: −2 | Always holds |
12.2 Common oxidation numbers of the elements
The most common oxidation numbers of elements met in courses, with their range (lowest to highest) and their Pauling electronegativity.
| Element | Group | Electronegativity | Common oxidation numbers | Range |
|---|---|---|---|---|
| H Hydrogen | 1 | 2.2 | −1, +1 | −1 to +1 |
| Li Lithium | 1 | 0.98 | +1 | 0 to +1 |
| C Carbon | 14 | 2.55 | −4, +4 | −4 to +4 |
| N Nitrogen | 15 | 3.04 | −3, +3, +5 | −3 to +5 |
| O Oxygen | 16 | 3.44 | −2 | −2 to +2 |
| F Fluorine | 17 | 3.98 | −1 | −1 to 0 |
| Na Sodium | 1 | 0.93 | +1 | 0 to +1 |
| Mg Magnesium | 2 | 1.31 | +2 | 0 to +2 |
| Al Aluminum | 13 | 1.61 | +3 | 0 to +3 |
| Si Silicon | 14 | 1.9 | −4, +4 | −4 to +4 |
| P Phosphorus | 15 | 2.19 | −3, +3, +5 | −3 to +5 |
| S Sulfur | 16 | 2.58 | −2, +2, +4, +6 | −2 to +6 |
| Cl Chlorine | 17 | 3.16 | −1, +1, +3, +5, +7 | −1 to +7 |
| K Potassium | 1 | 0.82 | +1 | 0 to +1 |
| Ca Calcium | 2 | 1 | +2 | 0 to +2 |
| Cr Chromium | 6 | 1.66 | +3, +6 | 0 to +6 |
| Mn Manganese | 7 | 1.55 | +2, +4, +7 | 0 to +7 |
| Fe Iron | 8 | 1.83 | +2, +3 | 0 to +6 |
| Co Cobalt | 9 | 1.88 | +2, +3 | 0 to +5 |
| Ni Nickel | 10 | 1.91 | +2 | 0 to +4 |
| Cu Copper | 11 | 1.9 | +2 | 0 to +4 |
| Zn Zinc | 12 | 1.65 | +2 | 0 to +2 |
| Br Bromine | 17 | 2.96 | −1, +1, +3, +5 | −1 to +7 |
| Ag Silver | 11 | 1.93 | +1 | 0 to +3 |
| I Iodine | 17 | 2.66 | −1, +1, +3, +5, +7 | −1 to +7 |
| Pb Lead | 14 | 1.8 | +2, +4 | −4 to +4 |
12.3 Oxidation numbers in common compounds and polyatomic ions
Every row was computed by the same engine as the oxidation number calculator.
| Species | Name | Element | Oxidation number | Working |
|---|---|---|---|---|
| NO3− | nitrate | N | +5 | 3(−2) + 1x = -1 → x = +5 |
| NO2− | nitrite | N | +3 | 2(−2) + 1x = -1 → x = +3 |
| NH4+ | ammonium | N | −3 | 4(+1) + 1x = 1 → x = −3 |
| N3− | azide | N | −1/3 | 3 × (−1/3) = −1 |
| SO42− | sulfate | S | +6 | 4(−2) + 1x = -2 → x = +6 |
| SO32− | sulfite | S | +4 | 3(−2) + 1x = -2 → x = +4 |
| S2O32− | thiosulfate | S | +2 | 3(−2) + 2x = -2 → x = +2 |
| S4O62− | tetrathionate | S | +5/2 | 6(−2) + 4x = -2 → x = +5/2 = 2.500 |
| PO43− | phosphate | P | +5 | 4(−2) + 1x = -3 → x = +5 |
| CO32− | carbonate | C | +4 | 3(−2) + 1x = -2 → x = +4 |
| C2O42− | oxalate | C | +3 | 4(−2) + 2x = -2 → x = +3 |
| CN− | cyanide | C | +2 | 1(−3) + 1x = -1 → x = +2 |
| ClO− | hypochlorite | Cl | +1 | 1(−2) + 1x = -1 → x = +1 |
| ClO2− | chlorite | Cl | +3 | 2(−2) + 1x = -1 → x = +3 |
| ClO3− | chlorate | Cl | +5 | 3(−2) + 1x = -1 → x = +5 |
| ClO4− | perchlorate | Cl | +7 | 4(−2) + 1x = -1 → x = +7 |
| IO3− | iodate | I | +5 | 3(−2) + 1x = -1 → x = +5 |
| MnO4− | permanganate | Mn | +7 | 4(−2) + 1x = -1 → x = +7 |
| MnO42− | manganate | Mn | +6 | 4(−2) + 1x = -2 → x = +6 |
| CrO42− | chromate | Cr | +6 | 4(−2) + 1x = -2 → x = +6 |
| Cr2O72− | dichromate | Cr | +6 | 7(−2) + 2x = -2 → x = +6 |
| O22− | peroxide | O | −1 | 2 × (−1) = −2 |
| H2O2 | hydrogen peroxide | O | −1 | 2(+1) + 2x = 0 → x = −1 |
| N2H4 | hydrazine | N | −2 | 4(+1) + 2x = 0 → x = −2 |
12.4 Calculating oxidation numbers: practice worksheet with answers
Twenty-five questions in three groups: compounds, polyatomic ions, and changes in oxidation number. Every answer was checked by the calculator engine. Cover the last column and try them first.
Free printable oxidation number worksheet with answers.
| # | Question | Working | Answer |
|---|---|---|---|
| A. Calculate the oxidation number of the underlined atom in each compound | |||
| 1 | Calculate the oxidation number of Cr in K2Cr2O7. | 2(+1) + 7(−2) + 2x = 0 → x = +6 | +6 |
| 2 | Calculate the oxidation number of Mn in KMnO4. | 1(+1) + 4(−2) + 1x = 0 → x = +7 | +7 |
| 3 | Calculate the oxidation number of S in H2SO4. | 2(+1) + 4(−2) + 1x = 0 → x = +6 | +6 |
| 4 | Calculate the oxidation number of C in CO2. | 2(−2) + 1x = 0 → x = +4 | +4 |
| 5 | Calculate the oxidation number of Cr in Na2Cr2O7. | 2(+1) + 7(−2) + 2x = 0 → x = +6 | +6 |
| 6 | Calculate the oxidation number of Mn in K2MnO4. | 2(+1) + 4(−2) + 1x = 0 → x = +6 | +6 |
| 7 | Calculate the oxidation number of P in Na5P3O10. | 5(+1) + 10(−2) + 3x = 0 → x = +5 | +5 |
| 8 | Calculate the oxidation number of S in Na2S2O3. | 2(+1) + 3(−2) + 2x = 0 → x = +2 | +2 |
| 9 | Calculate the oxidation number of S in Na2S2O5. | 2(+1) + 5(−2) + 2x = 0 → x = +4 | +4 |
| 10 | Calculate the oxidation number of I in I2. | A free element (I2) has oxidation number 0. | 0 |
| B. Polyatomic ions and exceptions | |||
| 11 | What is the oxidation number of Cr in Cr2O72−? | 7(−2) + 2x = -2 → x = +6 | +6 |
| 12 | What is the oxidation number of Mn in MnO4−? | 4(−2) + 1x = -1 → x = +7 | +7 |
| 13 | What is the oxidation number of S in SO42−? | 4(−2) + 1x = -2 → x = +6 | +6 |
| 14 | What is the oxidation number of N in NH4+? | 4(+1) + 1x = 1 → x = −3 | −3 |
| 15 | What is the oxidation number of P in PO43−? | 4(−2) + 1x = -3 → x = +5 | +5 |
| 16 | What is the oxidation number of Cl in ClO4−? | 4(−2) + 1x = -1 → x = +7 | +7 |
| 17 | What is the oxidation number of O in H2O2? | 2(+1) + 2x = 0 → x = −1 | −1 |
| 18 | What is the oxidation number of O in OF2? | 2(−1) + 1x = 0 → x = +2 | +2 |
| 19 | What is the oxidation number of H in NaH? | 1(+1) + 1x = 0 → x = −1 | −1 |
| 20 | What is the oxidation number of Fe in Fe3O4? | 4(−2) + 3x = 0 → x = +8/3 = 2.667 | +8/3 |
| C. Change in oxidation number: what is oxidised and what is reduced? | |||
| 21 | MnO4− + Fe2+ → Mn2+ + Fe3+ (in acidic solution) | MnO4− + 5 Fe2+ + 8 H+ → Mn2+ + 5 Fe3+ + 4 H2O | Fe oxidised +2 → +3; Mn reduced +7 → +2; 5 e− |
| 22 | Cr2O72− + Fe2+ → Cr3+ + Fe3+ (in acidic solution) | Cr2O72− + 6 Fe2+ + 14 H+ → 2 Cr3+ + 6 Fe3+ + 7 H2O | Fe oxidised +2 → +3; Cr reduced +6 → +3; 6 e− |
| 23 | Zn + CuSO4 → ZnSO4 + Cu | Zn + CuSO4 → ZnSO4 + Cu | Zn oxidised 0 → +2; Cu reduced +2 → 0; 2 e− |
| 24 | Cu + HNO3 → Cu(NO3)2 + NO + H2O | 3 Cu + 8 HNO3 → 3 Cu(NO3)2 + 2 NO + 4 H2O | Cu oxidised 0 → +2; N reduced +5 → +2; 6 e− |
| 25 | Cl2 + NaOH → NaCl + NaClO3 + H2O | 3 Cl2 + 6 NaOH → 5 NaCl + NaClO3 + 3 H2O | Disproportionation: Cl 0 → −1, +5; 5 e− |
📈 13. Oxidation Number Calculation Examples
Eight examples run through the calculator, from potassium dichromate to the carbons of ethanol. Each figure is drawn from the computed numbers: bars to the right of zero are positive oxidation numbers, bars to the left negative.
Chromium in K2Cr2O7
The most-asked oxidation number question.
Calculate the oxidation number of Cr in potassium dichromate, K2Cr2O7.
| Element | Atoms | Oxidation number | Contribution |
|---|---|---|---|
| K | 2 | +1 | +2 |
| Cr | 2 | +6 | +12 |
| O | 7 | −2 | −14 |
| Total | 0 |
What it means: K is +1 and O is −2, so 2(+1) + 2x + 7(−2) = 0 and x = +6. Chromium is at its group maximum, so dichromate can only be reduced, usually to green Cr3+ (+3).
How to write it: Cr = +6 in K2Cr2O7: 2(+1) + 2x + 7(−2) = 0
Manganese in KMnO4
Seven electrons given away.
Calculate the oxidation number of Mn in KMnO4, and compare it with K2MnO4.
| Element | Atoms | Oxidation number | Contribution |
|---|---|---|---|
| K | 1 | +1 | +1 |
| Mn | 1 | +7 | +7 |
| O | 4 | −2 | −8 |
| Total | 0 |
What it means: +1 + x + 4(−2) = 0 gives Mn = +7. In potassium manganate, K2MnO4, two K make the sum 2 + x − 8 = 0, so Mn = +6: one more K, one less unit of oxidation.
How to write it: Mn = +7 in KMnO4; Mn = +6 in K2MnO4
Sulphur in H2SO4
Sulfur at its highest value.
Calculate the oxidation number of sulphur in sulphuric acid, H2SO4.
| Element | Atoms | Oxidation number | Contribution |
|---|---|---|---|
| H | 2 | +1 | +2 |
| S | 1 | +6 | +6 |
| O | 4 | −2 | −8 |
| Total | 0 |
What it means: 2(+1) + x + 4(−2) = 0, so S = +6, equal to its group number minus 10. Sulfur can go no higher, so in reactions concentrated H2SO4 is reduced (to SO2, +4).
How to write it: S = +6 in H2SO4
Sulphur in sodium thiosulfate
One number for two different atoms.
Calculate the oxidation number of S in Na2S2O3.
| Element | Atoms | Oxidation number | Contribution |
|---|---|---|---|
| Na | 2 | +1 | +2 |
| S | 2 | +2 | +4 |
| O | 3 | −2 | −6 |
| Total | 0 |
What it means: 2(+1) + 2x + 3(−2) = 0 gives x = +2. That is the average: in the structure the central S is +5 and the terminal S is −1. In sodium metabisulfite, Na2S2O5, the same sum gives +4.
How to write it: S = +2 (average) in Na2S2O3
Iron in magnetite, Fe3O4
Why 8/3 is a correct answer.
Calculate the oxidation number of Fe in Fe3O4.
| Element | Atoms | Oxidation number | Contribution |
|---|---|---|---|
| Fe | 3 | +8/3 | +8 |
| O | 4 | −2 | −8 |
| Total | 0 |
What it means: 3x + 4(−2) = 0 gives x = +8/3. Magnetite is FeO·Fe2O3: one Fe2+ and two Fe3+, and (2 + 3 + 3) ÷ 3 = 8/3.
How to write it: Fe = +8/3 (average of +2, +3, +3)
Permanganate and iron(II)
Five electrons, five irons.
In acid, MnO4− reacts with Fe2+ to give Mn2+ and Fe3+. What is oxidised, what is reduced, and how many electrons move?
| Element | Before | After | Electrons |
|---|---|---|---|
| Mn | +7 | +2 | 5 gained |
| O | −2 | −2 | none |
| Fe | +2 | +3 | 5 lost |
| H | +1 | +1 | none |
What it means: Mn falls by 5 (reduced) and Fe rises by 1 (oxidised), so five Fe2+ are needed for each MnO4−. Balanced: MnO4− + 5 Fe2+ + 8 H+ → Mn2+ + 5 Fe3+ + 4 H2O. MnO4− is the oxidising agent and Fe2+ the reducing agent.
How to write it: Mn: +7 → +2 (reduced, 5 e− gained); Fe: +2 → +3 (oxidised)
Iron in K4[Fe(CN)6]
Count the counter-ions first.
Calculate the oxidation number of Fe in potassium hexacyanoferrate(II), K4[Fe(CN)6].
| Element | Atoms | Oxidation number | Contribution |
|---|---|---|---|
| Fe | 1 | +2 | +2 |
| CN | 6 | −1 | −6 |
| Complex | −4 |
What it means: Four K+ make the complex ion −4. Six CN− contribute −6, so Fe + (−6) = −4 and Fe = +2. Iron is in group 8, so Fe(II) is a d6 ion; with six cyanides, the coordination number is 6.
How to write it: Fe = +2 in K4[Fe(CN)6]; coordination number 6; d6
The two carbons of acetic acid
Same molecule, very different carbons.
Find the oxidation number of each carbon in CH3COOH.
| Carbon | Atoms | Oxidation number | Contribution |
|---|---|---|---|
| C1 (CH3) | 0 to O, 3 to H | −3 | 0 − 3 |
| C2 (COOH) | 3 to O, 0 to H | +3 | 3 − 0 |
What it means: The CH3 carbon has three bonds to H: −3. The COOH carbon has three bonds to O (C=O counts 2) and none to H: +3. Their average, 0, is what the formula method gives for C2H4O2.
How to write it: CH3 carbon −3; COOH carbon +3
✏️ 14. How to Calculate Oxidation Numbers by Hand
This is the written method examiners expect, on the same problem as Sections 7, 9, 10 and 11: calculate the oxidation number of Cr in K2Cr2O7.
14.1 How to calculate the oxidation number of an element in a compound, step by step
- Write the overall charge. K2Cr2O7 is neutral, so the sum is 0.
- Let the unknown be x. Cr = x.
- Give the fixed values. K = +1 (group 1), O = −2.
- Multiply by the number of atoms. 2 × (+1) = +2; 2 × x = 2x; 7 × (−2) = −14.
- Add and set equal to the charge. +2 + 2x − 14 = 0.
- Solve. 2x = 12, so x = +6.
- Check. 2(+1) + 2(+6) + 7(−2) = 2 + 12 − 14 = 0, and +6 is chromium’s group number, its highest possible value.
14.2 How to calculate the oxidation number of an ion
Set the sum equal to the ion’s charge instead of 0. Dichromate: 2x + 7(−2) = −2, so 2x = 12 and Cr = +6, the same as in K2Cr2O7. Permanganate: x + 4(−2) = −1, so Mn = +7. For the ammonium ion, x + 4(+1) = +1 gives N = −3.
14.3 How to calculate the oxidation number from a Lewis structure
Draw the structure, give both electrons of each bond to the more electronegative atom (split bonds between identical atoms equally), count the electrons each atom ends up with, and subtract from its valence electrons. In H2O2 (H–O–O–H), each O keeps its 4 lone-pair electrons, takes both O–H electrons and one of the O–O pair: 7 electrons, so 6 − 7 = −1. This is the only method that gives the two different S atoms in thiosulfate (+5 and −1) instead of their average, +2.
14.4 How to calculate the oxidation number of coordination compounds
Find the charge of the complex ion from the counter-ions, then subtract the ligand charges. K4[Fe(CN)6]: four K+ make the complex −4; six CN− give −6; so Fe + (−6) = −4 and Fe = +2. [Co(NH3)6]Cl3: three Cl− make the complex +3; NH3 is neutral; so Co = +3.
14.5 How to calculate the oxidation number of carbon in organic compounds
For each carbon, count +1 for every bond to O, N, S or a halogen (a double bond counts 2), −1 for every bond to H, and 0 for bonds to other carbons. In ethanol, CH3–CH2OH, the CH3 carbon is 0 − 3 = −3 and the CH2OH carbon is 1 − 2 = −1. Their average, −2, is what the formula method gives for C2H6O: 2x + 6(+1) + (−2) = 0.
14.6 How to calculate the change in oxidation number
Find the oxidation number of each element before and after, and subtract. In MnO4− + Fe2+ → Mn2+ + Fe3+, Mn changes by +2 − (+7) = −5 (reduced, gains 5 electrons) and Fe by +3 − (+2) = +1 (oxidised, loses 1). To balance the electrons, five Fe2+ are needed for every MnO4−.
14.7 On a scientific calculator
On a Casio fx-991EX or fx-82MS, type the sum rule directly: ( 0 − ( 2 × 1 + 7 × (−) 2 ) ) ÷ 2 = gives 6. For Fe3O4, ( 0 − 4 × (−) 2 ) ÷ 3 = shows 8/3; press S⇔D to see 2.666666667.
Use the negative key (−), not the subtract key, for −2. Key names differ between models; check your manual.
14.8 Do it in the lab: a permanganate titration of iron(II)
Finding the concentration of Fe2+ with KMnO4
- Pipette 25.00 cm3 of the iron(II) solution into a conical flask and add about 10 cm3 of 1 mol dm−3 sulfuric acid.
- Fill a burette with 0.0200 mol dm−3 KMnO4. No indicator is needed: purple MnO4− turns colourless Mn2+ as it reacts.
- Titrate until the first permanent pale pink colour, the end point. Repeat until two titres agree within 0.10 cm3.
- Use the change in oxidation number: Mn +7 → +2 gains 5 electrons and Fe +2 → +3 loses 1, so 1 mol MnO4− reacts with 5 mol Fe2+.
Hazards: potassium permanganate is an oxidiser and stains skin and clothes; sulfuric acid at 1 mol dm−3 is an irritant. Wear eye protection and gloves and follow your school’s risk assessment.
Main errors: too little acid (brown MnO2 forms instead of Mn2+), reading the burette at the bottom of the meniscus when the purple solution makes it hard to see (read the top), and iron(II) oxidised by air before the titration.
| Measurement | Value | Working |
|---|---|---|
| Iron(II) solution pipetted | 25.00 cm3 | |
| KMnO4 concentration | 0.0200 mol dm−3 | |
| Titres (rough, 1, 2) | 23.50, 23.45, 23.45 cm3 | Concordant: 23.45 and 23.45 |
| Mean titre | 23.45 cm3 | |
| Moles of MnO4− | 4.690 × 10−4 mol | 0.0200 × 23.45 ÷ 1000 |
| Moles of Fe2+ | 2.345 × 10−3 mol | 5 × 4.690 × 10−4 (Mn gains 5 e−, Fe loses 1) |
| Concentration of Fe2+ | 0.0938 mol dm−3 | 2.345 × 10−3 ÷ 0.02500 |
Example data. The 1 : 5 ratio comes straight from the change in oxidation number: MnO4− + 5 Fe2+ + 8 H+ → Mn2+ + 5 Fe3+ + 4 H2O. The iron(II) concentration is 0.0938 mol dm−3, or 5.24 g dm−3 of iron.
14.9 How to calculate oxidation number: practice problems with answers
Ten practice problems, easy to hard. Open each one to see the answer.
1. Calculate the oxidation number of N in HNO3.
1 × (+1) = +1; 3 × (−2) = −6; 1(+1) + 3(−2) + 1x = 0 → x = +5. Answer: +5
2. Calculate the oxidation number of Cl in KClO3.
1 × (+1) = +1; 3 × (−2) = −6; 1(+1) + 3(−2) + 1x = 0 → x = +5. Answer: +5
3. Calculate the oxidation number of sulfur in sodium metabisulfite, Na2S2O5.
2 × (+1) = +2; 5 × (−2) = −10; 2(+1) + 5(−2) + 2x = 0 → x = +4. Answer: +4
4. Find both oxidation numbers of N in NH4NO3.
NH4NO3 = NH4+ + NO3−; 4 × (+1) = +4; 4(+1) + 1x = 1 → x = −3; 3 × (−2) = −6; 3(−2) + 1x = -1 → x = +5. Answer: −3 and +5
5. What is the oxidation number of O in potassium superoxide, KO2?
1 × (+1) = +1; 1(+1) + 2x = 0 → x = −1/2 = -0.500. Answer: −1/2
6. What is the oxidation number of H in LiAlH4?
1 × (+1) = +1; 1 × (+3) = +3; 1(+1) + 1(+3) + 4x = 0 → x = −1. Answer: −1
7. Find the oxidation number of Co in [Co(NH3)5Cl]Cl2.
2 × Cl (−1) = -2, so the complex is +2; 5 × NH3 (0) + 1 × Cl (−1) = -1; x + (-1) = 2 → x = +3; CN = 5 + 1 = 6; Co(III) is d6. Answer: +3
8. Find the oxidation number of each carbon in ethanal, CH3CHO.
bonds to O, N or halogen = 0; bonds to H = 3; C–C bonds = 1 → 0 − 3 = −3; bonds to O, N or halogen = 2; bonds to H = 1; C–C bonds = 1 → 2 − 1 = +1; average of the carbons = −1; formula method gives C = −1. Answer: C1 −3, C2 +1
9. In acid, Cr2O72− oxidises SO2 to SO42− and becomes Cr3+. How many electrons are transferred in the balanced equation?
Cr: +6 → +3 (change −3 per atom); electrons gained 6; S: +4 → +6 (change +2 per atom); electrons lost 6; Cr2O72− + 3 SO2 + 2 H+ → 2 Cr3+ + 3 SO42− + H2O; 6 e− lost = 6 e− gained. Answer: S oxidised +4 → +6; Cr reduced +6 → +3; 6 electrons transferred
10. Hydrogen peroxide decomposes: H2O2 → H2O + O2. What kind of redox reaction is this?
O: −1 → −2, 0; electrons lost 2, electrons gained 2; 2 H2O2 → 2 H2O + O2; 2 e− lost = 2 e− gained. Answer: Disproportionation: O −1 → −2, 0; 2 electrons transferred
Want more practice on paper? Print the worksheet and check your answers.
14.10 Mistakes that lose marks
Research on redox learning finds students often treat oxidation numbers as real charges and confuse them with the ion charge on the whole species (Garnett & Treagust, 1992; Rahayu et al., 2011).
- Forgetting to multiply by the number of atoms: writing 1 + x − 2 = 0 for K2Cr2O7.
- Setting the sum to 0 for an ion: Cr2O72− then gives +7 instead of +6.
- Giving O −2 in a peroxide or H +1 in a metal hydride.
- Writing the sign after the number (6+) for an oxidation number; that is the style for ionic charges.
- Saying the oxidising agent is oxidised: it is the substance that is reduced.
- Reporting 2.67 for Fe3O4 without saying it is an average of +2 and +3.
- Using the formula method for carbon in an organic compound when the question asks about one particular carbon.
✅ 15. When Should You Use an Oxidation Number Calculator?
- You need the oxidation number of an element in a compound or ion, such as the underlined atom in a question.
- You want to know what is oxidised and reduced in a reaction, and how many electrons move.
- You are balancing a redox equation by the oxidation-number method.
- You need the metal’s oxidation state and d-electron count in a complex, or each carbon in an organic molecule.
- The real charge on an atom: oxidation numbers are bookkeeping, not measured charges.
- Which atom is which when the formula hides the structure (S2O32−, Fe3O4): it gives the average.
- Whether a reaction actually happens: that needs electrode potentials.
- Oxidation states in metal clusters, radicals or compounds with non-innocent ligands, where even IUPAC needs the full structure.
Four real examples
| Situation | Species | Result |
|---|---|---|
| Naming a compound | FeCl3 | Fe +3: iron(III) chloride |
| A redox titration | MnO4− + Fe2+ | 1 : 5 mole ratio from 5 e− and 1 e− |
| The breathalyser | Cr2O72− → Cr3+ | Cr +6 → +3, orange to green, as ethanol is oxidised |
| Bleach | NaClO | Cl +1, which is why it is an oxidising agent |
Decision tree
- Is it one compound or ion? Yes: compound mode. No: go on.
- Is there an arrow, with reactants and products? Yes: change-in-oxidation-number mode.
- Is there a metal with ligands in square brackets? Yes: coordination mode.
- Do you need each carbon in an organic molecule? Yes: organic mode with a condensed formula.
🔧 16. Oxidation Number Calculator Troubleshooting
"Element symbols start with a capital letter"
Cause: a lowercase formula such as kmno4. Fix: press the suggested formula, or type KMnO4. Co is cobalt; CO is carbon monoxide.
My answer for an ion is off by the charge
Cause: the charge was not entered. Fix: write Cr2O7^2- (or 2- in the charge box). Without it the calculator treats the species as neutral.
"Above its maximum" warning
Cause: oxygen is not −2 everywhere, usually because of a peroxide group (CrO5, S2O82−, H2SO5). Fix: read the note under the answer; the true value is given for common cases.
The answer is a fraction
Cause: atoms of the same element are in different environments. Fix: nothing is wrong; +8/3 for Fe3O4 is the average of +2 and +3. Use a Lewis structure for each atom.
"Two or more elements had no fixed rule"
Cause: a species such as KCN or SCN−, where neither C nor N has a fixed value. Fix: the calculator gives the more electronegative element its usual negative value (N −3); check with the structure.
The equation could not be balanced
Cause: an ionic redox equation without H+, OH− or H2O. Fix: choose acidic or basic solution; the oxidation numbers are shown either way.
"Write the complex in square brackets"
Cause: the coordination mode needs to know which atoms are ligands. Fix: type K4[Fe(CN)6] rather than K4FeC6N6, or use the compound mode for the average.
"Looks like a molecular formula" in the organic mode
Cause: C6H6 or C2H6O does not show which atoms are joined. Fix: type a condensed structural formula such as CH3CH2OH; the message also gives the average oxidation number.
My textbook gives +6 and −2 for thiosulfate, not +5 and −1
Cause: two conventions for the S–S bond. Fix: both average to +2, which is what the formula method gives; follow your syllabus for the split values.
⚖️ 17. Assumptions and Limitations of the Oxidation Number Calculator
| Assumption | What it requires | How to check | If it fails |
|---|---|---|---|
| Correct formula and charge | Every atom counted, the ion charge stated | The preview under the box | Every value shifts |
| Ordinary bonding | No O–O or metal–metal bonds unless you split them out | Values within the group range | A value above the maximum (flagged) |
| Rule priority | F > group 1 and 2 > H > O > halogens | The rule chip on each step | Unusual compounds may need the structure |
| Condensed organic formula | Carbons written in order, = and # marked | The bond counts in the carbon table | A warning about unused bonds |
| Known ligand charges | Ligands from the list in the coordination box | The ligand table | An unknown-ligand message |
Limitations. An oxidation number calculator works from the formula, so when atoms of one element sit in different environments it gives their average. The IUPAC definition is based on the bonded structure (Karen, McArdle & Takats, 2016), and for species such as metal nitrosyls, polysulfides or metal clusters the formula alone cannot settle every atom’s value. Electronegativities are Pauling values (Pauling, 1932; Allred, 1961).
🎯 18. Conclusion
What the answer is
An oxidation number is the charge an atom would have if every bond were ionic. Give the fixed values, then solve the unknown so that the total equals the charge. For K2Cr2O7, 2(+1) + 2x + 7(−2) = 0 gives Cr = +6.
What it means chemically
The oxidation number shows how far an atom has been oxidised. An element at its maximum, such as Cr(VI) or Mn(VII), can only gain electrons, which makes dichromate and permanganate strong oxidising agents.
Watch out for
Multiply by the number of atoms, use the ion’s charge for ions, check for peroxides and hydrides, and remember that a fraction is an average.
Next steps
Practise with the worksheet in Section 12.4 and the ten problems in Section 14.9, then use the change in oxidation number to balance redox equations and to work out titration ratios.
❓ 19. Frequently Asked Questions
What is an oxidation number calculator?
An oxidation number calculator finds the oxidation number of every atom in a compound or ion by applying the standard rules and solving the rest from the sum rule. This one also finds what is oxidised and reduced in a reaction, the metal in a coordination compound and each carbon in an organic molecule, with every step shown.
How do you calculate the oxidation number of a compound?
Give the atoms with fixed values their oxidation numbers (group 1 +1, group 2 +2, H +1, O -2, F -1), multiply each by its number of atoms, and choose the unknown so that the total is 0. For H2SO4: 2(+1) + x + 4(-2) = 0, so S is +6.
How do you calculate the oxidation number of an element?
A free element on its own, such as Na, O2, I2 or S8, always has oxidation number 0. Inside a compound, the element's oxidation number is found from the sum rule: all oxidation numbers add up to the overall charge.
What are the rules for calculating oxidation numbers?
Free elements are 0; a monatomic ion equals its charge; F is -1; group 1 metals are +1 and group 2 are +2; H is +1 (but -1 in metal hydrides); O is -2 (but -1 in peroxides and +2 in OF2); Cl, Br and I are -1 unless bonded to O or F; and the sum equals the overall charge.
How do you calculate the oxidation number of Cr in K2Cr2O7?
K is +1 and O is -2, so 2(+1) + 2x + 7(-2) = 0. That gives 2 + 2x - 14 = 0, 2x = 12 and x = +6. Chromium is +6 in potassium dichromate, and also +6 in Na2Cr2O7 and in the Cr2O7^2- ion.
How do you calculate the oxidation number of Cr in Cr2O7^2-?
Set the sum equal to the ion's charge: 2x + 7(-2) = -2, so 2x = 12 and Cr = +6. Setting the sum to 0 by mistake gives +7, which is wrong.
How do you calculate the oxidation number of Mn in KMnO4 and MnO4^-?
In KMnO4: +1 + x + 4(-2) = 0, so Mn = +7. In the permanganate ion MnO4^-: x + 4(-2) = -1, so Mn = +7 as well. In K2MnO4 (manganate), 2(+1) + x + 4(-2) = 0 gives Mn = +6.
How do you calculate the oxidation number of sulphur in H2SO4?
2(+1) + x + 4(-2) = 0, so x = +6. Sulfur is +6 in sulphuric acid, its highest possible oxidation number.
What is the oxidation number of S in Na2S2O3 and Na2S2O5?
Sodium thiosulfate: 2(+1) + 2x + 3(-2) = 0, so the average S is +2 (the two S atoms are really +5 and -1). Sodium metabisulfite, Na2S2O5: 2(+1) + 2x + 5(-2) = 0, so S is +4.
What is the oxidation number of phosphorus in Na5P3O10?
5(+1) + 3x + 10(-2) = 0, so 3x = 15 and P = +5. Sodium tripolyphosphate contains phosphorus in its highest oxidation state.
What is the oxidation number of C in CO2, and of iodine in I2?
In CO2, x + 2(-2) = 0, so C is +4, its highest value. In I2, iodine is a free element, so its oxidation number is 0.
Can an oxidation number be a fraction?
Yes, as an average. Fe3O4 gives Fe +8/3 because it holds one Fe2+ and two Fe3+; S4O6^2- gives S +5/2; KO2 gives O -1/2. No single atom has a fractional oxidation number.
How do you calculate the change in oxidation number?
Subtract the oxidation number before the reaction from the one after. MnO4^- to Mn2+ is +2 - (+7) = -5, a reduction by 5 electrons. Fe2+ to Fe3+ is +1, an oxidation by 1 electron, so five Fe2+ react with each MnO4^-.
How do you find the oxidising and reducing agents?
Find the element whose oxidation number goes down: the species containing it is the oxidising agent. The species containing the element whose oxidation number goes up is the reducing agent. In Zn + CuSO4, CuSO4 is the oxidising agent and Zn the reducing agent.
How do you calculate the oxidation number in coordination compounds?
Work out the complex ion's charge from the counter-ions, then subtract the ligand charges. In K4[Fe(CN)6] the complex is -4 and six CN- give -6, so Fe = +2. In [Co(NH3)6]Cl3 the complex is +3 and NH3 is neutral, so Co = +3.
How do you calculate the oxidation number of carbon in organic compounds?
For each carbon, count +1 for every bond to O, N or a halogen and -1 for every bond to H; C-C bonds count 0. In CH3CH2OH the carbons are -3 and -1; in CH3COOH they are -3 and +3.
How do you calculate the oxidation number from a Lewis structure?
Give both electrons of every bond to the more electronegative atom, split bonds between identical atoms equally, and subtract the electrons each atom ends up with from its valence electrons. Each O in H2O2 ends up with 7, so its oxidation number is 6 - 7 = -1.
What is the difference between oxidation number and charge?
A charge is real and belongs to a whole ion: dichromate is 2-. An oxidation number is a bookkeeping value for one atom: Cr is +6 in dichromate, but no Cr6+ ion exists. Oxidation numbers carry the sign first (+6); charges carry it last (6+).
How do you calculate oxidation numbers in Excel, Python or R?
Put the atom counts and known oxidation numbers in columns and solve the unknown with =(charge-SUMPRODUCT(atoms,known))/atoms_of_unknown. Sections 10 and 11 have complete, tested R and Python scripts that print +6 for Cr in K2Cr2O7.
Where can I find oxidation number calculation practice questions with answers?
Section 12.4 has a 25-question worksheet with answers on compounds, polyatomic ions and changes in oxidation number. Section 14.9 has ten more worked problems, and the Batch tab solves a whole list at once.
📑 20. Cite This Tool
StatsUnlock Team. (2026). Oxidation number calculator [Interactive chemistry tool]. StatsUnlock. https://statsunlock.com/oxidation-number-calculator/@misc{statsunlock_oxnumber_2026, title={Oxidation Number Calculator}, author={{StatsUnlock Team}}, year={2026}, note={Interactive chemistry tool}, url={https://statsunlock.com/oxidation-number-calculator/}}Oxidation numbers were assigned with the StatsUnlock Oxidation Number Calculator (2026) using the IUPAC rules (fixed values for F, group 1 and 2 metals, H and O, then the sum equal to the charge).🔗 21. Related Tools
Quick arithmetic for the sum rule.
Open tool →Solve 2(+1) + 2x + 7(−2) = 0 for x.
Open tool →Test whether two titration results really differ.
Open tool →How many repeat titrations an experiment needs.
Open tool →How big a difference between two methods is.
Open tool →Check an experiment can detect the change you expect.
Open tool →The chance of a false positive or a missed real effect.
Open tool →How much variation in an ANOVA your treatment explains.
Open tool →Solving for x is algebra, and comparing titration results is statistics; these tools cover both.
📖 22. Glossary of Redox Terms
| Term | Plain-English meaning |
|---|---|
| Coordination number | The number of donor atoms bonded to the metal in a complex. |
| d-electron count | Group number minus oxidation number for a transition metal ion. |
| Disproportionation | A reaction in which one element is both oxidised and reduced. |
| Electronegativity | How strongly an atom attracts bonding electrons; F is highest (3.98). |
| Formal charge | The charge on an atom if bonding electrons were shared equally. |
| Half-equation | One half of a redox reaction, showing electrons lost or gained. |
| Hydride | A compound in which hydrogen is −1, bonded to a metal. |
| Ligand | A molecule or ion that donates electrons to a metal in a complex. |
| OIL RIG | Oxidation Is Loss, Reduction Is Gain (of electrons). |
| Oxidation | Loss of electrons; the oxidation number goes up. |
| Oxidation number | The charge an atom would have if every bond were ionic. |
| Oxidation state | The IUPAC term with the same meaning as oxidation number. |
| Oxidising agent | The species that takes electrons and is itself reduced. |
| Peroxide | A compound with an O–O bond, in which O is −1. |
| Polyatomic ion | A charged group of atoms, such as SO42−. |
| Redox reaction | A reaction in which oxidation numbers change. |
| Reducing agent | The species that gives electrons and is itself oxidised. |
| Reduction | Gain of electrons; the oxidation number goes down. |
| Roman numeral (Stock) notation | Writing the oxidation number in a name: iron(III) chloride. |
| Superoxide | A compound with the O2− ion, in which O is −1/2. |
📚 23. References
Peer-reviewed sources for the methods and data used in this oxidation number calculator: the IUPAC definition of oxidation state, electronegativity scales, atomic weights, and research on how students learn redox chemistry.
- Allred, A. L. (1961). Electronegativity values from thermochemical data. Journal of Inorganic and Nuclear Chemistry, 17(3–4), 215–221. https://doi.org/10.1016/0022-1902(61)80142-5
- Brandriet, A. R., & Bretz, S. L. (2014). The development of the Redox Concept Inventory as a measure of students’ symbolic and particulate redox understandings and confidence. Journal of Chemical Education, 91(8), 1132–1144. https://doi.org/10.1021/ed500051n
- Calzaferri, G. (1999). Oxidation numbers. Journal of Chemical Education, 76(3), 362. https://doi.org/10.1021/ed076p362
- Garnett, P. J., & Treagust, D. F. (1992). Conceptual difficulties experienced by senior high school students of electrochemistry: Electric circuits and oxidation-reduction equations. Journal of Research in Science Teaching, 29(2), 121–142. https://doi.org/10.1002/tea.3660290204
- Jensen, W. B. (2007). The origin of the oxidation-state concept. Journal of Chemical Education, 84(9), 1418. https://doi.org/10.1021/ed084p1418
- Karen, P. (2015). Oxidation state, a long-standing issue! Angewandte Chemie International Edition, 54(16), 4716–4726. https://doi.org/10.1002/anie.201407561
- Karen, P., McArdle, P., & Takats, J. (2014). Toward a comprehensive definition of oxidation state (IUPAC Technical Report). Pure and Applied Chemistry, 86(6), 1017–1081. https://doi.org/10.1515/pac-2013-0505
- Karen, P., McArdle, P., & Takats, J. (2016). Comprehensive definition of oxidation state (IUPAC Recommendations 2016). Pure and Applied Chemistry, 88(8), 831–839. https://doi.org/10.1515/pac-2015-1204
- Loock, H.-P. (2011). Expanded definition of the oxidation state. Journal of Chemical Education, 88(3), 282–283. https://doi.org/10.1021/ed1005213
- Menzek, A. (2002). A new approach to understanding oxidation-reduction of compounds in organic chemistry. Journal of Chemical Education, 79(6), 700. https://doi.org/10.1021/ed079p700
- Nakhleh, M. B. (1992). Why some students don’t learn chemistry: Chemical misconceptions. Journal of Chemical Education, 69(3), 191–196. https://doi.org/10.1021/ed069p191
- Nurrenbern, S. C., & Pickering, M. (1987). Concept learning versus problem solving: Is there a difference? Journal of Chemical Education, 64(6), 508–510. https://doi.org/10.1021/ed064p508
- Österlund, L.-L., Berg, A., & Ekborg, M. (2010). Redox models in chemistry textbooks for the upper secondary school: Friend or foe? Chemistry Education Research and Practice, 11(3), 182–192. https://doi.org/10.1039/C005467B
- Parkin, G. (2006). Valence, oxidation number, and formal charge: Three related but fundamentally different concepts. Journal of Chemical Education, 83(5), 791. https://doi.org/10.1021/ed083p791
- Pauling, L. (1932). The nature of the chemical bond. IV. The energy of single bonds and the relative electronegativity of atoms. Journal of the American Chemical Society, 54(9), 3570–3582. https://doi.org/10.1021/ja01348a011
- Prohaska, T., Irrgeher, J., Benefield, J., Böhlke, J. K., Chesson, L. A., Coplen, T. B., ... Zhu, X. (2022). Standard atomic weights of the elements 2021 (IUPAC Technical Report). Pure and Applied Chemistry, 94(5), 573–600. https://doi.org/10.1515/pac-2019-0603
- Rahayu, S., Treagust, D. F., Chandrasegaran, A. L., Kita, M., & Ibnu, S. (2011). Assessment of electrochemical concepts: A comparative study involving senior high-school students in Indonesia and Japan. Research in Science & Technological Education, 29(2), 169–188. https://doi.org/10.1080/02635143.2010.536949
- Smith, D. W. (2005). Valence, covalence, hypervalence, oxidation state, and coordination number. Journal of Chemical Education, 82(8), 1202. https://doi.org/10.1021/ed082p1202
- Woolf, A. A. (1988). Oxidation numbers and their limitations. Journal of Chemical Education, 65(1), 45. https://doi.org/10.1021/ed065p45
- Yarroch, W. L. (1985). Student understanding of chemical equation balancing. Journal of Research in Science Teaching, 22(5), 449–459. https://doi.org/10.1002/tea.3660220507
