Peptide Dose Tracker

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 codeWhen it appearsMessage the person sees
OVER_SYRINGEDraw 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_UNITDraw 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_VIALAmount is larger than the whole vial (20 mg from 10 mg)That is more than the whole vial. Check mg and mcg.
CONCENTRATION_TOO_HIGHStrength above 100 mg/mL (150 mg/mL)150 mg/mL is unusually strong. Check the vial amount and the liquid added.
CONCENTRATION_TOO_LOWStrength 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_SWITCHMass unit changed from mg to mcgYou changed mg to mcg. 500 mcg is 0.5 mg. Is that the amount you mean?
SYRINGE_TYPE_SWITCHSyringe 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_10XNew amount is 10 times the last oneThis 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.

CaseVial (mg)Liquid (mL)Amount typedSyringe (mL)Exact units, by handEngine units
C0152250 mcg11010
C02102500 mcg0.51010
C0321100 mcg0.355
C0453250 mcg11515
C05103500 mcg0.51515
C06103250 mcg0.315/27.5
C07152500 mcg120/320/3
C08153100 mcg0.322
C09301100 mcg0.31/31/3
C10301250 mcg15/65/6
C11151100 mcg0.52/32/3
C12302500 mcg0.310/310/3
C131012.5 mg0.32525
C141012500 mcg0.32525
C15512.5 mg0.35050
C16212.5 mg1125125
C1723250 mcg0.575/237.5
C183032.5 mg12525
C191020.5 mg0.51010
C201522.5 mg0.5100/3100/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.

IdCaseInputsOutputs
V01Whole units, mg enteredvial: 10 mg; liquid: 2 mL; amount: 0.5 mg; syringe: U100_1mg per mL: 5; mL to draw: 0.1; units: 10; units shown: 10; nearest mark: none (marks not set); full doses in vial: 20
V02Same amount entered in mcgvial: 10 mg; liquid: 2 mL; amount: 500 mcg; syringe: U100_1mg per mL: 5; mL to draw: 0.1; units: 10; units shown: 10; nearest mark: none (marks not set); full doses in vial: 20
V03Smaller barrelvial: 5 mg; liquid: 1 mL; amount: 0.25 mg; syringe: U100_0.5mg per mL: 5; mL to draw: 0.05; units: 5; units shown: 5; nearest mark: none (marks not set); full doses in vial: 20
V04Thirds stay exact (no float error)vial: 10 mg; liquid: 3 mL; amount: 1 mg; syringe: U100_1mg 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
V05Between two linesvial: 10 mg; liquid: 3 mL; amount: 0.5 mg; syringe: U100_1mg 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
V06U-40 syringe reads fewer units for the same mLvial: 10 mg; liquid: 2 mL; amount: 0.5 mg; syringe: U40_1mg per mL: 5; mL to draw: 0.1; units: 4; units shown: 4; nearest mark: none (marks not set); full doses in vial: 20
V07Over the barrel capacityvial: 10 mg; liquid: 2 mL; amount: 3 mg; syringe: U100_0.3mg 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.
V08Under one unitvial: 10 mg; liquid: 2 mL; amount: 0.02 mg; syringe: U100_1mg 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.
V09More than the whole vialvial: 10 mg; liquid: 2 mL; amount: 20 mg; syringe: U100_1mg 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.
V10Units to mg from the label strengthunits: 10; label strength: 5 mg/mL; syringe: U100_1mL: 0.1; mg: 0.5; mcg: 500
V11mg to units from the label strengthamount: 0.5 mg; label strength: 5 mg/mL; syringe: U100_1units: 10; mL: 0.1
V12Work backwards from the units you want to readvial: 10 mg; amount: 0.5 mg; units to read: 10; syringe: U100_1liquid mL: 2; mg per mL: 5
V13Liquid for a target strengthvial: 10 mg; strength: 5 mg/mLliquid 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