Resuspension calculator
10 mg of freeze-dried reagent aimed at 2 mg/mL needs 5 mL of diluent. Enter the dry mass, or a cell count, and the working concentration in matching units to get the volume to add in millilitres. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Mass
- 10
- Concentration
- 2
- Volume ml
- 5
Resuspending lyophilized reagents, freeze-dried antibodies, and pelleted cells is a daily laboratory step: you know the dry mass or cell count in the vial, you know the working concentration you want, and you need the diluent volume that makes those two numbers meet. This resuspension calculator divides mass by target concentration and returns that volume in milliliters, using consistent units such as milligrams with milligrams per milliliter, grams with grams per milliliter, or cells with cells per milliliter. Target concentration must be strictly positive; a zero or negative concentration is rejected as invalid input instead of producing Infinity.
What resuspension volume means and how the formula is applied
Resuspension asks a single laboratory question: given a known mass of lyophilized powder, freeze-dried reagent, or pelleted cells, how much diluent must you add to reach a chosen working concentration? The answer is the ratio of mass to target concentration, with units chosen so the quotient is milliliters. When mass is milligrams and concentration is milligrams per milliliter, volume is milliliters.
When mass is grams and concentration is grams per milliliter, volume is again milliliters. Here the starting material is dry or packed, so the diluent volume is the reconstitution volume itself. Because concentration sits in the denominator, a non-positive target is physically meaningless: zero would demand infinite volume, and a negative concentration is not a laboratory concentration.
Ten milligrams aimed at two milligrams per milliliter yields five milliliters; one million cells aimed at two hundred thousand cells per milliliter also yields five milliliters.
What you can do with it
Lyophilized antibody and peptide reconstitution
Enter vial milligrams and the desired milligrams-per-milliliter stock to get the buffer volume in milliliters before reconstituting a freeze-dried reagent.
Cell-pellet resuspension to a working density
Send cell count as mass and cells per milliliter as concentration to obtain the diluent volume that brings a pellet to the target density.
FAQ
How do I calculate the diluent volume to resuspend lyophilized material?
Send finite numbers mass (non-negative) and concentration (strictly positive) in consistent units.
What happens if the target concentration is zero or negative?
A zero concentration would imply infinite volume; a negative concentration is not a laboratory target. Those failures are not billed.
Which units should I use for mass and concentration?
Use a consistent pair so the quotient is milliliters: milligrams with milligrams per milliliter, grams with grams per milliliter, or cells with cells per milliliter. The engine does not convert mixed units.
Can I resuspend cells as well as lyophilized powder?
Yes. Treat cell count as mass and cells per milliliter as concentration.
Can I use it to dilute a stock solution?
No. It is meant for dry or packed material, where the diluent you add is the whole reconstitution volume. Diluting an existing liquid stock follows the C1V1 = C2V2 rule, and serial dilutions need a different tool.
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/resuspension \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mass":10,"concentration":2}'const res = await fetch("https://api.kit.forhosting.com/chem/resuspension", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mass": 10,
"concentration": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/chem/resuspension",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mass": 10,
"concentration": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/chem/resuspension", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mass":10,"concentration":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mass":10,"concentration":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/chem/resuspension", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"mass": 10,
"concentration": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "chem.resuspension",
"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
The same pure arithmetic powers the free browser tool and the prepaid API at $0.002 per successful call, so bench notes and automation scripts never disagree on a reconstitution volume.
What resuspension volume means and how the formula is applied
When the payload is a cell count and concentration is cells per milliliter, the same ratio is the resuspension volume in milliliters. This calculator implements that identity exactly: volume_ml equals mass divided by concentration. It is not a C1V1 equals C2V2 dilution of an existing liquid stock, and it is not a serial-dilution planner; those search intents belong to dilution tools. The engine therefore rejects those cases as invalid input instead of returning Infinity or a silent empty payload. Identical inputs always produce identical JSON because the path is pure arithmetic with no network, no random seed, and no wall clock, so laboratory notebooks, LIMS hooks, and homework checkers can pin expected volume_ml in tests without flaking across runtimes.
Input contract, consistent units, response shape, and error behaviour
Units are not converted inside the engine: you must send a consistent pair so the quotient is milliliters. Mixing milligrams with grams per milliliter is a caller mistake, not something this product silently repairs. Mass must be non-negative; a negative mass is rejected because a physical vial cannot hold a negative quantity. Concentration must be strictly positive; zero and negative targets fail with a message that target concentration is not positive, and those failures are not billed. POST a JSON body with two required finite numbers: mass, the non-negative quantity of lyophilized material or cells, and concentration, the strictly positive target after resuspension. Each field may arrive as a JSON number or as a numeric string; missing fields, empty strings, and non-finite values fail with invalid_input naming the field. Aliases amount, solute_mass, and mass_mg map to mass; aliases target_concentration, conc, and desired_concentration map to concentration. On success the body echoes mass and concentration, reports volume_ml as mass divided by concentration on a stable twelve-decimal grid, and includes a formula string V_mL equals mass over concentration plus method resuspension so downstream code can branch without sniffing shapes. Example: mass equals ten and concentration equals two yields volume_ml equals five. Pair the response with your own pipette table if you need microliters: multiply volume_ml by one thousand in the client. This endpoint does not emit plots, stepwise prose beyond the formula field, or a unit-conversion matrix; it solves the reconstitution volume only.
Where a resuspension calculator earns its keep in the lab and on the API
Antibody and peptide vials arrive lyophilized with a stated milligram content and a recommended milligrams-per-milliliter working stock; technicians need the buffer volume before the first pipette touch, and this resuspension calculator returns that milliliter figure without a spreadsheet. Cell-culture benches resuspend pellets to a target cells-per-milliliter density for counting, seeding, or cryostorage, and the same ratio applies when mass is a cell count. Failed validation does not consume balance. Quality groups pin reconstitution volumes in LIMS and tutoring platforms so a zero or negative target concentration is a hard invalid_input rather than an infinite cell in a notebook. Keep requests small, convert units before you call, pin the rounded volume_ml in tests, and you get reproducible reconstitution volumes for homework, LMS plugins, and edge workers without standing up a chemistry computer-algebra system of your own.
Integration use cases
LIMS and homework reconstitution checks
Pin volume_ml in laboratory notebooks and graders; zero or negative target concentration fails as invalid_input instead of Infinity.
Technical questions
What does the resuspension calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.