ForHosting KIT · Science

Dilution to target ppm calculator

To make 100 mL at 50 ppm from a 1000 ppm stock, measure 5 mL of stock and add 95 mL of diluent. Enter the two concentrations and the final volume to get both amounts and the dilution factor. 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
Stock
1,000
Target ppm
50
Final volume
100
You get
Stock volume
5
Diluent volume
95
Dilution factor
20
Equation
stock_ppm · stock_volume = target_ppm · final_volume

Conservation of solute mass gives the product identity stock ppm times stock volume equals target ppm times final volume, so the stock volume is final volume times the ratio of target ppm to stock ppm. This capability takes those three numbers, returns the stock volume and the complementary diluent volume with deterministic floating-point arithmetic, and rejects any request where the target concentration exceeds the stock—because dilution can only lower concentration, never raise it.

What stock ppm, target ppm, and final volume mean

The engine does not convert ppm to milligrams per liter, molarity, or percent, nor does it convert milliliters to liters—keep both concentration sides in ppm and both volume sides in one volume unit of your choice. Stock concentration must be strictly positive because a zero stock cannot supply solute. Target concentration must be non-negative and must not exceed stock concentration; a target equal to stock simply means you use the full final volume as stock with zero diluent.

Final volume must be strictly positive because a zero flask is not a physical preparation. Identical inputs always produce identical outputs because there is no network call, no model, no random seed, and no wall clock in the path. Classroom examples include how many milliliters of a one thousand ppm nitrate stock you need to prepare one hundred milliliters of a fifty ppm working solution, or how much ten thousand ppm disinfectant concentrate fills a five hundred milliliter bottle at two hundred ppm.

Lab and media-kitchen prep sheets

Technicians enter stock ppm, target ppm, and flask volume; the calculator returns milliliters of stock to pipette and diluent to add before bringing to volume.

Hydroponics and disinfectant dosing

Growers and facility staff dilute concentrated nutrient or sanitizer stocks to a labeled working ppm without re-deriving C1V1=C2V2 on every recipe change.

What happens if target ppm is higher than stock ppm?

Dilution cannot raise concentration; only a more concentrated stock or a different process can reach a higher target.

Do stock and final volumes use the same unit?

The engine does not convert volume units for you.

Is the dilution to target ppm calculator free?

The browser tool runs free on your device.

How is this different from a general M1V1=M2V2 solver?

This calculator always solves for stock volume from stock ppm, target ppm, and final volume, and explicitly rejects target above stock. A general dilution solver omits any one of four fields without a ppm-specific product promise.

Does it convert ppm to mg/L, molarity or litres?

No. Keep both concentrations in ppm of the same solute and both volumes in one unit of your choice. The stock volume comes back in the same unit you used for the final volume.

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/dilution-to-target-ppm

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/dilution-to-target-ppm \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"stock_ppm":1000,"target_ppm":50,"final_volume":100}'
{
  "stock_ppm": 1000,
  "target_ppm": 50,
  "final_volume": 100
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "chem.dilution_to_target_ppm",
  "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.

Preparing a working solution at a stated parts-per-million level almost always starts from a stronger stock: you measure a calculated aliquot of stock into a volumetric flask and fill to the mark with diluent. Hydroponics recipes, residual disinfectant prep sheets, environmental calibration standards, and teaching labs can pin the same JSON in tests without embedding a chemistry CAS.

What stock ppm, target ppm, and final volume mean

Write the preparation in consistent units: stock_ppm and target_ppm are both concentrations in parts per million of the same solute basis, and final_volume is the filled volume of the vessel you will bring to the mark. Send a JSON object with the three required fields as finite numbers or numeric strings; documented aliases such as stock, C1, target, final_ppm, V2, and target_volume are accepted so client code can speak laboratory English. Leaving a required field blank, sending non-finite values, or asking for a target above stock fails with invalid_input rather than guessing.

Reading stock volume, diluent volume, dilution factor, and checks

Validation failures such as target exceeding stock mention both concentrations so technicians can correct a swapped field without reading a stack trace. On success the response echoes stock_ppm, target_ppm, and final_volume, then reports stock_volume equal to final_volume times target_ppm divided by stock_ppm after stable rounding. diluent_volume is final_volume minus stock_volume so prep sheets can print both pipette volume and make-up solvent without a second calculation. dilution_factor is stock_ppm divided by target_ppm when the target is positive, or null when the target is zero so clients never divide by zero in their own UIs. The product field reports stock_ppm times stock_volume after the same rounding, equation restates the conservation identity, and check is true when both sides of the product match under that rounding so UI code can show a green consistency badge without reimplementing floating comparison. The method label is always dilution_to_target_ppm so downstream routers can branch without sniffing shapes. Use stock_volume alone when a form only needs the aliquot cell; use diluent_volume when a media kitchen prints solvent lines; use dilution_factor when a protocol labels a one-to-twenty dilution beside the absolute volumes. Zero or negative stock, negative target, and non-positive final volume also raise invalid_input and are not charged after the engine rejects the request.

API usage, pricing, lab workflows, and practical limits

Call the free in-browser dilution to target ppm calculator for homework checks, lecture demos, and quick bench prep without installing a spreadsheet formula library. Serial multi-stage dilutions are not modeled as a chain inside one call—run the identity once per stage—because each stage is still the same three-input stock-to-target relation. Authors shipping SDKs can map the three fields into labeled inputs Stock ppm, Target ppm, and Final volume with stock volume auto-filled—the same columns technicians write when they rearrange the dilution product identity by hand on paper. Send a JSON body with stock_ppm, target_ppm, and final_volume as numbers or numeric strings. Use the prepaid API when a LIMS integration, hydroponics dosing app, residual chlorine planner, calibration-standard generator, or inventory system needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with a general M1V1 equals M2V2 solver when you must solve for an arbitrary missing field instead of stock volume only, or with ppm to molarity helpers when the next step is converting the target into moles per liter.

Homework and LIMS integrations

Students and scripts verify stock-aliquot problems in ppm and pin structured JSON, with a clear error when target ppm exceeds the stock.

How do I calculate stock volume for a target ppm?

Send JSON with stock_ppm, target_ppm, and final_volume. The response returns stock_volume = final_volume × target_ppm / stock_ppm, plus diluent_volume and a product check.

Read the full KIT documentation →