Arithmetic, not instructions for useThis page covers the numbers and what approved labels say. It does not teach injection technique. Sterile handling and whether a product should be used at all are questions for a pharmacist or prescriber; most peptides sold online have no approved label.
How to reconstitute peptides: the five numbers
Reconstituting a peptide comes down to five numbers, worked out in this order:
- Vial amount. The mg printed on the label, for example 5 mg.
- Diluent. The liquid the product's label names. Approved products specify it; the two current tesamorelin products use different ones.[3][4]
- Volume. How much liquid goes in, for example 2 mL. For an approved product the label sets this too.
- Concentration. Vial mg ÷ mL: 5 ÷ 2 = 2.5 mg/mL, which is 25 mcg in each U-100 unit.
- Units for an amount. Amount ÷ concentration × 100: 250 mcg is 0.25 ÷ 2.5 × 100 = 10 units.
The reconstitution calculator runs steps 4 and 5 for any numbers, and the bac water page covers step 2 in detail.
How to mix peptides: what approved labels say
The only authoritative mixing instructions are those on approved labels, and they differ by product.
| Product | Liquid and volume | How the label says to mix | After mixing |
|---|---|---|---|
| Egrifta SV (tesamorelin 2 mg)[3] | 0.5 mL Sterile Water for Injection | Roll gently; do not shake | Use immediately |
| Egrifta WR (tesamorelin 11.6 mg)[4] | 1.3 mL Bacteriostatic Water for Injection | Swirl; do not shake | Discard 7 days after mixing |
| Vyleesi (bremelanotide)[5] | None: prefilled autoinjector | No mixing | Single use |
For peptides with no approved label, nobody has published tested instructions for diluent, mixing or stability. Bacteriostatic water's own label says it is only for dissolving drugs "according to instructions of the manufacturer of the drug".[6]
Peptide vial sizes on approved labels
Approved peptide products come in fixed vial sizes chosen with a fixed volume of liquid, so the concentration is known before anyone does any math.
| Product | Vial or container | Liquid | Concentration |
|---|---|---|---|
| Egrifta (original, 2010)[7] | 1 mg vial | Sterile water | 1 mg/mL |
| Egrifta SV[3] | 2 mg vial | 0.5 mL sterile water | 4 mg/mL |
| Egrifta WR[4] | 11.6 mg vial | 1.3 mL bacteriostatic water | 8 mg/mL (label) |
| Geref (discontinued 2008)[8] | 0.05 mg ampule; 0.5 mg and 1.0 mg vials | Not available (label not online) | — |
| Vyleesi[5] | 1.75 mg autoinjector | Prefilled, 0.3 mL | 5.83 mg/mL |
Products sold as "research use only" come in whatever sizes the seller chooses, with no labeled liquid volume. The chart below covers the common round sizes, and the peptide dosage calculator handles any size.
Peptide reconstitution chart
This chart gives the concentration and the micrograms in 10 units for common vial sizes and liquid volumes.
| Vial | 1 mL | 2 mL | 2.5 mL | 3 mL |
|---|---|---|---|---|
| 1 mg | 1 mg/mL · 100 mcg | 0.5 mg/mL · 50 mcg | 0.4 mg/mL · 40 mcg | 0.33 mg/mL · 33 mcg |
| 2 mg | 2 mg/mL · 200 mcg | 1 mg/mL · 100 mcg | 0.8 mg/mL · 80 mcg | 0.67 mg/mL · 67 mcg |
| 5 mg | 5 mg/mL · 500 mcg | 2.5 mg/mL · 250 mcg | 2 mg/mL · 200 mcg | 1.67 mg/mL · 167 mcg |
| 10 mg | 10 mg/mL · 1,000 mcg | 5 mg/mL · 500 mcg | 4 mg/mL · 400 mcg | 3.33 mg/mL · 333 mcg |
| 15 mg | 15 mg/mL · 1,500 mcg | 7.5 mg/mL · 750 mcg | 6 mg/mL · 600 mcg | 5 mg/mL · 500 mcg |
| 20 mg | 20 mg/mL · 2,000 mcg | 10 mg/mL · 1,000 mcg | 8 mg/mL · 800 mcg | 6.67 mg/mL · 667 mcg |
The four formulas
Every number on this site comes from four lines of arithmetic. Two facts make them work: one milligram is 1,000 micrograms,[2] and a U-100 insulin syringe holds 100 units per millilitre.[1]
Two more lines are the same algebra solved for a different unknown. One gives the amount in a syringe reading, the other the liquid needed for a chosen reading:
How to calculate peptide dosage: worked examples
Forward. 5 mg vial, 2 mL of liquid, 250 mcg wanted. C = 5 ÷ 2 = 2.5 mg/mL. V = 0.25 ÷ 2.5 = 0.1 mL. Units = 0.1 × 100 = 10 units. The vial covers 5 ÷ 0.25 = 20 such amounts.
Reverse. Same vial, 10 units drawn. 10 ÷ 100 × 2.5 = 0.25 mg (250 mcg).
Backwards for the liquid. To make 250 mcg read as 10 units from a 5 mg vial: 10 × 5 ÷ (0.25 × 100) = 2 mL.
The code that runs the calculator
This is the source of the calculator's math, read from the code file when the site is built, so it always matches what your browser runs. It has no dependencies and makes no network requests.
export const UNITS_PER_ML = 100;
export const SYRINGES = [
{ id: '30', ml: 0.3, units: 30, label: '0.3 mL · 30 units' },
{ id: '50', ml: 0.5, units: 50, label: '0.5 mL · 50 units' },
{ id: '100', ml: 1, units: 100, label: '1 mL · 100 units' },
];
function positive(n) {
return typeof n === 'number' && Number.isFinite(n) && n > 0;
}
export function nearestMark(units, syringeUnits) {
const step = syringeUnits >= 100 ? 2 : 1;
return Math.round(units / step) * step;
}
/**
* Reconstitution: powder vial (mg) + diluent (mL) -> how far to draw for a dose.
* @returns {{ok:true, concMgPerMl:number, mcgPerUnit:number, volumeMl:number, units:number,
* dosesPerVial:number, syringeUnits:number, fitsSyringe:boolean, tooSmall:boolean, markUnits:number}
* | {ok:false, error:string}}
*/
export function reconstitute({ vialMg, waterMl, doseMg, syringeUnits = 100 }) {
if (!positive(vialMg)) return { ok: false, error: 'vial' };
if (!positive(waterMl)) return { ok: false, error: 'water' };
if (!positive(doseMg)) return { ok: false, error: 'dose' };
if (doseMg > vialMg) return { ok: false, error: 'dose-exceeds-vial' };
const concMgPerMl = vialMg / waterMl;
const volumeMl = doseMg / concMgPerMl;
const units = volumeMl * UNITS_PER_ML;
return {
ok: true,
concMgPerMl,
mcgPerUnit: (concMgPerMl * 1000) / UNITS_PER_ML,
volumeMl,
units,
dosesPerVial: vialMg / doseMg,
syringeUnits,
fitsSyringe: units <= syringeUnits + 1e-9,
tooSmall: units < 2,
markUnits: nearestMark(units, syringeUnits),
marks: markBracket(units, syringeUnits),
};
}
/** Reverse: units drawn on a U-100 syringe -> mg delivered. */
export function unitsToMg({ vialMg, waterMl, units }) {
if (!positive(vialMg)) return { ok: false, error: 'vial' };
if (!positive(waterMl)) return { ok: false, error: 'water' };
if (!positive(units)) return { ok: false, error: 'units' };
const concMgPerMl = vialMg / waterMl;
const volumeMl = units / UNITS_PER_ML;
return { ok: true, concMgPerMl, volumeMl, mg: volumeMl * concMgPerMl };
}
/** How much diluent makes a dose land on a chosen number of units. */
export function waterForTargetUnits({ vialMg, doseMg, targetUnits }) {
if (!positive(vialMg)) return { ok: false, error: 'vial' };
if (!positive(doseMg)) return { ok: false, error: 'dose' };
if (!positive(targetUnits)) return { ok: false, error: 'units' };
return { ok: true, waterMl: (targetUnits * vialMg) / (doseMg * UNITS_PER_ML) };
}
Known answers it is tested against
An automated test suite checks the functions above before every deploy. The table is generated by those same functions when the page is built, so you can check each row with a pocket calculator.
| Vial + liquid | Amount | mg/mL | mL | Units |
|---|---|---|---|---|
| 5 mg + 2 mL | 100 mcg | 2.5 | 0.04 | 4 |
| 5 mg + 1 mL | 250 mcg | 5 | 0.05 | 5 |
| 10 mg + 2 mL | 2.5 mg | 5 | 0.5 | 50 |
| 2 mg + 0.5 mL | 1 mg | 4 | 0.25 | 25 |
| 10 mg + 3 mL | 500 mcg | 3.333 | 0.15 | 15 |
Rounding and warnings
The calculator rounds only what it displays, and it warns about readings that are too small, too large or impossible.
- Display rounding. Units show one decimal place, mL three, mg/mL three. The math itself is not rounded.
- Nearest mark. When a result falls between marks, the calculator names the nearest one: 1-unit marks on 30- and 50-unit syringes, 2-unit marks on 100-unit syringes. Check your own syringe, because markings vary.
- Too small to measure. Readings under 2 units trigger a warning, because a misread of one line is then a large share of the amount.
- Too big for the syringe. Readings above the selected syringe's capacity are flagged.
- Impossible inputs. Zero, negative or missing numbers, and amounts larger than the whole vial, return an error message instead of a number.
What the formulas cannot know
The formulas cannot know whether a vial holds what its label says.
Garbage in, garbage outThe math assumes the vial holds exactly what its label says and that the liquid volume is exact. Neither is checked by any regulator for products sold as "research use only". No formula can correct a mislabeled vial.
The calculator also cannot tell you whether an amount is safe or appropriate. It does not know what the substance is. See the safety page and the individual peptide pages for regulatory status and evidence.
Use the tools
- Peptide calculatorFormulas 1–4, live
- Units checkerThe reverse formula, live
- Reconstitution guideSolving for the liquid volume
Frequently asked questions
Is my data sent anywhere?
No. The calculator runs entirely in your browser. The only time numbers leave the page is if you copy the share link yourself, which puts them in the URL.
Why multiply by 100?
A U-100 syringe is marked with 100 units per millilitre, so millilitres × 100 = units. On a syringe marked U-40 the factor would be 40, and the numbers on this site would not apply.
Can I check the results without the website?
Yes. Every formula on this page works on paper or in any calculator. That is the point of publishing them.
Sources
- 510(k) clearance K233794, Insulin Syringe ("U-100 means there are 100 units of insulin in every mL")
- Metric (SI) prefixes
- Egrifta SV (tesamorelin) prescribing information
- Egrifta WR (tesamorelin) prescribing information
- Vyleesi (bremelanotide) prescribing information
- Bacteriostatic Water for Injection, USP (Hospira) label
- Egrifta (tesamorelin) prescribing information, original 2010 label
- Drugs@FDA: Geref (sermorelin acetate), NDA 020443