Calculate This Body · Testosterone
Module · Body

Testosterone
Dosage

Turn a prescribed dose into millilitres and syringe units. Handles ester weight, shows how much actual testosterone you're getting, and models how much your levels swing between shots. This converts a dose your prescriber gave you - it doesn't tell you what to take.

See the math behind this calculator
U-100 syringe
1 mL = 100 units

Cypionate is
69.9% testosterone

Steady state at
~5 half-lives
Your prescription
Ester

Half-life is editable because published figures disagree - cypionate is reported anywhere from 7 to 9 days. Changing it only affects the swing estimate, not your dose.

Schedule
Draw per injection 0.25 mL
On a U-100 insulin syringe
025 units100
Per injection-
Actual testosterone-
Time to steady state-
One vial lasts-
Peak-to-trough swing by frequency

The arithmetic

Nearly every dosing mistake with injectable testosterone comes from one of three places - confusing millilitres with syringe units, forgetting the ester has weight, or not realising how much levels swing between shots.

The core conversion is simple. Divide your weekly dose by how many injections you do that week to get milligrams per shot, then divide by the concentration on the vial to get millilitres.

mL per shot = (mg per week ÷ shots per week) ÷ mg per mL

At 100 mg a week of 200 mg/mL cypionate split into two shots, that's 50 mg per shot, which is 0.25 mL, which is 25 units on an insulin syringe. The calculator does this and the three other things that are easy to get wrong.

Why the ester changes the number

Injectable testosterone isn't pure testosterone. It's testosterone with a fatty acid chain attached, which makes it oil-soluble and slows absorption from the injection site. That chain has mass, and the milligram figure on the vial covers the whole molecule.

EsterMolecular weightTestosterone100 mg gives
Propionate344.4983.7%83.7 mg
Enanthate400.5972.0%72.0 mg
Cypionate412.6169.9%69.9 mg
Undecanoate456.7063.2%63.2 mg

Testosterone itself has a molecular weight of 288.42, so each percentage above is just 288.42 divided by the ester's molecular weight. This is why switching esters at the same milligram dose doesn't deliver the same amount of hormone - moving from 100 mg of cypionate to 100 mg of propionate is roughly a 20% increase in actual testosterone.

Why frequency matters more than people expect

Testosterone clears on an exponential curve. Between injections your level rises to a peak, then falls to a trough right before the next shot. How far it falls depends entirely on how the gap between shots compares to the ester's half-life.

Inject at intervals much shorter than the half-life and the swing is small. Inject at intervals near or beyond the half-life and you get a sawtooth - supraphysiological for a couple of days, then dropping off before the next dose. That's the mechanism behind people reporting they feel good early in the week and flat by the end of it.

The calculator shows this as a peak-to-trough percentage for every common schedule at once, so you can see what changing frequency would actually do. Note it deliberately doesn't estimate your serum level in ng/dL. Doing that honestly needs your volume of distribution and absorption rate, which nobody knows without bloodwork, and any calculator that gives you a confident ng/dL number is guessing.

Testosterone dosage questions

Why doesn't this recommend a dose?

Because a safe dose depends on your bloodwork, symptoms, haematocrit, age, and what your prescriber is targeting - none of which a web page can see. Dose is something you enter here, not something you get out. Anything that tells you what to inject based on a form is selling something.

What's a U-100 syringe and why do people use them?

It's an insulin syringe calibrated so 100 units equals 1 mL. TRT volumes are usually small - often a quarter of a millilitre - and that's hard to measure accurately on a 3 mL syringe where it barely clears the first mark. On an insulin syringe the same dose is 25 clearly numbered units.

Does splitting my weekly dose change how much I'm taking?

No. The weekly total is identical. What changes is the shape of the curve - more frequent, smaller injections mean a lower peak and a higher trough, so your level stays in a narrower band. The calculator's swing table shows exactly how much narrower.

Why is the half-life editable?

Because the published figures genuinely disagree. Cypionate is cited between about 7 and 9 days, enanthate anywhere from 4.5 to 8, and undecanoate from about 20 to 36. Rather than pick one and present it as fact, the default is editable so you can model whichever figure your clinician uses. It only affects the swing estimate - your millilitres don't change.

How long does a vial last?

Multiply the vial size by its concentration to get total milligrams, then divide by your weekly dose. A 10 mL vial at 200 mg/mL holds 2,000 mg, which is 20 weeks at 100 mg a week. The calculator shows this, though bear in mind most manufacturers specify discarding a multi-dose vial a set period after first puncture regardless of what's left.

Does this work for gel, patches, or pellets?

No. This models intramuscular and subcutaneous oil injections only. Transdermal gels have daily application and absorption rates in a completely different range, and pellets release over months on a curve this model doesn't describe.

Show the working

Every figure this page gives you comes from the formulas below, with your own numbers filled in as you type. If any of it looks wrong, it might be - check it against your prescriber and tell us what we got wrong.

Volume per injection mL = (mg per week ÷ shots per week) ÷ mg per mL
Syringe units (U-100) units = mL × 100
Actual testosterone delivered mg testosterone = mg ester × (288.42 ÷ ester molecular weight)
Peak-to-trough swing at steady state λ = ln(2) ÷ half-life trough ÷ peak = e^(−λ × days between shots) swing = (1 − trough÷peak) ÷ (trough÷peak) × 100
Time to steady state days = half-life × 5
Vial duration weeks = (vial mL × mg per mL) ÷ mg per week

Constants used

  • 288.42 — molecular weight of testosterone, g/mol
  • 344.49 / 400.59 / 412.61 / 456.70 — molecular weights of propionate, enanthate, cypionate and undecanoate
  • 100 units = 1 mL — U-100 insulin syringe calibration
  • 5 half-lives — conventional approximation for reaching ~97% of steady state
  • Half-life — not a constant here. It's your input, because published values disagree

Note what's deliberately absent. There's no serum level in ng/dL, because converting a dose to a blood concentration needs your volume of distribution and absorption rate, and nobody knows those without bloodwork. Any calculator that hands you a confident ng/dL figure is guessing at it.

The sources

Two different kinds of number are on this page. The molecular weights are fixed physical constants and can be checked directly. The half-lives are not - published values disagree, which is why this page makes half-life an input rather than burying a figure in the code.

  1. Testosterone Cypionate Injection USP - FDA label via DailyMed, National Library of Medicine. The manufacturer's own label. Gives the 412.61 g/mol molecular weight this page uses for cypionate, an intramuscular half-life of about eight days, and the two-to-four week dosing interval.
  2. Testosterone - PubChem, National Center for Biotechnology Information. The 288.42 g/mol base molecular weight, which is what every ester-weight conversion on this page divides back down to.
  3. Testosterone enanthate - PubChem, NCBI. 400.59 g/mol. The propionate and undecanoate weights come from the equivalent PubChem records.
  4. Humulin R U-100 label - DailyMed, National Library of Medicine. The U-100 syringe standard of 100 units per mL that the syringe-unit output depends on, and the warning that using the wrong syringe is a dosing error.

The five-half-lives-to-steady-state figure is a standard pharmacokinetic approximation rather than a property of testosterone specifically - after five half-lives a drug given at a constant interval has reached about 97% of its steady-state level. It is arithmetic on whatever half-life you enter, so if your half-life is wrong the steady-state date is wrong by the same proportion.