Method. Rather than special-casing "strong acid vs weak base" and so on, the simulation solves one general charge-balance equation for [H⁺] at every volume added, built from whichever species are actually present. This is the same systematic-equilibrium approach used in quantitative analytical chemistry, and it reduces to the familiar textbook formulas automatically — a strong acid/strong base pair gives the simple sharp jump, a weak acid with strong base gives a buffered region with the equivalence point above pH 7, and so on — without those cases being coded separately.
Constants used (25 °C). Kw = 1.0×10⁻¹⁴; ethanoic acid Ka = 1.74×10⁻⁵ (pKa = 4.76); ammonia Kb = 1.8×10⁻⁵ (pKa of NH₄⁺ = 9.25). Sulfuric acid's first proton is treated as fully dissociated (strong); its second (HSO₄⁻ ⇌ H⁺ + SO₄²⁻) is modelled as a genuine weak equilibrium with Ka2 = 1.2×10⁻² rather than assumed complete — real enough that concentrated H₂SO₄ shows a little buffering near pH 2 that a "both protons strong" model would miss.
Titre. The titre is defined stoichiometrically — the volume at which moles of acidic H⁺ equivalents added equal the moles of basic OH⁻ equivalents (or vice versa) initially in the flask, using 2 equivalents per mole for H₂SO₄ and 1 for everything else. If you pick two acids (or two bases) for both vessels there's no real neutralisation, so this "titre" just marks where equal equivalents have mixed — the curve stays gentle throughout, which is itself the point: only a genuine acid + base pair produces a sharp end-point.
The x-axis is a fixed 0–50 cm³, matching a standard burette's capacity, regardless of what's chosen. Raising or lowering a concentration doesn't rescale the graph — it slides the steep jump left or right along that fixed scale, exactly like it would on paper using a real burette. If your choices push the titre past 50 cm³, the stats panel flags it: that burette would run dry before reaching equivalence.
Simplifications. Activity coefficients are ignored (concentrations are treated as activities, fine at school-lab dilutions); temperature is fixed at 25 °C; the "jump per drop" reading uses a 0.05 cm³ drop regardless of the volumes chosen.