How we check

Methodology: how we check a COA

This page documents every rule the COA checker applies, the exact thresholds, and where the reference data comes from. The same logic runs in your browser, and the source code is plain, readable JavaScript.

Scope: the checker tests whether the values on a COA are plausible and internally consistent. It doesn't verify that a document is genuine, analyze any sample, or assess suitability for any use. See how to tell if a COA is fake for verification with the lab.

How results are combined

Each rule returns one of four results: Pass Warning Issue or Info. The overall verdict is:

Reference masses

For each of the 28 compounds, the average molecular weight is calculated from its molecular formula using standard atomic weights (C 12.0107, H 1.00794, N 14.0067, O 15.9994, S 32.065, Cu 63.546). The monoisotopic mass uses the mass of each element's most abundant isotope (for example 12C 12.000000, 1H 1.007825). The build fails if a calculated value differs from the cited database value by more than 0.02 Da (monoisotopic) or 0.6 Da / 0.02% (average). Some compounds also have an accepted alternate form, such as a different salt or complex, which is checked as well and flagged when it is the form that matches.

Identity: mass spectrometry rules

Numbers are read tolerantly: "1,419.5", "1419,5" and "1419.5 Da" are all understood. Rules are applied in order, and the first match wins.

#RuleResult
0No mass enteredIssue
0Mass can't be read as a number, or is zero or negativeIssue
0No compound selected, so no comparison is possibleWarning
1Within ±1 Da or ±0.03% (whichever is larger) of the average or monoisotopic mass. Skipped when the mass is marked as m/z.Pass (Warning if it matches an alternate form)
2Within ±2.5 Da or ±0.08% (whichever is larger) but outside the tight toleranceWarning
3Matches a positive charge state [M+zH]z+ for z = 1 to 8 within the tight tolerance, after converting with neutral mass = (m/z − 1.00728) × zPass (Warning if alternate form)
4Matches the negative-mode ion [M−H]−Pass
5Matches the neutral or [M+H]+ mass plus a known modification or adduct (table below)Warning
6Matches a different compound in our database (neutral, or charge states z = 1 to 6)Issue
7None of the aboveIssue

Known modifications and adducts (rule 5)

ShiftMass difference (Da)Typical meaning
Oxidation+15.9949Oxidized Met or Trp
Double oxidation+31.9898Two oxidation sites
Sodium adduct [M+Na]++21.9819Usually an instrument artifact
Potassium adduct [M+K]++37.9559Usually an instrument artifact
+2 H+2.0157Reduced (open) disulfide
Water loss−18.0106Cyclized or degraded impurity
Acetylation+42.0106N-acetylated variant
TFA adduct+113.9929Trifluoroacetate left from purification

More on why these tolerances and ions exist: mass spectrometry explained.

Purity: HPLC rules

Measured HPLC purityResult
Not reported, or can't be read as a numberIssue
Above 100%, or 0% and belowIssue
Exactly 100%Warning
99% to under 100%Pass (excellent)
98% to under 99%Pass
95% to under 98%Warning
Below 95%Issue
Label claim more than 0.5 percentage points above the measured valueWarning (otherwise Pass)

These bands reflect common research-market practice, not a regulatory standard. See what a good HPLC purity is.

Traceability rules

CheckConditionResult
Testing labNo lab namedIssue
Named, marked as the seller's in-house labWarning
Named, marked as an independent third-party labPass
Named, independence unknownInfo
Batch / lot numberMissingWarning
Present (you should still match it to the vial)Pass
VerificationReport ID, QR code or lookup availablePass
Test dateMissing or unreadableWarning
More than 1 day in the futureIssue
Older than 24 monthsIssue
Older than 12 monthsWarning
12 months or newerPass

Months are counted as 30.44 days.

Additional tests and amount

Red-flag checklist

Each ticked item adds one result. Issues are serious on their own. Warnings are worth a question to the seller.

Red flagResult
Signs of editing (mismatched fonts, misaligned text, blurry numbers)Issue
Chromatogram generic, reused, or missing axes, retention times or peak tableIssue
Same COA used for different products or batchesIssue
Batch number on the vial doesn't match the COAIssue
Seller refuses to share the full COA, or only shows a cropped screenshotIssue
No independent third-party labWarning
No mass spectrum image, only a typed numberWarning
Lab can't be found, or report can't be verifiedWarning
No method details (column, wavelength, gradient, instrument)Warning
Suspiciously round or identical results across productsWarning

Background on each one: COA red flags.

Known limitations

Reference data by compound

CompoundFormulaAverage (Da)Monoisotopic (Da)Reference source
AOD-9604C78H123N23O23S21,815.081,813.860PubChem CID 71300630
BPC-157C62H98N16O221,419.541,418.704PubChem CID 9941957
CagrilintideC194H312N54O59S24,409.014,406.252PubChem CID 171397054
CJC-1295 (no DAC)C152H252N44O423,367.903,365.894PubChem CID 91976842
CJC-1295 (with DAC)C165H269N47O463,647.193,645.015PubChem CID 91971820
DSIPC35H48N10O15848.81848.330PubChem CID 68816
EpitalonC14H22N4O9390.35390.139PubChem CID 219042
GHK-CuC14H24N6O4340.38340.186PubChem CID 73587 (GHK); CID 71587328 (prezatide copper)
GHRP-2C45H55N9O6817.97817.428PubChem CID 6918245
GHRP-6C46H56N12O6873.01872.445PubChem CID 4345065
HexarelinC47H58N12O6887.04886.460PubChem CID 6918297
IpamorelinC38H49N9O5711.85711.386PubChem CID 9831659
Kisspeptin-10C63H83N17O141,302.441,301.630PubChem CID 25240297
Melanotan IIC50H69N15O91,024.181,023.540PubChem CID 92432
MOTS-cC101H152N28O22S22,174.592,173.108PubChem CID 146675088
NAD+C21H27N7O14P2663.43663.109PubChem CID 5892
PT-141C50H68N14O101,025.161,024.524PubChem CID 9941379
RetatrutideC221H342N46O684,731.354,728.472KEGG DRUG D12430
SelankC33H57N11O9751.87751.434PubChem CID 11765600
SemaglutideC187H291N45O594,113.584,111.115PubChem CID 56843331
SemaxC37H51N9O10S813.92813.348PubChem CID 9811102
SermorelinC149H246N44O42S3,357.883,355.819PubChem CID 16132413
SS-31 (Elamipretide)C32H49N9O5639.79639.386PubChem CID 11764719
TB-500C38H68N10O14889.01888.492PubChem CID 62707662
TesamorelinC221H366N72O67S5,135.785,132.717PubChem CID 16137828
Thymosin Alpha-1C129H215N33O553,108.283,106.504PubChem CID 16130571
Thymosin Beta-4C212H350N56O78S4,963.444,960.486PubChem CID 45382195
TirzepatideC225H348N48O684,813.454,810.525PubChem CID 166567236

Changes to the rules

When a rule or threshold changes, this page is updated at the same time, and its "Last updated" date changes. Our editorial policy explains how content is sourced and reviewed.

Try the rules on a real COA. Results in 30 seconds, nothing uploaded.

Open the COA checker →

Sources

Last updated . Written and maintained under our editorial policy. Found an error? See corrections.

Frequently asked questions

Where do the checker's thresholds come from?

Mass tolerances reflect typical accuracy of the instruments used for peptide COAs. Purity and date bands reflect common practice in the research-peptide market. They are practical rules of thumb, not regulatory standards, and every one is listed on this page.

Can the checker prove a COA is genuine?

No. It checks whether the numbers are plausible and consistent with reference data. A forged COA with correct-looking numbers can pass. Only the issuing lab can confirm a report is genuine.

Does the checker send my COA anywhere?

No. All the rules run in JavaScript in your browser. Nothing you enter is transmitted or stored.

How are the reference masses calculated?

From each compound's molecular formula, using standard atomic weights for the average mass and the masses of the most abundant isotopes for the monoisotopic mass. The build fails if any calculated value disagrees with the cited database value beyond a small tolerance.

Educational content only. Not medical advice. Research peptides are sold for laboratory research purposes only.