pepmg_

Methodology

Most comparison sites hide how they work. We publish it. Here's exactly how every number on pepmg is produced — and how to check us.

current index built 20m ago · 2026-11-15T10:30:10.038Z

▸ 0 · Why this site exists

You've used the other kind of price list. You know the moves:

None of that requires trusting us — every claim above is checkable on any row of the site. That's the whole idea.

▸ 1 · Collection — first-party, live-captured

Every price on this site is read directly from the vendor's own live store — the same public product feed their own storefront runs on — then cross-checked against a fresh fetch before publishing. No middlemen, no stale caches, no guesswork.

Reading a price row

Each row is one listing: the vendor, the product as the vendor names it, its form, the vial size in milligrams, the price, and the price per milligram. Stock and Last checked come from the refresh that captured the row. If a row was not reconfirmed in the latest refresh, its stock reads "Last known: in stock" (or out of stock), because that value is carried from the previous check. When a public discount code lowers the price, the row shows the code price, with "With code X · list $Y" underneath: the code, then the vendor's list price before it. Trust score is the vendor's Vendor Score, the same number shown on its profile, and COAs links what that vendor publishes.

Why no "breadth" from third-party feeds? We tested an aggregated third-party dataset for wider vendor coverage and spot-checked it — the listings were stale and in some cases dead (a product still shown that the vendor no longer sells). A price index you can't trust is worse than a smaller one you can. So we removed it: if it's on pepmg, we pulled it live ourselves.

▸ 2 · Normalization (the hard part)

Raw vendor data is messy. We turn it into one comparable number — cost per milligram — and flag what shouldn't be compared head-to-head:

From 6214 raw listings this build, 3325 survive as clean, comparable, in-stock retail rows.

▸ 3 · Ranking (money can't move it)

Tables sort strictly ascending by $/mg. Bulk and outlier rows are de-emphasized and pushed below clean retail. No vendor can pay to move up. Where a link earns us a commission or carries a pepmg code, it's labeled on that row and ranked by the exact same math — the sort ignores who pays. See /disclosure.

The vendors page top 10

The top of /vendors shows up to 10 vendors chosen by one rule: a published Vendor Score of 80+ (the same score shown on the vendor's own page), then cheapest against the market. For each compound a vendor sells in stock, we compare its cheapest clean $/mg with that compound's median, counting only compounds with at least 4 comparable listings from two or more vendors. A vendor's price position is the median of those comparisons, and it needs at least 3 of them to qualify. The list is ordered from furthest below the median, ties broken by score. Affiliate status is not an input, and it is recomputed with every price refresh.

▸ 4 · Continuous re-checking

A separate job re-fetches every first-party vendor on a schedule and compares the live price to what's published here. If a listing has gone dead or drifted, it's flagged for removal or refresh — so "captured 4h ago" stays true, not just true once. The whole index is also an open feed: /api/prices.json — every listing carries its vendor, source, fetch time, and the flags above.

▸ 5 · What the receipt proves — and what it doesn't

Being honest about our limits is the point. A pepmg row proves exactly one thing: this was the vendor's listed price for this product at the time and source shown. It does not prove:

If a number looks wrong, the receipts are right there — click the source, check the math, and tell us at hello@pepmg.com. We'd rather be corrected than wrong.

▸ 6 · Vendor longevity — domain ageHow long the vendor's website domain has existed — from public registration records and the Wayback Machine. It's the domain's age, not proof of how long the business has run.

Domain history provides context about a vendor’s website. It does not establish product quality or business legitimacy. For each vendor we collect two public facts:

We show the earlier of the two as a rough "online since" as a longevity signal about a source, shown on vendor profiles and kept separate from the Vendor Score. Two honest caveats: it is the domain's age, not proof of how long the business has run — an aged domain can be bought or a brand rebranded — and it is a weak signal, so we never treat it as a safety verdict. It has no effect on the $/mg ranking; price is the default sort, readers can also sort by Vendor Score, and no vendor can pay for placement.

▸ 7 · The Vendor Score

Each vendor gets a Vendor Score out of 100 that counts only what it publishes and pepmg can observe. COA transparency is worth up to 87 points, set by the strongest evidence found (by our scanner, or by a person reading the vendor's own certificates where the scanner cannot, which the score card then says): certificates that open on the testing lab's own site score highest, then a third-party lab named on documents the vendor hosts itself, then in-house or unattributed documents, then a COA page behind a sign-in, then a claim with no documents. A real About page is worth up to 8, and machine-readable public prices 5. Price position, catalog size and domain age are shown on the profile as facts and earn no points. Affiliate status is never an input.

How we read an About page. We score whether a vendor says who it is, never how well it writes. On a page that is actually its About, story or team page, we look for identity signals: a story phrase ("our story", "who we are", "founded in", "we founded"), an ownership statement (veteran-owned, family-owned, woman-owned, independently owned, owned and operated), a location (headquartered in, based in, located in, operating from, "a US-based supplier"), a postal address (street, city, region and postal code), a named person with a role (founder, CEO, owner, director), or a legal entity with where it is registered ("Acme LLC, a Wyoming limited liability company"). A phone number counts as a weaker, supporting signal. One signal earns a brief About page (4 points). Two or more, on a page with at least 150 words of its own, earn the full 8; the phone can be the second signal, never the only one. We read only the page's own content: site menus, footers, cookie banners, age gates and login walls never count, and an address or phone that the homepage repeats is treated as site-wide boilerplate. A page we were redirected away from (to the homepage, a contact page or a product) is not an About page.

Two labels group the highest scores by what those vendors publish: Lab-verifiable COAs (a score of 90 or more with a COA sub-score of at least 77) and Third-party COAs (80 or more, with at least 67 for COAs). A label names published evidence. It is not an endorsement, and it never changes the $/mg order.

▸ 8 · COA coverage

What it means. COA coverage is the share of the products a vendor sells that have at least one Certificate of Analysis opening at the testing lab's own site. A vendor with 21 products and a lab-openable certificate for 12 of them shows 57% and "12 of 21 products". It sits beside the Vendor Score as its own column, so a reader can see how much of a catalog is backed by a certificate without that number being folded into anything else.

How we count. A product is a compound the vendor sells. It is covered when at least one of the vendor's documents names that compound and opens at the lab. Extra documents for the same product change nothing, and documents for compounds the vendor does not sell count for nothing. A certificate that names two or more compounds, or none we can tell apart, covers no product, because we do not guess which product a document belongs to. Everything shown is what the vendor published. pepmg does not verify a certificate and does not certify any product.

When we show "Partial" instead of a percentage. Some labs and vendor sites refuse automated readers, and some certificate names are codes we cannot match to a compound. When that is the reason a vendor looks thin, or when we could open too few of its lab certificates to measure a share, the column reads "Partial: some COA pages block our reader" or "Limited data" and shows no percentage. A reading gap on our side never lowers a vendor's coverage, its Vendor Score or its place in any list. If we confirmed some products, we show that count as a floor.

What it is not. It describes publication behavior only. It says nothing about purity, potency or quality, and a high share does not mean a product is what its certificate says. It is affiliate-blind: paying pepmg or having a referral link changes nothing about it, and it does not touch the $/mg order.

Preview. The Vendor Score is unchanged in this preview. Add ?score=coverage to the vendors page or a vendor profile to see the score recomputed on the per-product model, for comparison.

Research has its own pipeline. See the visual map of how pepmg retrieves, ranks, sanitizes, writes, and mechanically checks evidence: open the research pipeline →
All products listed are sold by third-party vendors for laboratory and research use only (RUO). Where an FDA label, a peer-reviewed study or a clinical-trial registry entry has published a dose, pepmg reports it with the source named and the tier labeled (a registry figure is marked trial registry, not peer-reviewed), because that is safer than guessing. It is a report, not medical advice and not a recommendation to use anything. pepmg sells nothing and ships nothing. Listings are price-tracking data, not endorsements.