Normality to molarity calculator
2 N sulfuric acid, with both protons reacting, is 1 M: molarity is normality divided by the equivalents each mole contributes. Enter the normality from a label or procedure and the n-factor to get the molar concentration. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Normality
- 2
- Equivalents per mole
- 2
- Molarity
- 1
Normality and molarity both describe how much solute sits in a volume of solution, but they count different things. Molarity is moles of solute per liter of solution. Normality is chemical equivalents per liter, so the same bottle can show different N and M when the reaction uses more than one equivalent per formula unit. Converting between them is a single division: molarity equals normality divided by the number of equivalents per mole, often called the n-factor. Analytical chemists, titration labs, and chemistry students need that conversion when labels, SOPs, or homework still report strength as normal while modern reports and software expect molar concentration. This calculator accepts normality N in eq per L and the equivalents-per-mole n-factor, returns molarity with unit labels and the formula string for audit, and rejects a zero n-factor so a bad denominator never becomes Infinity or NaN.
How normality relates to molarity and why the n-factor cannot be zero
Start from the standard analytical bridge between the two concentration scales. Normality N counts reactive equivalents of solute per liter of solution. Molarity M counts moles of the same solute per liter.
The n-factor is how many equivalents one mole of that substance contributes in the reaction under study—one for monoprotic acids like HCl in simple neutralization, two for sulfuric acid when both protons participate, or the number of electrons transferred in a redox half-reaction. Algebraically the bridge is M equals N divided by n, or N equals M times n, so once you know normality and the correct n-factor you recover molar concentration with a single division.
The n-factor must be strictly non-zero: dividing by zero is undefined, and a zero equivalents-per-mole claim would mean the solute contributes no reactive units at all, which cannot define a conversion factor. Normality itself must be finite and non-negative; zero normality is a legitimate empty-solute limit that yields molarity zero, while a negative normality is rejected as non-physical. Negative n-factors are also rejected after the zero check because concentration conversion uses a positive count of equivalents per mole.
Where normality-to-molarity conversion shows up in real work
Secondary-school and introductory university chemistry courses still teach both concentration languages and assign drills that convert bottle labels from normal to molar before stoichiometry; a single trusted oracle speeds grading and demo setup without hand-waving floating-point noise. Analytical and quality-control labs modernize older SOPs and reagent certificates that list strength as N while LIMS, electronic notebooks, and instrument software expect mol per L. Process chemists and chemical engineers translate plant recipes written in normality into molar feed rates for mass-balance software that does not speak normal concentration.
Environmental and water-treatment notebooks convert historical acid or base capacity tables into molar units when models and sensors are calibrated in M. If you later need to compute normality from raw equivalents and liters of solution, molality from solvent mass, mole fraction, or automatic equivalent-weight conversion from grams of solute, treat those as separate search intents and landings rather than overloading this normality-to-molarity calculator page.
What you can do with it
Homework and lab answer keys
Convert normality N to molarity M = N / n with a known n-factor so students and auto-graders share one closed-form ground truth.
Modernize reagent labels
Translate older normal-strength acids, bases, or redox titrants into mol/L for LIMS, SOPs, and instrument methods that expect molar concentration.
Process and plant recipe conversion
Map normal feed strengths into molar concentrations for mass-balance models and control logic that do not use normality.
FAQ
How do you convert normality to molarity?
Divide normality by the n-factor: M = N / n, where N is eq/L and n is equivalents per mole. The result is molarity in mol/L.
What happens if equivalents per mole is zero?
Molarity divides by the n-factor, so zero equivalents per mole is rejected instead of returning Infinity or NaN.
What is the n-factor?
The n-factor is the number of chemical equivalents one mole of solute contributes in the reaction under study (for example 1 for HCl neutralization, 2 for fully reacting H2SO4).
How is this different from the normality calculator?
The normality calculator builds N from equivalents and volume. This tool starts from N and the n-factor and returns molarity M = N / n—a different search intent and landing.
What does it cost?
The browser tool is free and runs locally.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/chem/normality-to-molarity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"normality":2,"equivalents_per_mole":2}'const res = await fetch("https://api.kit.forhosting.com/chem/normality-to-molarity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"normality": 2,
"equivalents_per_mole": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/chem/normality-to-molarity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"normality": 2,
"equivalents_per_mole": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/chem/normality-to-molarity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"normality":2,"equivalents_per_mole":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"normality":2,"equivalents_per_mole":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/chem/normality-to-molarity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"normality": 2,
"equivalents_per_mole": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "chem.normality_to_molarity",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
How normality relates to molarity and why the n-factor cannot be zero
This capability treats an exact zero and values smaller than the floating-point cleaning threshold as invalid_input with a clear message rather than returning Infinity or NaN. The evaluation is closed-form deterministic floating-point arithmetic: no random seeds, no wall-clock timestamps, no network calls, and no model drift, so identical inputs always produce identical JSON. It does not invent n-factors from a chemical formula, convert grams of solid to normality, or recompute N from equivalents and volume; those are separate search intents with their own landings such as the normality calculator.
What you send and what you get back
Classic textbook checks include two-normal sulfuric acid with n equals two giving one-molar solution, half-normal monoprotic acid with n equals one giving half-molar, and zero normality with any positive n-factor giving molarity zero. Keep the n-factor consistent with the chemistry your report claims: if a polyprotic acid is only partially neutralized in your procedure, use the effective number of equivalents that participate, not a default from a table that assumes complete reaction. Send two required finite numbers under the fields normality and equivalents_per_mole. normality is the solution strength in equivalents per liter, often written as N, and must be greater than or equal to zero. equivalents_per_mole is the unitless n-factor for the reaction of interest and must be strictly greater than zero; zero fails because molarity divides by that factor, and negative values fail as non-physical. Missing fields, non-numeric strings, NaN, Infinity, negative normality, and a zero or negative n-factor fail with invalid_input and are not charged. On success the response echoes cleaned normality and equivalents_per_mole, provides molarity as the primary result in moles per liter, includes a units hint object naming eq per L, the unitless n-factor, and mol per L, sets method to normality_to_molarity, and formula to M equals N over n so homework write-ups can cite the same expression. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where normality-to-molarity conversion shows up in real work
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.