How the Calculations Work
You've got numbers to check, and the page shows the math. Every result in these peptide calculator formulas is arithmetic on the numbers you type. A phone propped against a mug is enough. The engine keeps values as exact fractions, so one third of a mL stays one third, and rounding happens only when a value is shown.
Definitions
A syringe unit is a volume mark, not the amount of substance you have. MedlinePlus: Giving an insulin injection (opens in a new tab) says standard U-100 insulin has 100 units in 1 mL. ADA: Overview of Insulin Concentration for School Nurses (opens in a new tab) says the syringe should match the vial concentration.
U-40 means 40 units per mL for that labeled product, and its label says to use a matching U-40 syringe DailyMed: veterinary U-40 insulin label (opens in a new tab). If you need help with barrel marks, see how to read an insulin syringe.
Mass and volume are different values, so keep them separate. NIST: Metric (SI) prefixes (opens in a new tab) shows that 1 mg is 1000 mcg, and 1 mL is 1000 microliters. WHO: Technical Report Series 932, Annex 2 (opens in a new tab) says an International Unit is an activity value set against a standard.
Label wording matters when you enter the numbers. FDA: strength on compounder and manufacturer labels (opens in a new tab) reports mix-ups when a per mL strength was mistaken for the total amount in the container. So this site treats strength per container and strength per mL as different fields.
Formulas
The engine uses one formula at each step. Concentration equals vial mg divided by liquid mL. Volume equals amount divided by concentration, and units equal volume times units per mL.
The reverse calculator solves for liquid instead. Liquid equals vial divided by amount, then multiplied by target units divided by units per mL. Conversions between units, mL, and mg go through the label concentration, which is the same idea used in the reconstitution calculator and the units to mg converter.
For blends, the engine takes each component amount in the vial and multiplies it by draw mL divided by total liquid mL. For run-out, it counts whole draws left from the remaining amount. It places those draws on the schedule you typed, using whole days so time zones do not shift the result.
Why exact fractions
JavaScript numbers are binary floating point values, so many decimals cannot be stored exactly. The ECMAScript specification: Number type (opens in a new tab) defines Number as IEEE 754 binary64.
That is why the engine uses exact fractions built from integers and rounds only for display. One third of a mL stays one third all the way through the math.
Rounding
Displayed values are rounded by display rules, not by the stored value. Units are shown to the syringe's printed line step, mL to 0.01, and mg to 3 or 4 places.
When the shown value differs from the exact value, the page marks it as about. If a result falls between two printed lines, the page says between and does not invent a fraction.
Warnings that ask you to check a number
This table lists cases where the page stops and asks you to look at an entry again. Read it as a set of checks on the numbers you typed, not as advice about what your number should be.
| Warning code | When it appears | Message the person sees |
|---|---|---|
OVER_SYRINGE | Draw is larger than the barrel (60 units on a 30 unit syringe) | That is 60 units. This syringe holds 30. It fits on a U-100 1 mL (100 units) syringe. Check your entries or pick a larger syringe. |
UNDER_ONE_UNIT | Draw is under one unit (0.4 units) | That is under 1 unit, less than one mark on this syringe. The syringe cannot show it. Check mg and mcg. |
OVER_VIAL | Amount is larger than the whole vial (20 mg from 10 mg) | That is more than the whole vial. Check mg and mcg. |
CONCENTRATION_TOO_HIGH | Strength above 100 mg/mL (150 mg/mL) | 150 mg/mL is unusually strong. Check the vial amount and the liquid added. |
CONCENTRATION_TOO_LOW | Strength below 0.01 mg/mL (0.005 mg/mL) | 0.005 mg/mL is unusually weak. Check the vial amount and the liquid added. |
UNIT_SWITCH | Mass unit changed from mg to mcg | You changed mg to mcg. 500 mcg is 0.5 mg. Is that the amount you mean? |
SYRINGE_TYPE_SWITCH | Syringe scale changed from U-100 to U-40 (0.1 mL) | The same 0.1 mL is 10 units on U-100 and 4 units on U-40. Which is printed on your syringe? |
OFF_BY_10X | New amount is 10 times the last one | This is 10 times higher than your last dose (500 mcg). Check mg and mcg and the decimal point. |
Test vectors
A vector is a worked arithmetic fixture with generic labels such as vial A. The table below is inserted from the same fixtures the tests use, and these vectors are example entries to show the math, not an amount to take.
The public table lists 20 cases. Each was worked out by hand as an exact fraction, and the engine's result equals that exact value in 20 of 20 cases.
Example entries to show the math, not an amount to take.
| Case | Vial (mg) | Liquid (mL) | Amount typed | Syringe (mL) | Exact units, by hand | Engine units |
|---|---|---|---|---|---|---|
| C01 | 5 | 2 | 250 mcg | 1 | 10 | 10 |
| C02 | 10 | 2 | 500 mcg | 0.5 | 10 | 10 |
| C03 | 2 | 1 | 100 mcg | 0.3 | 5 | 5 |
| C04 | 5 | 3 | 250 mcg | 1 | 15 | 15 |
| C05 | 10 | 3 | 500 mcg | 0.5 | 15 | 15 |
| C06 | 10 | 3 | 250 mcg | 0.3 | 15/2 | 7.5 |
| C07 | 15 | 2 | 500 mcg | 1 | 20/3 | 20/3 |
| C08 | 15 | 3 | 100 mcg | 0.3 | 2 | 2 |
| C09 | 30 | 1 | 100 mcg | 0.3 | 1/3 | 1/3 |
| C10 | 30 | 1 | 250 mcg | 1 | 5/6 | 5/6 |
| C11 | 15 | 1 | 100 mcg | 0.5 | 2/3 | 2/3 |
| C12 | 30 | 2 | 500 mcg | 0.3 | 10/3 | 10/3 |
| C13 | 10 | 1 | 2.5 mg | 0.3 | 25 | 25 |
| C14 | 10 | 1 | 2500 mcg | 0.3 | 25 | 25 |
| C15 | 5 | 1 | 2.5 mg | 0.3 | 50 | 50 |
| C16 | 2 | 1 | 2.5 mg | 1 | 125 | 125 |
| C17 | 2 | 3 | 250 mcg | 0.5 | 75/2 | 37.5 |
| C18 | 30 | 3 | 2.5 mg | 1 | 25 | 25 |
| C19 | 10 | 2 | 0.5 mg | 0.5 | 10 | 10 |
| C20 | 15 | 2 | 2.5 mg | 0.5 | 100/3 | 100/3 |
Exact results: 20 of 20.
Engine tests in the build run: {{ENGINE_TESTS_PASSED}} of {{ENGINE_TESTS_TOTAL}} passed, run on {{ENGINE_TEST_RUN_DATE}}.
13 vectors, generated by running the engine. Download: vectors.json and vectors.csv.
| Id | Case | Inputs | Outputs |
|---|---|---|---|
| V01 | Whole units, mg entered | vial: 10 mg; liquid: 2 mL; amount: 0.5 mg; syringe: U100_1 | mg per mL: 5; mL to draw: 0.1; units: 10; units shown: 10; nearest mark: none (marks not set); full doses in vial: 20 |
| V02 | Same amount entered in mcg | vial: 10 mg; liquid: 2 mL; amount: 500 mcg; syringe: U100_1 | mg per mL: 5; mL to draw: 0.1; units: 10; units shown: 10; nearest mark: none (marks not set); full doses in vial: 20 |
| V03 | Smaller barrel | vial: 5 mg; liquid: 1 mL; amount: 0.25 mg; syringe: U100_0.5 | mg per mL: 5; mL to draw: 0.05; units: 5; units shown: 5; nearest mark: none (marks not set); full doses in vial: 20 |
| V04 | Thirds stay exact (no float error) | vial: 10 mg; liquid: 3 mL; amount: 1 mg; syringe: U100_1 | mg per mL: 10/3; mL to draw: 0.3; units: 30; units shown: 30; nearest mark: none (marks not set); full doses in vial: 10 |
| V05 | Between two lines | vial: 10 mg; liquid: 3 mL; amount: 0.5 mg; syringe: U100_1 | mg per mL: 10/3; mL to draw: 0.15; units: 15; units shown: 15; nearest mark: none (marks not set); full doses in vial: 20 |
| V06 | U-40 syringe reads fewer units for the same mL | vial: 10 mg; liquid: 2 mL; amount: 0.5 mg; syringe: U40_1 | mg per mL: 5; mL to draw: 0.1; units: 4; units shown: 4; nearest mark: none (marks not set); full doses in vial: 20 |
| V07 | Over the barrel capacity | vial: 10 mg; liquid: 2 mL; amount: 3 mg; syringe: U100_0.3 | mg per mL: 5; mL to draw: 0.6; units: 60; units shown: 60; nearest mark: none (marks not set); full doses in vial: 3 Warnings: OVER_SYRINGE. |
| V08 | Under one unit | vial: 10 mg; liquid: 2 mL; amount: 0.02 mg; syringe: U100_1 | mg per mL: 5; mL to draw: 0.004; units: 0.4; units shown: 0.4; nearest mark: none (marks not set); full doses in vial: 500 Warnings: UNDER_ONE_UNIT. |
| V09 | More than the whole vial | vial: 10 mg; liquid: 2 mL; amount: 20 mg; syringe: U100_1 | mg per mL: 5; mL to draw: 4; units: 400; units shown: 400; nearest mark: none (marks not set); full doses in vial: 0 Warnings: OVER_SYRINGE, OVER_VIAL. |
| V10 | Units to mg from the label strength | units: 10; label strength: 5 mg/mL; syringe: U100_1 | mL: 0.1; mg: 0.5; mcg: 500 |
| V11 | mg to units from the label strength | amount: 0.5 mg; label strength: 5 mg/mL; syringe: U100_1 | units: 10; mL: 0.1 |
| V12 | Work backwards from the units you want to read | vial: 10 mg; amount: 0.5 mg; units to read: 10; syringe: U100_1 | liquid mL: 2; mg per mL: 5 |
| V13 | Liquid for a target strength | vial: 10 mg; strength: 5 mg/mL | liquid mL: 2 |
What the engine does not do
The engine does not suggest amounts, list substances, or load presets. You supply every number.
It runs in your browser, keeps values as exact fractions, and rounds only for display. If you're comparing tools, this page can help with what to check in any calculator.
Version and changes
This page matches the current engine version. Changes to formulas, warnings, and tests are listed in the changelog.
Engine version 0.1.0 (source hash d1ed52fb). Last test run: Oct 12, 2026, 156 of 156 tests passed. This line is written by the site build from a real run of the engine tests.
Report a math error
If you spot a math problem, send a report through the contact details on the site and include the numbers you typed and the result you saw. Corrections are dated in the corrections log.
You can try the live math in the Open the reconstitution calculator or inspect the fixtures in Download the test vectors (JSON).
Read this first. Math based on your entries. This page describes arithmetic on the numbers you type. It does not recommend an amount, a schedule or a product. Check every result against your label and talk to your prescriber or pharmacist. 18+.
Editorial review against cited sources. Last checked Oct 12, 2026.
Sources
- MedlinePlus: Giving an insulin injection (opens in a new tab), MedlinePlus, U.S. National Library of Medicine (NIH). Reviewed 07/21/2024.
- ADA: Overview of Insulin Concentration for School Nurses (opens in a new tab), American Diabetes Association. August 2022.
- DailyMed: veterinary U-40 insulin label (opens in a new tab), Merck Animal Health, FDA-approved veterinary label, hosted by DailyMed (U.S. National Library of Medicine). Revised 09/2026 (DailyMed effective 09/23/2026).
- NIST: Metric (SI) prefixes (opens in a new tab), National Institute of Standards and Technology (NIST). Page undated, read 10/12/2026.
- WHO: Technical Report Series 932, Annex 2 (opens in a new tab), World Health Organization. 2006 (text revised 2004).
- FDA: strength on compounder and manufacturer labels (opens in a new tab), U.S. Food and Drug Administration. Published 09/24/2018; updated 05/21/2024; content current as of 06/17/2024.
- ECMAScript specification: Number type (opens in a new tab), Ecma International TC39 (draft living standard). Living standard, read 10/12/2026.