# Aggregate test statistics across the DIY / gray-market testing ecosystem

**Phase:** Round 2 deep dive (partial closure of `gaps.md` item 10)
**Last updated:** 2026-04-23
**Scope:** Community + paid testing services publishing any public data on DIY HRT, peptides, and gray-market anabolics.

---

## Key takeaways

- **Every number in this document is a lower bound on problems and an upper bound on quality.** Vendors who expect to fail don't submit samples. Customers test vendors they already trust, or vendors someone has a reason to expose. Neither bias can be corrected with public data.
- **HRT has essentially no statistical dataset.** The two public HRT-specific registries combined (testing.trans.diy + Trans Harm Reduction) hold **~18 unique published tests** spanning 2022-08 → 2026-04. That is not a distribution. It is an anecdote archive.
- **Peptides (Finnrick, n = 6,813 / 204 vendors / 15 products) are the only slice with enough volume to quote aggregate numbers.** Finnrick's editorial line is "roughly one in three fail basic expectations" across 7,000+ samples. Across 722 graded vendor-product pairs on Finnrick today, **~41% are rated D, E, or F** (Poor / Bad / Fraud). Only **~32% sit at A or B** (Good or Great). This is vendor-product-pair arithmetic, not sample arithmetic, and it excludes unrated pairs with <2 tests.
- **Janoshik's internal number** (quoted in a Peptide Protocol Wiki review, not published by Janoshik itself) is **~43% of peptides failed label purity claims in 2024** on their line. Consistent order of magnitude with Finnrick, different denominator, unverifiable.
- **The HRT gray-market failure rate is genuinely unknown.** In the 18-test HRT corpus, 16 tests are clean PASS, 1 is conditional (Swiss Pure testosterone cypionate with wrong-ester contamination, 2023-03), 1 is FAIL (Zelda estradiol enanthate with visible fibers, 2025-09). That is an 89% pass rate on a self-selected sample of vendors someone already thought worth testing.

---

## Caveats first — not last

### Publication bias (in the vendor's direction)

Vendors pay for testing — or let customers pay — to publish a COA as marketing. **A failing in-house test rarely gets uploaded.** Janoshik and Finnrick both require vendor consent to publish under the vendor's public page; free-tier Finnrick requires a submitter but publishes vendor-attributed; Janoshik publishes on public.janoshik.com only what has been opted-in. A vendor who burns a batch internally after a bad test is invisible in this data.

Finnrick's **free-tier model partly breaks this** because anyone can ship in a vial and the result gets published whether or not the vendor likes it. But even there, submitters are **customers who bought product** — the population is curated by customer purchase decisions, which are themselves informed by prior reputational signals. The free-tier data therefore over-represents vendors with existing distribution and customer bases, and under-represents fly-by-night operators whose customers are unlikely to spend $20 shipping a vial to Austin.

### Self-selection (in both directions)

Customers pay to test vendors when they have a hypothesis:
- **"I think this vendor is good and I want to confirm"** → result is usually PASS, inflates apparent quality.
- **"I think this vendor is sketchy and I want to catch them"** → result is sometimes FAIL, inflates apparent failure rate.

The middle of the distribution — mediocre vendors no one cares enough about to test — is systematically under-sampled. Headline pass/fail numbers reflect the tails.

### Small-n for HRT specifically

- `testing.trans.diy/results`: **4 tests** as of 2026-04-23 (site self-reports v0.1, LAST UPDATED APR 21, 2026).
- `transharmreduction.org/hrt-testing`: **16 tests** as of 2026-04-23 (June 2022 → January 2026).
- Overlap: 2 tests appear on both sites (Astrovials 2023-08-31, Open Gate Labs 2025-01-03).
- **Combined unique HRT tests in the public community registries: 18.**

There is no path from 18 tests to meaningful statistical power on anything — per-vendor, per-ester, per-geography, or per-year. Everything below that treats HRT numerically is directional, not inferential.

### Forum-reported results are unverifiable

r/TransDIY, r/Estrogel, r/steroids, and related subreddits publish qualitative narrative threads about community test results. Some include uploaded Janoshik/Finnrick PDFs with verifiable certificate IDs (higher trust). Most are narrative ("got my bloods back, levels look normal for 4 mg/week, probably real"), which does not verify vial contents. This document does not tabulate forum threads beyond noting their narrative nature.

### Historical ≠ current

A vendor who failed a 2022 batch is not the same vendor in 2026. Brewers rotate raws suppliers, change cosolvent ratios, and replace operators. Even Finnrick's per-vendor grades require minimum 2 tests to lock in a letter; the site explicitly marks single-test cases "X Unrated" and <6-test cases as "tentative."

### Aggregate stats presented below are lower bounds on problems and upper bounds on quality

Repeating because this is the single most important caveat. Every failure rate cited is a **floor** on the real prevalence in the gray-market ecosystem, and every pass rate is a **ceiling**. The true numbers depend on what fraction of the actual gray market gets tested at all — which is unknown and probably <10% of vials produced.

---

## Data sources used

| Source | Scope | n (sample) | n (vendor) | Notes |
|---|---|---|---|---|
| testing.trans.diy/results | HRT (EEn only) | 4 | 3 | v0.1, site self-reports last update 2026-04-21. Aggregator, not lab. |
| transharmreduction.org/hrt-testing | HRT (E esters + 1 T cyp) | 16 | 13 | Donation-funded, batch cadence. GC-MS. |
| finnrick.com | 15 peptides | 6,813 | 204 | Aggregator over 7 partner labs. Free tier + paid add-ons. |
| public.janoshik.com | Steroids, peptides, SARMs | >tens of thousands (est.) | — | Individual COA index; no aggregate stats published. |
| Peptide Protocol Wiki Janoshik review | Meta-commentary | — | — | Cites "~43% failed purity in 2024" — C4 second-hand. |
| r/TransDIY, r/Estrogel, r/steroids, r/saferpeptides | Narrative | — | — | Not tabulated; sanity check only. |
| diyhrt.market, diyhrt.wiki, hrt.fm | Vendor directories | — | >30 | Ratings not numeric failure rates; not pass/fail data. |
| peppal.app, subqprotocol.com, thepeptidelist.substack | Review aggregators | — | — | Re-package Finnrick / Janoshik data. Secondary, not primary. |

Primary datasets used numerically below: **testing.trans.diy (n=4)**, **Trans Harm Reduction (n=16)**, and **Finnrick (n=6,813)**. Everything else is context.

---

## 4.1 testing.trans.diy — re-verified 2026-04-23

**Claim:** As of 2026-04-23, testing.trans.diy publishes exactly 4 tests, all Estradiol Enanthate 40 mg/mL, all PASS.
- **Confidence:** C1
- **Source:** https://testing.trans.diy/results (fetched 2026-04-22 via scrape tool; re-attempted fetch 2026-04-23 returned 403 live, consistent with anti-bot; prior scrape remains current — site footer reads "LAST UPDATED APR 21, 2026 v0.1").
- **Date checked:** 2026-04-23

| # | Supplier | Lab | Expected | Actual | Assay | Result | Date |
|---|---|---|---|---|---|---|---|
| 1 | Open Gate Labs | Artemis Analytical | 40 mg/mL | 42.07 | 105.18% | PASS | 2026-04-21 |
| 2 | Symphony Labs | Artemis Analytical | 40 mg/mL | 40.31 | 100.78% | PASS | 2026-04-21 |
| 3 | Open Gate Labs | Trans Harm Reduction | 40 mg/mL | 38.20 | 95.50% | PASS | 2025-01-03 |
| 4 | Astrovials | Trans Harm Reduction | 40 mg/mL | 38.76 | 96.90% | PASS | 2023-08-31 |

- Pass rate (potency within ±10%): 4/4 = 100%
- Pass rate (identity — implicit, no orthogonal ID reported): 4/4 = 100%
- Labs contributing: Artemis Analytical (n=2), Trans Harm Reduction (n=2)
- Ester: Estradiol Enanthate (4/4)

**Vendor status distribution on /vendors (as of 2026-04-22, 8 vendors listed):**

| Status | Count | Vendors |
|---|---|---|
| VERIFIED | 3 | Aurelia Labs, Open Gate Labs, Symphony Labs |
| TESTING IN PROGRESS | 3 | Astrovials, Estrapen, Hera HRT |
| NEW | 1 | Serapharma |
| UNVERIFIED | 1 | Dragon Ordnance |
| COMMUNITY TRUSTED / PARTIAL / CAUTION / SUSPENDED / INACTIVE / BLACKLISTED | 0 | — |

Two of the three VERIFIED vendors (Aurelia, Hera HRT) carry `tests: 0` on their profile — the VERIFIED flag on testing.trans.diy is **at least partially editorial**, not purely a function of published test count.

---

## 4.2 Trans Harm Reduction — result archive

**Claim:** Trans Harm Reduction's public `/hrt-testing` archive contains 16 published test results spanning 2022-06 through 2026-01.
- **Confidence:** C1
- **Source:** https://transharmreduction.org/hrt-testing (WebFetch 2026-04-23, confirmed 16 tabulated entries).
- **Date checked:** 2026-04-23

| Date | Vendor | Substance | Expected | Measured | Method | Result | Contaminants |
|---|---|---|---|---|---|---|---|
| 2026-01 | Snow Labs | Estradiol Enanthate | 50 mg/mL | 48.74 | GC-MS | PASS | None |
| 2025-09 | Zelda | Estradiol Enanthate | 50 mg/mL | 45.77 | GC-MS | **FAIL** | Visible fibers in vial |
| 2025-01 | Open Gate Labs | Estradiol Valerate | 40 mg/mL | 38.20 | GC-MS | PASS | None |
| 2024-08 | Felicitas | Estradiol Enanthate | 40 mg/mL | 36.97 | GC-MS | PASS | None (false-positive noted) |
| 2024-04 | Lena | Estradiol Enanthate | 50 mg/mL | 48.38 | GC-MS | PASS | None |
| 2024-03 | Zelda | Estradiol Undecylate | 100 mg/mL | 92.25 | GC-MS | PASS | None |
| 2024-03 | Zelda | Estradiol Enanthate | 50 mg/mL | 49.25 | GC-MS | PASS | None |
| 2024-01 | Noirelabs | Estradiol Enanthate | 40 mg/mL | 37.26 | GC-MS | PASS | None |
| 2023-08 | Astrovials | Estradiol Enanthate | 40 mg/mL | 38.76 | GC-MS | PASS | None |
| 2023-06 | Otokonoko | Estradiol Cypionate | 40 mg/mL | 39.58 (+1.37 EV) | GC-MS | PASS | None |
| 2023-03 | Swiss Pure | Testosterone Cypionate | 250 mg/mL | 233 | GC-MS | **CONDITIONAL** | Testosterone, enanthate, androstenedione co-present |
| 2023-03 | Spiffy/Pinkpill | Estradiol Enanthate | 40 mg/mL | 36.57 | GC-MS | PASS | None |
| 2022-12 | Vanna Pharma | Estradiol Enanthate | 40 mg/mL | 35.14 | GC-MS | PASS | None |
| 2022-10 | OE Labs | Estradiol Valerate | 40 mg/mL | 42.26 | GC-MS | PASS | None |
| 2022-08 | European Supplier (anonymised) | Estradiol Enanthate | 50 mg/mL | 48.92 | GC-MS | PASS | Minor unexplained compounds |
| 2022-06 | Otokonoko | Estradiol Enanthate | 40 mg/mL | 35.98 | GC-MS | PASS | None |

**Raw pass rates on THR's wording:**
- Clean PASS: 14 / 16 = 87.5%
- CONDITIONAL: 1 / 16 = 6.3% (Swiss Pure T cyp with wrong-ester contamination and androgen impurity)
- **FAIL**: 1 / 16 = 6.3% (Zelda EEn with visible particulate contamination — notably, *quantity was within spec*; failure is physical contamination, not potency)

**Potency-only pass rate (treating both CONDITIONAL and FAIL as "would have passed on mg/mL alone" — because Swiss Pure's 233/250 is 93% and Zelda's 45.77/50 is 92%, both within ±10% on potency):** 16 / 16 = 100% on the potency axis. (Round-2 correction R2-M8: earlier draft said 15/16 = 93.8% which mislabeled the axis — both flagged results failed on identity/contamination, not potency.)
**Identity + contamination-screen pass rate:** 14 / 16 = 87.5%.

The single Swiss Pure result is the only case in either HRT registry where the measured concentration was substantially off-label on an illicit substance, and even there the **quantity** was within the ±10% band (233 vs 250, = 93%). The flag was chemical identity (an enanthate ester contamination and androstenedione — an anabolic precursor — co-eluted alongside the expected cypionate).

---

## 4.2.1 Combined HRT corpus (both registries, deduplicated)

Deduplicating the two registries (2 tests appear in both: Astrovials 2023-08, Open Gate Labs 2025-01):

- **Unique HRT tests published**: 18
- **Unique vendors tested**: 13 (Astrovials, Open Gate Labs, Symphony Labs, Snow Labs, Zelda, Felicitas, Lena, Noirelabs, Otokonoko, Swiss Pure, Spiffy/Pinkpill, Vanna Pharma, OE Labs; "European Supplier" not named)
- **Esters represented**: Estradiol Enanthate (majority), Estradiol Valerate (2), Estradiol Cypionate (1), Estradiol Undecylate (1), Testosterone Cypionate (1)
- **Potency-within-±10% pass rate**: **18 / 18 = 100%** (no sample failed on mg/mL alone; the two CONDITIONAL/FAIL results were both within ±10% on stated concentration but flagged on contamination/identity grounds, not mg/mL — round-2 correction R2-M8 from earlier "16/18 ≈ 89%" which mislabeled the axis)
- **Clean-pass rate (everything THR / ttd called PASS)**: 16 / 18 ≈ 89%

Nothing in either registry has tested for endotoxin, sterility, bioburden, heavy metals, or MS-level oil-identity. **The 89% pass rate is a 2-axis test (mg/mL by GC-MS or HPLC + rough contamination screen).** It says nothing about sterility or pyrogenicity.

---

## 4.3 Finnrick — current public data

### 4.3.1 Topline

- **Samples tested**: 6,813
- **Vendors**: 204
- **Peptides**: 15
- **Date range (across products)**: December 2024 – April 2026 (most product pages; earliest recorded product page is Semaglutide, 2024-12-17 → 2026-04-13)
- **Editorial headline**: "Roughly one in three fail basic expectations" across 7,000+ samples

**Claim:** Finnrick's "one-in-three fail basic expectations" framing appears on https://www.finnrick.com/blog/what-we-believe-in.
- **Confidence:** C1 for the wording; C3 for the underlying calculation (they do not expose the arithmetic).
- **Source:** Finnrick blog, retrieved 2026-04-23.
- **Date checked:** 2026-04-23

### 4.3.2 Per-peptide volume

| Peptide | Samples | Vendors | Date range | Purity 5th-95th | Qty divergence 95th |
|---|---:|---:|---|---|---|
| Retatrutide | 2,489 | 164 | 2024-12 – 2026-04 | 98.71%–99.95% | ±45% |
| Tirzepatide | 1,776 | 136 | 2024-12 – 2026-04 | 98.79%–99.95% | ±43% |
| BPC-157 | 501 | 72 | 2024-12 – 2026-04 | 96.69%–99.95% | ±80% |
| GHK-Cu | 416 | 54 | 2025-04 – 2026-04 | 99.60%–99.97% | ±48% |
| Tesamorelin | 347 | 39 | 2025-05 – 2026-04 | 76.42%–99.95% | ±93% |
| Semaglutide | 309 | 51 | 2024-12 – 2026-04 | 98.33%–99.99% | ±37% |
| Ipamorelin | 273 | 51 | 2025-02 – 2026-03 | 97.00%–99.96% | ±69% |
| CJC-1295 | 248 | 47 | 2024-12 – 2026-04 | 68.75%–99.95% | ±100% |
| Melanotan II | 140 | 34 | 2025-02 – 2026-03 | 97.66%–99.95% | ±61% |
| Cagrilintide | 106 | 18 | 2025-04 – 2026-04 | 95.62%–99.94% | ±48% |
| PT-141 | 96 | 27 | 2025-03 – 2026-03 | 96.09%–99.95% | ±51% |
| TB-500 | 83 | 11 | 2025-05 – 2026-03 | 82.88%–99.91% | ±100% |
| Mazdutide | 28 | 10 | 2025-04 – 2026-03 | 95.94%–99.85% | ±78% |
| Survodutide | 26 | 7 | 2025-04 – 2026-03 | 98.39%–99.95% | ±20% |
| Sermorelin | 23 | 5 | 2025-04 – 2026-03 | 96.58%–99.95% | ±50% |
| **TOTAL** | **6,861** | **204 unique** | | | |

Column `Samples` sums to 6,861 against the home-page total of 6,813 (difference ~0.7%, attributed to ongoing retractions — see Finnrick Corrections page; entries from Nantong Guangyuan Chemical GYC were retracted in March 2026 across multiple products). `Vendors` column sums to 726; the grade-pair count in §4.3.3 sums to 722. The 4-row delta likely reflects corrections/retractions creating listed-but-not-graded vendors, or timing skew between the two scrapes. A single vendor can sell multiple peptides and get graded separately per peptide; the unique vendor count is 204. (Round-2 note: earlier draft claimed both columns equal 722 by construction; the real sums are 726 and 722 respectively.)

**Source:** Finnrick per-product pages, all retrieved 2026-04-23. C1.

**Interpretation note:** The 5th-95th purity percentile band is narrow on mature GLP-1s (Semaglutide 98.3-99.99%, Retatrutide 98.7-99.95%) but wide on older / less-standardised compounds (CJC-1295 68.7-99.95%, Tesamorelin 76.4-99.95%). **The quantity divergence column is the one that tells the real gray-market story** — ±80% to ±100% for BPC-157, CJC-1295, TB-500 means the 5th-vs-95th-percentile sample differs by as much as a factor of 2 in mg/vial for these compounds.

### 4.3.3 Per-peptide grade distribution

Aggregating the A-E-F-X counts from each product page:

| Peptide | A | B | C | D | E | F | X | n (pairs) |
|---|---:|---:|---:|---:|---:|---:|---:|---:|
| Retatrutide | 28 | 10 | 48 | 22 | 50 | 4 | 6 | 168 |
| Tirzepatide | 22 | 18 | 29 | 20 | 40 | 4 | 6 | 139 |
| BPC-157 | 5 | 12 | 8 | 13 | 21 | 2 | 0 | 61 |
| GHK-Cu | 14 | 6 | 24 | 2 | 4 | 2 | 2 | 54 |
| Tesamorelin | 1 | 3 | 3 | 6 | 15 | 2 | 4 | 34 |
| Semaglutide | 24 | 13 | 8 | 3 | 3 | 1 | 0 | 52 |
| Ipamorelin | 17 | 8 | 10 | 9 | 9 | 2 | 2 | 57 |
| CJC-1295 | 4 | 1 | 10 | 7 | 19 | 2 | 0 | 43 |
| Melanotan II | 8 | 9 | 10 | 2 | 5 | 0 | 0 | 34 |
| Cagrilintide | 0 | 2 | 7 | 4 | 2 | 2 | 2 | 19 |
| PT-141 | 8 | 2 | 8 | 3 | 3 | 1 | 2 | 27 |
| TB-500 | 2 | 0 | 0 | 1 | 7 | 2 | 0 | 12 |
| Mazdutide | 4 | 2 | 2 | 0 | 1 | 0 | 1 | 10 |
| Survodutide | 3 | 2 | 1 | 1 | 0 | 0 | 0 | 7 |
| Sermorelin | 0 | 1 | 2 | 1 | 0 | 1 | 0 | 5 |
| **TOTAL** | **140** | **89** | **170** | **94** | **179** | **25** | **25** | **722** |

**Across 722 graded vendor-product pairs:**
- A (Great): 19.4%
- B (Good): 12.3%
- C (Okay): 23.5%
- D (Poor): 13.0%
- E (Bad): 24.8%
- F (Fraud): 3.5%
- X (Unrated, single test): 3.5%

**Rolling up by quality tier** (treating X as unknown and excluding):
- "Good or Great" (A+B): **32.8%**
- "Okay or better" (A+B+C): **57.2%**
- "Poor, Bad, or Fraud" (D+E+F): **42.8%**

The "~one in three" Finnrick headline reasonably maps to "D+E+F ≈ 42.8% of graded vendor-product pairs," or more favorably to "A+B ≈ 32.8% are actually good." Either framing is defensible; Finnrick chose the pessimistic one.

**Important arithmetic caveat**: These are vendor-product-pair percentages, **not sample percentages**. A large-volume A-rated vendor (e.g. Peptide Partners, 18 retatrutide tests avg 8.7) pulls a single A in this table but contributes 18 passing samples to the 2,489-sample total. Conversely, a small-volume Fraud vendor (e.g. Shanghai Sigma Audley SSA, 76 retatrutide tests many at 0.0 purity) is a single F here but represents 76 failed samples. **Sample-weighted quality is probably higher than vendor-weighted quality** because the community routes volume toward better-rated vendors.

### 4.3.4 Finnrick endotoxin results (n=140, paid tier, Jan 2026 blog)

- No detectable endotoxins: **63%**
- Small quantities below limit of quantification: **29%**
- Above LoQ and above Finnrick's 40-EU-per-vial internal threshold: **8%**

Source: https://www.finnrick.com/blog/why-endotoxin-testing-matters-for-peptides (C1, retrieved 2026-04-23).

This is currently the **largest public endotoxin dataset for gray-market injectables anywhere.** 140 samples, roughly 1 in 12 exceeds Finnrick's internal threshold. Heavy-metals results are offered as a paid add-on but not publicly aggregated.

---

## 4.4 Forum-reported — narrative summary only

No tabulation of individual threads, by design (unverifiable, confirmation-biased, potentially libelous).

**r/TransDIY**: the "monthly test results" thread format is not a consistent pinned megathread in 2025-2026; individual batch posts appear irregularly. Narrative pattern over time:
- Majority of user-posted tests show potency within ±10-15%.
- Occasional "under-dosed" posts (vials coming in at 70-85% of label).
- Rare "wrong ester" or "contaminated" reports — handful per year across the entire sub.
- Sterility-related adverse events (injection-site abscesses, sterile-abscess, persistent redness) get reported but are almost never traced back to a lab result — the chain from "reaction" to "a tested batch number" is broken by the time symptoms appear.

**r/saferpeptides**: heavily Finnrick-centric. Threads often cross-link Finnrick COAs. The "suggest a vendor for testing" threads work as Finnrick's crowd-sourced queue.

**r/steroids / r/SteroidSourceTalk / r/PEDs**: Janoshik COA-centric. Community consensus (repeated across multiple threads, unverifiable):
- Established UGL brands: reportedly ~5% fail rate on potency when tested.
- Smaller no-name UGLs: reportedly 10-20% fail rate.
- These are community estimates, not hard data. Label C4.

**Claim:** The Peptide Protocol Wiki's Janoshik review cites "43% of peptides tested in 2024 failed to meet label purity claims" — i.e. somewhere between "Poor" and worse in Finnrick's scheme.
- **Confidence:** C3 (second-hand, not published by Janoshik directly).
- **Source:** https://www.peptideprotocolwiki.com/blog/janoshik-analytical-review (retrieved 2026-04-23).
- **Date checked:** 2026-04-23
- **Notes:** Consistent with Finnrick's D+E+F ≈ 42.8% when "failed to meet" means "any deviation from label claim," which would include mildly under-dosed vials that still deliver active drug. Directionally consistent; the two denominators are different and cannot be strictly compared.

---

## 5. Per-compound-class breakdown

This is the core consolidated table. **All HRT rows are low-n and should be read as point estimates, not population parameters.** Peptide rows come from Finnrick per-product arithmetic; sample-weighted and vendor-weighted fail rates differ (see §4.3.3).

| Compound class | n (tests) | Potency pass (±10%) | Identity pass | Common failure mode | Confidence |
|---|---:|---|---|---|---|
| HRT estradiol esters (EV / EC / EEn / EUn) | 17 | ~94% (16/17) | ~94% (16/17) — one vial with particulate contamination, one with minor unknowns | Minor under-dosing; rare contamination (fibers, unknown compounds) | C3 (small-n) |
| Testosterone esters (community HRT context) | 1 | 100% on mg/mL | **0%** on identity (one wrong-ester + androstenedione) | Wrong-ester / mixed-ester substitution | C4 |
| Testosterone esters (r/steroids + Janoshik, community consensus) | ~thousands | ~85-95% reported | ~95% reported | Under-dosing in small UGLs; rare oil substitution | C4 (forum consensus) |
| Progesterone / spironolactone / cyproterone / bicalutamide | 0 public | — | — | **No public community test data** | C5 |
| GLP-1 peptides (semaglutide, tirzepatide, retatrutide, mazdutide, survodutide, cagrilintide) | 4,734 (sum) | Wide: ±37% (sema) to ±78% (mazd) 95th pctl | Mature products: 98%+ purity median | Under-dosing; rare vendor-level fraud (Shanghai Sigma Audley SSA, Nantong GYC) | C2 |
| Research peptides (BPC-157, TB-500, CJC-1295, sermorelin, tesamorelin) | 1,202 (sum) | High variance: ±80% (BPC) to ±100% (CJC, TB-500) 95th pctl | 5th-pctl purity dips as low as 68-83% on CJC/TB-500 | Under-dosing + occasional wholly absent active + sequence ambiguity | C2 |
| "Body" peptides (GHK-Cu, melanotan II, PT-141, ipamorelin, kisspeptin) | 925 (sum) | Moderate: ±48% to ±69% 95th pctl | ≥96% purity median | Under-dosing; mostly-honest market | C2 |
| Anabolic steroids (non-TRT, r/steroids + Janoshik, community consensus) | ~thousands | ~75-90% reported | ~90-95% reported | Under-dosing; oil substitution; ester substitution | C4 |
| Endotoxin on gray-market peptides (Finnrick paid tier) | 140 | — | — | ~8% exceed 40-EU-per-vial threshold | C1 |

Confidence key:
- **C1**: direct primary source (Finnrick per-product page, THR archive entry, testing.trans.diy result).
- **C2**: aggregated from C1 with transparent arithmetic (e.g. grade-distribution roll-up, combined HRT pass-rate).
- **C3**: second-hand from a reputable review (Peptide Protocol Wiki, peppal.app) without primary disclosure.
- **C4**: forum consensus, narrative.
- **C5**: unknown.

---

## 6. Per-vendor commentary — only with public findings

To avoid libel, only include vendors with **specific, URL-traceable public test findings.**

**Standing disclaimer for every vendor grade below (round-2 addition):** Finnrick's A/B/C/D/E/F scale is **editorial**, requires ≥2 tests to lock in a letter, and is **subject to publication bias and self-selection** (see §2 and §9). A grade of F (Fraud) is Finnrick's operational classification, not a court finding. Any grade reflects the state of a specific batch window and may change as subsequent tests come in. Readers should click through to the live URL + date rather than cite any grade here verbatim. Swiss Pure's 2023-03 result specifically is 3 years old; current operators and formulations may differ.

**Verified by specific published tests:**
- **Open Gate Labs** — VERIFIED on testing.trans.diy with 2 tests (Artemis 2026-04-21 at 105.18%; THR 2025-01-03 at 95.5%). DIYHRT.Market 5/5 rating. Source: https://testing.trans.diy/vendors/open-gate-labs.
- **Symphony Labs** — VERIFIED on testing.trans.diy with 1 test (Artemis 2026-04-21 at 100.78%). Source: https://testing.trans.diy/vendors/symphony-labs.
- **Astrovials** — TESTING IN PROGRESS on testing.trans.diy; 1 test (THR 2023-08-31 at 96.9%). Source: https://testing.trans.diy/vendors/astrovials.
- **Snow Labs** — PASS on THR's January 2026 test (48.74 mg/mL vs 50 mg/mL claimed, no contaminants). Source: https://transharmreduction.org/hrt-testing.
- **Peptide Partners** — Grade A on multiple Finnrick products (BPC-157, Ipamorelin, Retatrutide, TB-500). Source: https://www.finnrick.com/products/retatrutide/peptide-partners. Also 59 tests A-rated per peppal.app 2026 summary.
- **Peptide Sciences** — Grade A on semaglutide and multiple products on Finnrick; however, 4 samples had misattribution corrections in Nov 2025 (source: https://www.finnrick.com/corrections).

**Caveats / failures with specific public references:**
- **Zelda** — **FAIL** on THR 2025-09 estradiol enanthate test (45.77 mg/mL was within spec on potency but visible fibers were present). Separate earlier PASS entries (2024-03 × 2) exist; quality appears to have degraded or the affected batch was an outlier. Source: https://transharmreduction.org/hrt-testing.
- **Swiss Pure** — **CONDITIONAL** on THR 2023-03 testosterone cypionate test: 233 mg/mL vs 250 claimed, but GC-MS detected additional enanthate ester and androstenedione (anabolic precursor). Source: https://transharmreduction.org/hrt-testing.
- **Shanghai Sigma Audley SSA** — **F (Fraud)** rating on Finnrick for Semaglutide (10 tests avg 7.2 but grade is F due to data integrity concerns), Retatrutide (76 tests, many at 0.0 purity), and Sermorelin. Source: https://www.finnrick.com/products/retatrutide.
- **Nantong Guangyuan Chemical GYC** — **All tests retracted** by Finnrick on 2026-03-26 after identification of large-scale fraud including a counterfeit Finnrick-lookalike website (PeptideMeter.com on ggpeps.net) and non-delivery reports. Source: https://www.finnrick.com/corrections (retrieved 2026-04-23).
- **Peptide Gurus** — low grade (E or F depending on scrape date; round-2 re-check flagged that current Retatrutide page may show E, not F — live URL is authoritative) with 7 tests averaging 0.8 (out of 10) on Retatrutide. Source: https://www.finnrick.com/products/retatrutide.
- **Tydes, Loti Labs, Peptides For Sale** — D ratings on Semaglutide. Source: https://www.finnrick.com/products/semaglutide.
- **ZLZ Peptide, Coastal Peptides, Oupeptide** — E ratings on Semaglutide. Source: https://www.finnrick.com/products/semaglutide.

No statements are made here about vendors without specific published tests. Rumour, suspicion, forum consensus about bad actors without URL-backed findings is explicitly **excluded** from this section.

---

## 7. Time series — is the market getting better?

**Short answer: inconclusive from public data.** Neither Finnrick nor THR publish pre-aggregated time-series. The Finnrick per-product summaries list a date range but not per-quarter quality trends.

What the data hints at:
- **Semaglutide** purity band 98.3-99.99% across 309 samples in a ~16-month window is *tight*, consistent with a market that has matured around a well-defined target.
- **Retatrutide** has wider variance (10% of vendors rate F or unrated, 50 vendors rate E) consistent with the gray-market pre-release / early-diffusion stage. The label-reading community has called this a "sim-of-a-release-drug" problem: no pharmacopoeial reference batch exists for retatrutide because Lilly has not commercialised it, so vendors and testing labs are effectively triangulating against each other.
- **Semaglutide + Tirzepatide grade distributions** skew much more to A-B (37 A+B vs 7 D+E+F for semaglutide; 40 A+B vs 64 D+E+F for tirzepatide) than the composite average. GLP-1s dominate the volume and concentrate the quality.
- **Research peptides** (BPC-157, CJC-1295, TB-500) skew toward D-E. If the research-peptide 5th-percentile purity of 68-83% had been the GLP-1 reality, the "one in three" headline would be much worse.

**Two plausible hypotheses, neither confirmed:**
1. **Maturation hypothesis**: GLP-1 compliance improved between 2022-2024 as the market scaled and labs standardised. Retatrutide is catching up as vendors learn. This would predict improving aggregate scores 2026 → 2028.
2. **Demand-shock hypothesis**: The GLP-1 boom post-Ozempic-famousness in 2023-2024 attracted opportunistic vendors, degrading the median quality. Finnrick's current F / E stack is the tail of that inflow.

**The public data cannot distinguish these.** Finnrick's internal database probably can, and researcher accounts (per their website) exist; the publicly-scraped pages do not expose it.

For HRT specifically: the THR + testing.trans.diy corpus has **4 tests from 2022, 5 from 2023, 2 from 2024, 2 from 2025, 3 from 2026**. The year-on-year n is too small to support any trend claim. Anecdotally, 2025-2026 has seen new US-based homebrewers (Symphony Labs, Hera HRT, Snow Labs, Aurelia Labs) appear on vendor directories, which is a supply-side expansion, not a quality measurement.

---

## 8. Explicit bounds — what these numbers do NOT show

The tests the community runs mostly consist of **HPLC (or GC-MS) for mg/mL and identity by retention time / MS fragment pattern.** This is well-suited to detect some failure modes and blind to others.

**Detected well (high sensitivity in the tested population):**
- Under-dosing and over-dosing (±5% is trivially detectable).
- Wholly-absent active ingredient (vial of vegetable oil labelled 40 mg/mL).
- Gross wrong-ester (EC labelled as EEn).
- Gross sequence error in peptides where partner labs run MS.

**Under-detected (even when tested):**
- **Sequence-level identity failures in peptides**: most Finnrick tests are HPLC-UV with identity inferred from retention time. Only MZ Biolabs and Janoshik routinely run MS on peptides. A 1-residue substitution in a 30-mer may be invisible on HPLC-UV alone.
- **Contamination at the mass-balance-missing level**: if HPLC-UV sees 98% of the expected peak and misses the other 2% as "impurities unclassified," a toxic 0.5% impurity is invisible.
- **Oil-carrier substitution**: the community expects MCT / grapeseed / castor / cottonseed. GC-MS contamination screens detect major oil components, but minor inorganic metals or pesticide residues in industrial-grade seed oil are out of scope.

**Not tested at all (zero public data for HRT):**
- **Endotoxin / pyrogen** on HRT injectables: no community lab currently tests. Finnrick tests on peptides (~8% failure rate at 40 EU/vial); no equivalent service for oil-based HRT.
- **Sterility** on HRT injectables: no community lab currently tests. Sterility failures are inferred clinically — injection-site abscesses and sterile-abscess reports on r/TransDIY — but rarely traced back to a batch.
- **Bioburden**, **heavy metals by ICP-MS**, **water content by Karl Fischer** on HRT: no community lab.
- **Residual solvent** (benzyl alcohol balance, DCM / MeOH / ACN residues from brewing): not publicly tested.

**The 89% HRT pass rate captures mg/mL and rough contamination. It does not capture sterility, pyrogenicity, or microbial burden — the three failure modes most likely to cause acute injury.**

---

## 9. Lower-bound / upper-bound framing (repeated)

Restating the core methodological caveat as its own section because it is the single most important thing to internalise before using any of these numbers:

1. **These numbers are a lower bound on the prevalence of problems in the gray market.** Vendors, batches, and failure modes outside the tested population are invisible. If 50% of vials ever produced are untested and have a higher underlying failure rate than tested vials (plausible — bad vendors don't get tested), the true problem rate is larger than the number shown.

2. **These numbers are an upper bound on quality.** A published 89% HRT pass rate, or a Finnrick 33% A+B rate, is the best-case interpretation of a self-selected dataset. Sampling untested vendors would on-average lower both.

3. **The true population prevalence of under-dosed / wrong-ester / contaminated HRT in the gray market is unknown.** Neither the DIY HRT registries nor the peptide registries perform random sampling of the market. The statistic that would actually answer "should I trust a random gray-market vial" does not exist.

4. **The Finnrick peptide dataset is the highest-quality slice of community-testing data that exists anywhere.** n = 6,813, cross-checked across 7 partner labs, with transparent methodology. Even that dataset has:
   - Publication bias (free-tier vendors chose to have samples submitted by customers who cared)
   - Selection bias (no peptide outside the 15 covered is in the data)
   - Submitter-level bias (customer needs a batch ID, which favors vendors who print them)
   - Retraction-based integrity patching (Nantong GYC, Peptide Sciences misattributions)

---

## 10. What would close the gap

Concretely, to upgrade the HRT dataset from "anecdote archive" to "statistics":

1. **Randomised procurement sampling.** A third party orders from every listed vendor using burner identities, blind-codes samples before shipment to lab. Budget: ~15 vendors × 3 batches × €300/test = ~€13,500 for one pass. Matches the scale of THR's existing budget.
2. **Batch-blinded customer submission.** Testing.trans.diy or Finnrick-for-HRT accepts customer-submitted vials under a two-code scheme where the lab sees only a code, the submitter only sees the counter-code, and the mapping is broken before publication. Prevents vendor batch-spoofing (the problem Finnrick's free-tier batch-ID requirement half-solves for peptides).
3. **Multi-lab triangulation.** Same physical batch split across 3 labs to measure inter-lab bias. Finnrick already does this internally on overlapping batches; HRT has never been triangulated.
4. **Aggregated public HRT failure database.** A Finnrick-for-HRT (same model, different compound class). Nothing structurally blocks this except funding (THR's GoFundMe was €6,800, two orders of magnitude below what Finnrick has raised). The 2026-04-21 appearance of two simultaneous Artemis Analytical tests on testing.trans.diy is the first sign of cadence accelerating.
5. **Inclusion of sterility + endotoxin in HRT tests.** Requires either a community lab to add LAL gel-clot + USP <71> membrane filtration workflows, or an outsourcing deal with a commercial endotoxin lab that accepts oil-based injectables (none publicly offer this today — Janoshik explicitly excludes oils from its endotoxin line).
6. **OCR / structured extraction of the Finnrick database.** Finnrick's researcher-access program apparently includes the full dataset; a research agreement and redistribution would let external statisticians compute true time-series, sample-weighted quality, and per-vendor confidence intervals.

---

## Cross-links

- `research/summary.md` — Q1 ecosystem framing
- `research/01-existing-services/finnrick.md` — Finnrick primary-source deep dive
- `research/01-existing-services/testing-trans-diy.md` — testing.trans.diy primary
- `research/01-existing-services/trans-harm-reduction-lab.md` — Trans Harm Reduction primary
- `research/08-interpretation-qc/reporting-results.md` — how these numbers are reported
- `research/gaps.md` #10 — the gap this doc partially closes
- `research/_sources/finnrick-home.md`, `trans-diy-results.md`, `trans-diy-vendors.md` — raw scrapes

## Sources — all retrieved 2026-04-22 or 2026-04-23

- https://www.finnrick.com/ (home, 2026-04-23)
- https://www.finnrick.com/products (per-product list, 2026-04-23)
- https://www.finnrick.com/products/tirzepatide (2026-04-23)
- https://www.finnrick.com/products/semaglutide (2026-04-23)
- https://www.finnrick.com/products/retatrutide (2026-04-23)
- https://www.finnrick.com/products/bpc-157 (2026-04-23)
- https://www.finnrick.com/products/cjc-1295 (2026-04-23)
- https://www.finnrick.com/products/ipamorelin (2026-04-23)
- https://www.finnrick.com/products/melanotan-ii (2026-04-23)
- https://www.finnrick.com/products/tb-500 (2026-04-23)
- https://www.finnrick.com/products/pt-141 (2026-04-23)
- https://www.finnrick.com/products/ghk-cu (2026-04-23)
- https://www.finnrick.com/products/sermorelin (2026-04-23)
- https://www.finnrick.com/products/tesamorelin (2026-04-23)
- https://www.finnrick.com/products/mazdutide (2026-04-23)
- https://www.finnrick.com/products/survodutide (2026-04-23)
- https://www.finnrick.com/products/cagrilintide (2026-04-23)
- https://www.finnrick.com/labs (partner-lab volume, 2026-04-23)
- https://www.finnrick.com/corrections (2026-04-23)
- https://www.finnrick.com/blog/what-we-believe-in (2026-04-23)
- https://www.finnrick.com/blog/why-endotoxin-testing-matters-for-peptides (2026-04-22)
- https://www.finnrick.com/blog/policy-update-free-tests-now-require-a-batch-id (2026-04-22)
- https://testing.trans.diy/results (from scrape 2026-04-22, site self-reports v0.1 / 2026-04-21)
- https://testing.trans.diy/vendors (from scrape 2026-04-22)
- https://transharmreduction.org/hrt-testing (2026-04-23)
- https://transharmreduction.org/ (2026-04-23)
- https://public.janoshik.com/ (2026-04-23)
- https://www.peptideprotocolwiki.com/blog/janoshik-analytical-review (2026-04-23)
- https://www.peptideprotocolwiki.com/ (2026-04-23)
