vialfile

Reconstitution calculator

Vial mg + BAC water mL → insulin-syringe units. No login, no tracking, no ads. Just the math.

How the math works

  1. Concentration = vial mg ÷ BAC water mL (convert mg → mcg by ×1000).
  2. Dose volume = desired mcg ÷ concentration.
  3. Syringe units = dose volume mL × 100 (insulin syringes are universally marked 100 u = 1 mL, regardless of barrel size).

Worked example — 5 mg BPC-157 in 2 mL BAC, 250 mcg dose: concentration = 2500 mcg/mL → dose volume = 0.10 mL → draw to 10 u on a 1 mL insulin syringe.

Calculator FAQ

Why are insulin syringes marked "100 u"?

Because they were originally sized for U-100 insulin (100 units per mL). The 100-unit marking just means "1 mL." The same unit scale applies whether the barrel holds 0.3 mL (30 u), 0.5 mL (50 u), or 1.0 mL (100 u) — they're all marked in 1 u = 0.01 mL increments.

What if my draw ends up larger than the syringe?

Reconstitute with less BAC water (higher concentration) or use a larger-barrel syringe. The calculator will flag this case with a warning. Do NOT split one injection into two draws unless your protocol specifically calls for divided doses.

What if my draw is under 1 unit?

Dosing accuracy on an insulin syringe falls off below ~1 u (~0.01 mL). Reconstitute with more BAC water to lower the concentration, so your per-dose volume becomes a cleaner integer draw.

Is the peptide-preset list authoritative?

No. Presets show common starting setups seen in public protocol references. Always verify with your prescribing clinician — your vial size, potency, and target dose may differ.

What's the "Next bloodwork draw" line under the peptide context?

When you select a peptide that has an active bloodwork protocol configured on the bloodwork page, the calculator surfaces the next scheduled draw date and how many days out it is — mirroring the cadence math the bloodwork page uses (start date + cadence, rolling forward if you've missed one). If the draw is overdue, the line tints to match the danger styling from the bloodwork page. The reminder is read-only — it never writes to the bloodwork log. Hidden when no protocol exists for the selected peptide.

What's the "Estimated cost: $X.XX from inventory ledger" line under the result?

When you've recorded vials with a purchase price on the inventory page and you select a matching peptide preset, the calculator surfaces a per-injection cost estimate. The math: aggregate costUsd ÷ mgInVial across your non-empty vials with cost data to get an average $/mg rate, then multiply by the dose's mg. Vials without a price (costUsd = 0) are excluded — they'd skew the average. Empty vials are excluded too. The receipt is hidden when no preset is selected, when no priced vials exist for the selected peptide, or when the dose is not a positive number.

What's the "Last dose: 2 days ago — 250 mcg SC" line under the result?

When you select a peptide preset and your injection log has at least one past entry for that peptide, the calculator surfaces the most-recent matching entry as a one-line consistency check. The bucket: today for entries within the last 24 hours, yesterday for the day before, and N days ago beyond that — same day-floor math the rest of the app uses. Useful right before you confirm today's dose: if last time was 250 mcg and you've calculated 500 mcg this time, you'll catch the discrepancy without leaving the calculator. The aside is hidden when no preset is selected, when no past log entries exist for the selected peptide, or when the most-recent entry is malformed (unparseable timestamp, missing route, non-positive dose).

What's the "Stack target: 250 mcg (you're 20% over)" line under the result?

When you select a peptide that's an item on your active stack, the calculator compares the dose you've typed in against the stack-item's saved doseMcg. If they diverge by more than 10%, a one-line hint surfaces the stack target and the percent deviation — useful as a "did I mistype?" sanity check right before you draw. The threshold is strict (more than 10% — a 10%-or-less deviation hides the line) so the hint only appears when the gap is meaningful. Phrasing is informational, not a warning — you may be intentionally up- or down-titrating; the line is there to make the divergence visible, not to second-guess you. Hidden when no preset is selected, when the selected peptide isn't on the active stack, or when the stack-item has no saved dose.

What's the "Last effect: severity 3 — 5 days ago (headache)" line under the result?

When you select a peptide preset and your side-effect log has at least one past entry for that peptide, the calculator surfaces the most-recent matching entry as a one-line consequences cue. Pairs with the cost / last-dose / stack-target trio above to close the loop: the calculator answers "what to inject" and concurrently "what happened the last time I did". Same day-floor math as the last-dose aside — today within 24 hours, yesterday the day before, N days ago beyond. Severity is the integer 1..5 you logged on /sideeffects.html. If the last logged effect was severe and recent, you may want to titrate down or skip a dose. The aside is hidden when no preset is selected, when no past side-effect entries exist for the selected peptide, or when the most-recent entry is malformed (unparseable timestamp, non-integer or out-of-range severity, empty symptom).

What's the "Drawing this dose leaves ~X mg in the open vial" line under the result?

When you select a peptide preset and your inventory has an open (in-use) vial for that peptide, the calculator surfaces how much peptide will remain in that vial after this injection. Only open vials count — sealed vials haven't been reconstituted yet and empty vials carry no usable peptide. The remaining mg is computed as mgInVial − mgUsed from your inventory ledger; if you track multiple open vials for the same peptide their remainders are summed. If the dose is larger than what's left, the line switches to a warn-tinted "Drawing this dose would exhaust the open vial (X mg available)" — a prompt to open a new vial before your next injection. The cue is hidden when no preset is selected, when no open vials exist for the selected peptide, or when the open vial has no positive remaining mg.