ForHosting KIT · Science

PPM calculator

0.002 g of solute in 1000 g of solution is 2 ppm, or 2000 ppb. Enter the solute mass in grams and then either the solution mass or, for a dilute water sample, its volume in litres. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Solute mass
0.002
Solution mass
1,000
You get
Calculation mode
mass
Ppm
2
Ppb
2,000
Mass fraction
0.000002

Parts per million, written ppm, is a relative concentration scale that counts how many units of a solute sit inside one million equal units of the whole mixture. In analytical chemistry, environmental monitoring, water treatment, and food safety work, ppm is the everyday language for dilute impurities, residual solvents, dissolved ions, and regulated contaminants. Mass-based ppm is simply the solute mass divided by the total solution mass, then multiplied by one million; for dilute aqueous samples the same number is often read as milligrams of solute per litre of water. This calculator accepts a non-negative solute mass in grams and either a positive solution mass in grams or a positive solution volume in litres, returns ppm with companion fields such as parts per billion and mass percent or milligrams per litre, and rejects a zero total mass or volume so a bad denominator never becomes Infinity or NaN.

How parts per million is defined in mass and volume modes

Start from the mass definition used in textbooks and lab reports: parts per million on a mass basis equals the mass of solute divided by the mass of the entire solution, then multiplied by one million. Solute mass must be finite and non-negative: zero solute yields ppm zero, a legitimate empty-solute limit, while a negative mass is rejected as non-physical.

When you only know volume of a dilute aqueous sample, laboratories commonly treat one ppm as one milligram of solute per litre of water, which follows from density approximately one gram per millilitre. In that volume mode the calculator converts grams of solute to milligrams by multiplying by one thousand and divides by litres of solution, returning the same numeric value as mg per L under the dilute-water approximation. Dense brines, non-aqueous solvents, and gas-phase ppm require density or mole-fraction paths that are deliberately out of scope here.

Exactly one of solution mass or solution volume must be supplied; sending both or neither fails validation so callers cannot mix incompatible definitions by accident.

Where ppm calculators show up in real work

Secondary-school and introductory university chemistry courses assign concentration drills that convert milligrams of impurity into parts per million inside a known mass of solution; a single trusted oracle speeds grading without hand-waving floating-point noise. Environmental labs and drinking-water programs report dissolved metals, nitrate, and residual chlorine against regulatory ppm or mg per L limits and need a transparent mass-to-ppm conversion for chain-of-custody notes. Food, beverage, and pharmaceutical quality teams track residual solvents, preservatives, and heavy metals on a ppm scale that auditors can recompute from weighed masses.

Process chemists and water-treatment operators convert feed-mass measurements into target ppm setpoints for dosing pumps and membrane-reject streams. If you later need molality from moles and solvent kilograms, molarity from volume, mole fraction, automatic density correction for non-aqueous solvents, or inversion from a target ppm back to required solute mass, treat those as separate search intents and landings rather than overloading this ppm calculator page.

Drinking-water and environmental reports

Convert milligrams of analyte in a litre of dilute aqueous sample into ppm ≈ mg/L for regulatory tables and chain-of-custody notes.

QC residual and impurity tracking

Document residual solvent or metal impurity loadings in ppm from batch mass measurements for food, pharma, and process quality systems.

What is ppm concentration?

Parts per million (ppm) is a relative concentration. On a mass basis, ppm = (mass of solute / mass of solution) × 1,000,000. For dilute water samples, 1 ppm is often read as 1 mg of solute per litre.

What happens if solution mass is zero?

PPM divides by total solution mass (or volume), so zero or negative totals are rejected instead of returning Infinity or NaN.

What units should I use?

Solute mass and solution mass are in grams (same mass unit). Solution volume is in litres. In volume mode the calculator treats grams of solute per litre as mg/L after multiplying by 1000.

What does it cost?

The browser tool is free and runs locally.

Can I use the solution volume instead of its mass?

Yes. Enter litres instead of grams and the tool counts 1 ppm as 1 mg of solute per litre. That shortcut holds for dilute water with a density near 1 g/mL; dense brines, non-water solvents and gases are outside its scope.

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.

POSThttps://api.kit.forhosting.com/chem/ppm-concentration

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.

curl -X POST https://api.kit.forhosting.com/chem/ppm-concentration \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"solute_mass":0.002}'
{
  "solute_mass": 0.002
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "chem.ppm_concentration",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

How parts per million is defined in mass and volume modes

Write ppm equals m_solute over m_solution times one times ten to the six, keep both masses in the same unit, and you obtain a dimensionless ratio that people still label ppm for readability. Zero total solution mass is undefined because the ratio divides by that mass, so the calculator rejects zero and negative solution mass with a clear invalid_input message rather than returning Infinity. The entire pipeline is 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.

What you send and what you get back

The chosen denominator must be strictly greater than zero; zero and negative totals fail because ppm divides by that quantity. Classic textbook checks include two milligrams of solute in one thousand grams of solution giving two ppm, half a gram of salt in five hundred grams of brine giving one thousand ppm, and one milligram of ion in one litre of water giving one ppm under the aqueous volume convention. Send a required finite number under the field solute_mass in grams, then supply exactly one denominator: solution_mass in grams for true mass-based ppm, or solution_volume in litres for the dilute aqueous milligrams-per-litre approximation. solute_mass must be greater than or equal to zero. Missing fields, non-numeric strings, NaN, Infinity, negative solute mass, both denominators together, and neither denominator fail with invalid_input and are not charged. On success in mass mode the response sets mode to mass, echoes cleaned solute_mass and solution_mass, provides ppm as the primary result, adds ppb as ppm times one thousand, mass_fraction as the raw ratio, mass_percent as that ratio times one hundred, a units hint object, method ppm_from_solute_and_solution_mass, and formula ppm equals m_solute over m_solution times one e six. On success in volume mode the response sets mode to volume, echoes solute_mass and solution_volume, provides ppm and mg_per_L as the same dilute-aqueous number, adds ppb, units, method ppm_from_solute_mass_and_solution_volume, and the mg per L formula string. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.

Where ppm calculators show 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.

Homework and lab answer keys

Compute mass-based ppm = (m_solute / m_solution) × 1e6 from weighed solute and solution so students and auto-graders share one closed-form ground truth.

Should I use solution mass or solution volume?

Use solution_mass for true mass/mass ppm when both weights are known. Use solution_volume only for the dilute aqueous approximation where ppm ≈ mg/L. Provide exactly one of the two fields.

Read the full KIT documentation →