The Coefficient Nothing Forced
Balancing a chemical equation is taught as a puzzle with one right answer. It is not a puzzle, it is the nullspace of an integer matrix, and the answer is unique only when the species outnumber the elements by exactly one. Every chemical equation in English Wikipedia was balanced here by exact integer arithmetic. Of the … that can be decided at all, …% have more than one correct answer, and the coefficients somebody wrote down are a choice that no conservation law makes for them.
Here is the equation everybody is taught. Two hydrogens, one oxygen, two waters.
Ask why it is two and the answer you were given is that the atoms have to come out even, which is true, and which sounds like it settles the matter. It does settle this one. Write the same question as arithmetic and you can see exactly why, and you can also see the condition under which it stops being settled, which nobody mentions.
Put the species in columns and the elements in rows. Each entry is how many atoms of that element one unit of that species contains. Reading across, a balance is a list of whole numbers, positive on the left of the arrow and negative on the right, that makes every row add to zero. The balances of an equation are therefore exactly the integer points of the nullspace of that matrix, and there is a theorem hiding in that sentence: the balance is unique up to scale precisely when the nullspace is one dimensional.
Two hydrogens, one oxygen and two waters is not the answer because a person found it. It is the answer because the matrix leaves room for nothing else.
Balance anything
…
Everything in that box is computed in your browser by the same two files the census ran on: lib/chem.mjs reads the markup or refuses to, lib/balance.mjs does the linear algebra in exact BigInt arithmetic. There is no floating point anywhere in a verdict, so "this equation does not balance" is a statement about integers rather than a tolerance.
lib/chem.mjs and lib/balance.mjs the box above runs on, and fetches this
page’s own data/*.json, at the paths you fetch them from.
What it shows. Four equations the hand audit below confirmed as defects, each beating in the rows it gets wrong, the chloride that lost its minus sign beating in the charge row. Then
S -> NP \quad VP from the article on phrase structure rules, which beats in four
rows at once and is a sentence, not a reaction: the sound cannot tell the difference, and that is
why every flag was read by hand. Then ozone, glucose to acetic acid, and bromine in alkali, each
with more than one balance of its atoms: the coefficients move along those balances and nothing
beats, until the bromine equation’s charge row, the only row still objecting, slows and falls
silent at exactly the one balance charge allows.
The control is what makes the soundtrack evidence. The whole of it is rebuilt a second time with every vector that does not balance replaced by this page’s own balancer’s first admissible balance, where one exists. In that second soundtrack the detector hears every row go quiet except in the three equations for which no admissible balance exists at all, which go on beating exactly as before. The gate runs four times across the build, the last time against the mp4 you would download.
And you can read the counts out of the film yourself, in an empty directory. Node and ffmpeg, nothing else:
curl -L -o film.mp4 https://artwaste.land/strata/the-coefficient-nothing-forced/film.mp4
curl -L --create-dirs -o research/chemical-equations/film/beats.mjs \
https://artwaste.land/checks/research/chemical-equations/film/beats.mjs
curl -L --create-dirs -o research/chemical-equations/film/spine.mjs \
https://artwaste.land/checks/research/chemical-equations/film/spine.mjs
ffmpeg -i film.mp4 -map 0:a:0 -c:a pcm_s16le -ar 44100 audio.wav
node research/chemical-equations/film/beats.mjs audio.wav
beats.mjs is the detector. It is handed the audio and spine.mjs, which
says only where the cuts fall and where each row’s floor is, both readable off the picture.
It never sees an equation or a residual, and it prints, for every row of every scene, how many
atoms each side carries and how many beats a second that makes. It can tell you how many atoms went
missing; which side they went missing from is on the screen. The rest of the apparatus is
research/chemical-equations/film/derive.mjs,
research/chemical-equations/film/make-audio.mjs,
research/chemical-equations/film/film-facts.mjs and
research/chemical-equations/film/build.sh, all at /checks/.When one answer stops being the answer
Try O3 -> O2 + O, which is ozone falling apart and is written that way in the article on ozone. It balances. So does 2O3 -> O2 + 4O. So does 3O3 -> 4O2 + O. All three conserve every atom perfectly, and no law of conservation prefers any of them, because there is one element and three species and the nullspace is two dimensional.
The rule behind it is one line of linear algebra and it is exact: the nullity is at least the number of species minus the number of elements, because a matrix with e rows cannot have rank above e. So any equation with two more species than it has elements has more than one balance, always, whatever the chemistry is. School equations have one more species than elements almost by construction, which is why school balancing always has a single answer and why the exception is never mentioned.
The real cases are not curiosities. Glucose fermenting to acetic acid, C6H12O6 + 2H2O -> 2CH3COOH + 2CO2 + 4H2, has five species and three elements, and C6H12O6 + 4H2O -> CH3COOH + 4CO2 + 8H2 conserves carbon, hydrogen and oxygen just as exactly. One of them is what the organism does. Conservation is not what tells them apart, and the sense in which the textbook equation is the equation is a fact about biology, not about atoms.
Every chemical equation in English Wikipedia
English Wikipedia writes chemistry in mhchem, a markup a machine can read. The enwiki-20260901 dump was streamed in full, every <chem> span pulled out of every article, and each one put through the parser and the balancer above.
Three numbers, each with the denominator it came from. … spans of <chem> markup in … articles. … of them contain a reaction arrow and are equations rather than inline formulas. Of those, … (…%) resolve to definite element counts and a definite charge for every species, which is the only condition under which conservation has anything to say. The rest are refused, by design, and the refusals are the honest half of this page.
The distribution is the finding. … equations have their coefficients forced. …, which is …% of the decidable ones, have more than one balance. And … have none: no assignment of whole numbers to those species conserves everything, so the equation is not merely written wrong, it cannot be written right without changing which species appear.
What the charge row is doing
Conservation of mass is not the only conservation in the matrix. Electric charge is a row like any element, and it turns out to be doing a great deal of work. Balance these same equations on the elements alone and … of them (…%) have more than one answer. Add the charge row and that falls to …. Conservation of charge removes … ambiguities that conservation of matter leaves open, which is a quantitative version of something chemistry teaches only as a rule of thumb: when you cannot see why the coefficients are what they are, the reason is usually the electrons.
Predictions, written down first, and how badly they did
Before any equation was fetched, this study registered seven numbered predictions with intervals, on the principle that a study which cannot be surprised is not measuring anything. It was surprised. One of the seven landed inside its interval, and that one's directional claim was wrong anyway.
The worst of them is worth dwelling on, because it is the kind of error that reasoning alone does not correct. I predicted that fewer than 15% of <chem> spans would be equations at all, on the confident intuition that the markup is mostly used for inline formulas in running prose. It is …%. The intuition was not a weak one; it was simply about a thing I had never counted.
The equations that do not balance
The primary question this study registered before it collected anything was the plain one: of the equations that can be decided, how many are wrong as written? The machine's answer is … that do not conserve mass, which is …% of the decidable ones, plus … that conserve every atom and lose electric charge: … flags in all.
That number is not the answer, and publishing it as though it were would have been the easiest mistake available here. The hand pass below cuts it to … genuine defects, which is …% of decidable equations, in … articles. The registered primary outcome is the first number, because that is what was registered; the true one is the second, and the gap between them is what the control was for.
Machine flags are not findings. Every one of those equations was read by hand against its own article before anything was named here, because the markup that carries chemistry also carries things that are not chemistry, and no parser can tell that the U and N in U -> N are a protein's unfolded and native states rather than uranium and nitrogen. Of … flags read, … are genuine defects, … are cases where the article is right and this study's reading convention is narrower than its notation, and … are not chemical equations at all. So a third of what the machine flagged was the instrument's fault, and it took reading every one to find that out.
Two people marked all …, the second working blind from a sheet carrying the markup and the machine's reading but no marks. They agreed on … of them, …%. The one disagreement is published in full below with its adjudication, and the second reader was right: they had read the article and I had not.
What could not be read, and why that is a result
A parser that guesses would have produced a bigger census and a worthless one. This one refuses and names the token it choked on, so every equation that leaves the census leaves it for a reason that is counted. The reasons are the shape of how chemistry is actually written down.
More than half of the chemical equations on Wikipedia are not the kind of statement that conservation can be checked against at all, and that is not a defect in them. An equation with an R in it is a statement about a family of compounds. A decay chain is not conserving elements because elements are what it is changing. A scheme with three arrows is three equations wearing one coat. The instrument's refusals are a measurement of how much of the written record of chemistry is schematic rather than quantitative, and the answer is: most of it.
The query that would have been wrong by an order of magnitude
This study nearly defined its population with Wikipedia's own search index, which is the obvious way to do it. The query insource:"<chem>" reports … articles. The dump contains …. The gap is not a disagreement between two measurements of the same thing, it is one instrument answering a different question: that is a phrase search, and its tokenizer throws away the angle brackets, so it counts the word chem wherever it appears. The control that settles it is one line long. Searching for the bare word chem returns …, the identical number. Written as a regular expression, which respects the literal, the same index returns …, and agrees with the dump.
Nothing in the first query's output says any of this. It returns a large, confident, plausible number, and a study built on it would have reported a population ten times too big without ever seeing an error message. The reason this page can say so is that the two instruments were made to argue.
What this does not show
The mathematics here is not new and this page does not pretend it is. That a chemical equation is a nullspace problem is standard linear algebra, taught in some undergraduate courses; that nullity above one means infinitely many balances is stated plainly in the literature, and Zhang, Zhang, Zhao and Yang (2024) give the sharper frame this page's alternative balances are groping toward, which is that the valid balances form a positive affine monoid with a canonical Hilbert basis rather than a linear space with an arbitrary one. What appears to be new is only the count: how often it actually happens in a large body of written chemistry, which nobody seems to have measured.
Nor is the failure list a claim that Wikipedia is unreliable about chemistry. It is … defective equations in … articles out of the … that carry any chemistry markup at all, and the ones with a defect sit in quiet corners: the most-read article carrying any flag at all, defect or not, drew … views in the thirty days to …, which killed a registered prediction that at least one would be in an article read more than a hundred thousand times.
And the census reaches only what the markup exposes. Equations written as images, as {{chem2}} templates, in prose, or in the … <math chem> spans this census set aside are all outside it. The primary population was fixed in advance precisely so that a disappointing result in one markup could not be rescued by quietly adding another.
Corrections
2026-09-22. Two bugs in lib/chem.mjs, both found by reading the parser rather than the output, are fixed, and every figure on this page has been recomputed from the same spans. First, the rule meant to strip TeX spacing was written as a character class where an alternation was meant, so it cut the \u off \uparrow, the \d off \downarrow and the \q off \quad, and the mangled remainder was refused. Second, the rule that refuses a charge in the middle of a formula could be dodged by wrapping the sign in braces, so Ca(OH)2{+}CO2 in the article on carbonatation had been decided as a single charged species that does not exist. The effect: 8 equations the parser had refused are now decided and the carbonatation one is now refused, so decidable equations went from 678 to 685 and refusals from 865 to 858. None of the 677 equations decided both before and after changed its verdict (compare-verdicts.mjs). Seven of the eight balance; the eighth, S -> NP \quad VP in the article on phrase structure rules, is a sentence rule from linguistics, and it became the 35th flag. Both readers marked it not a chemical equation, the second one blind, so the confirmed defects stay at 20, now 2.92% of decidable equations rather than 2.95%. Mass failures went from 31 to 32 (4.57% to 4.67%), the non-unique share from 8.3% to 8.2% (56 equations either way), and the non-unique share on the elements alone from 21.1% to 20.9% (143 either way). The prediction scorecard still has one hit. Separately, a sentence in the section on limits said the most-read article carrying a defect drew the view count shown there; that article carries a notation flag, not a defect, and the sentence now says what the number is.