Standard Curves for HPLC Testing - Hemp

Hi all,

I am having the most trouble trying to calibrate my Waters ARC HPLC to test all matrices of our processed hemp (biomass, crude, distillate, CBD isolate). The range of the calibration is 0.5mg/L to 1,000mg/L. I know it is a giant range, so I am wondering if anyone had insight into making two separate calibration curves (one low range, one higher range) and which matrices to apply either to when processing. My R^2 is 0.999+ but RSD (E) is really high with no weighting method or %deviation is broad with weighting methods.

If anyone has experience with Empower as well, that would be great. I am unsure of the calculations inside the software and how to properly apply dilution factors.

I want to be within 2% of our 3rd party lab potency results and currently cannot get that on the Waters with our low CBD potency material and almost pure CBD isolate.

Let me know what y’all think, thanks!

Alanah

What you’re seeing (good R² but poor %RSD / bias vs 3rd party lab) is almost always a calibration strategy + weighting + dilution model problem, not a detector problem.

  1. Your instinct is correct: you should split the calibration
    A single 0.5–1000 mg/L curve is too wide for accurate quantitative work across:
    • biomass extracts (low–mid range)
    • crude oil (mid–high)
    • distillate (high)
    • isolate (very high / near saturation behavior depending on injection)
    Best practice (industry standard approach):
    Curve A: Low range (trace to moderate)
    • ~0.5 – 50 or 100 mg/L
    Use for:
    • biomass
    • low crude
    • early-stage extracts
    Curve B: High range
    • ~50 – 1000 mg/L
    Use for:
    • distillate
    • isolate solutions
    • concentrated crude fractions
    :backhand_index_pointing_right: This alone usually fixes 60–80% of accuracy issues.
  2. Why your current single curve “looks good but performs badly”
    A high R² (0.999+) is misleading here.
    What’s likely happening:
    (a) Heteroscedasticity (variance changes with concentration)
    • low standards = noisy relative error
    • high standards = dominate regression fit
    (b) Unweighted regression bias
    Without weighting:
    • curve “leans” toward high concentration points
    • low potency samples get systematically over/under-reported
    (c) Detector non-linearity at extremes
    Especially common in UV for cannabinoids:
    • low end: integration noise dominates
    • high end: slight curvature / saturation effects
  3. You MUST use weighting in Empower
    For cannabinoid HPLC in hemp matrices, default should be:
    Recommended weighting:
    • 1/x or 1/x²
    Most labs settle on:
    :check_mark: 1/x² (best for wide-range cannabinoid assays)
    Why:
    • corrects low-end bias
    • improves agreement with reference labs at low potency
  4. Matrix-specific calibration logic (important but often missed)
    You should NOT treat all matrices the same.
    Recommended approach:
    Matrix Expected potency range Calibration
    Biomass extracts low Low-range curve
    Crude oil medium either curve (depends dilution)
    Distillate high High-range curve
    Isolate very high High-range curve + dilution control
    :backhand_index_pointing_right: The real key is not matrix — it is final injected concentration
  5. Dilution strategy is where most labs fail
    To match third-party labs within ~2%, you must enforce:
    Target injection window:
    • Ideally: 10–80% of calibration midpoint
    • Avoid:
    o below LLOQ (noise-driven error)
    o above 80–90% of max standard (non-linear region risk)
    Practical example:
    If isolate is ~95% CBD:
    • you must dilute aggressively so final inject = ~200–600 mg/L equivalent range (not 900–1000 unless validated)
  6. Empower-specific issues (very important)
    Common mistakes:
    (a) Wrong weighting applied globally
    Make sure:
    • weighting is applied in Processing Method → Calibration
    (b) Wrong dilution factor structure
    In Empower:
    • dilution factors should be in:
    o Sample Set Method OR
    o Sample Info field (preferred consistency)
    :backhand_index_pointing_right: NEVER manually “correct” results after the fact — it breaks traceability.
    (c) Curve reuse across methods
    If you reuse one curve for all matrices:
    • you will always fight bias
    Better:
    • separate methods OR
    • separate calibration sets per range
  7. Why you can’t match third-party lab yet
    Most accredited labs:
    • use matrix-appropriate dilution protocols
    • use weighted regression (1/x²)
    • restrict quant range per run
    • validate each matrix separately
    If your system is:
    • single curve
    • unweighted or poorly weighted
    • broad dilution assumptions
    :backhand_index_pointing_right: you will never consistently hit Âą2% agreement
  8. Practical “fix plan” (what I would do in your lab)
    Step 1
    Split calibration into:
    • Low (0.5–100 mg/L)
    • High (50–1000 mg/L)
    Step 2
    Apply:
    • 1/x² weighting
    Step 3
    Standardize dilution rules:
    • biomass → always low curve
    • crude/distillate/isolate → high curve
    Step 4
    Revalidate:
    • 5 replicate injections at low/mid/high
    • check %bias vs reference lab
    Step 5
    Lock Empower method:
    • no ad-hoc dilution corrections
3 Likes

Hi!

Thank you so much for this. My biggest issue would be knowing what to put in the “sample weight or amount” section of the run and dilution factor in Empower. If you have advice on that, that’d be great. Thank you!

Sample Weight (or Amount) is:

the actual mass (or volume) of your original sample that you extracted
It is NOT:
the diluted concentration
the injected amount
the final vial concentration
Practical examples
Biomass
You weigh: 0.500 g
Enter in Empower:
Sample Weight = 0.500 g
Crude / Distillate
You weigh: 0.100 g
Enter:
Sample Weight = 0.100 g
CBD Isolate
You weigh: 0.050 g
Enter:
Sample Weight = 0.050 g
Keep this rule:
Sample Weight = what went into your first extraction vessel
What “Dilution Factor” should represent
TOTAL dilution from original sample → final vial injected
The clean way to calculate it
Step-by-step formula:
" Dilution Factor"=“Final Volume (mL)” /“Sample Weight (g)” דAdditional Dilutions”

Example 1: Biomass (simple extraction)
0.5 g biomass
Extracted into 50 mL solvent
No further dilution
Dilution Factor:
50/0.5=100

Enter:
Sample Weight = 0.5
Dilution Factor = 100
Example 2: Biomass with further dilution
0.5 g → 50 mL extract
Then: 1 mL → 9 mL (10× dilution)
Dilution Factor:
(50/0.5)×10=100×10=1000

Example 3: CBD isolate (critical case)
0.05 g isolate → 50 mL
Then 1 mL → 99 mL (100× dilution)
Dilution Factor:
(50/0.05)×100=1000×100=100,000

Why this matters for your accuracy issue

Right now, your mismatch vs third-party lab is likely coming from:
Common mistakes:
forgetting secondary dilution steps
entering dilution as only “10” instead of total
putting concentration instead of weight
inconsistent units (g vs mg vs mL)
Result:
high %RSD
inconsistent potency
isolate results way off
Calculation Simplified
“Result”∝“Peak Area” /“Calibration Curve” דDilution Factor”÷“Sample Weight”

So if:
dilution is wrong → everything scales incorrectly
weight is wrong → % potency shifts
5. Best practice (this will stabilize your system)
:check_mark: Always:
weigh in grams (g) consistently
use mL for volumes
calculate dilution once (Excel helps)
:check_mark: Create a fixed template like:
Matrix Weight Extraction Volume Extra Dilution Final DF
Biomass 0.5 g 50 mL 10× 1000
Crude 0.1 g 50 mL 20× 10,000
Isolate 0.05 g 50 mL 100× 100,000

  1. Pro tip (used in GMP labs)
    Instead of relying on manual entry every run:
    Put dilution into:
    Sample Set Method → Custom Fields
    OR
    Build:
    processing method with fixed dilution logic
    This reduces human error massively.

  2. One thing I’d strongly check in your setup
    Given your earlier issue:
    Confirm:
    Are your standards treated with the same dilution logic as samples?
    If not:
    your curve vs samples will never align

  3. Quick sanity check
    Take one sample:
    Manually calculate potency in Excel
    Compare with Empower result
    If mismatch exists:
    the issue is 100% in:
    dilution factor
    or sample weight entry

1 Like

This is awesome, thank you!

My standards are a diluted form of mixed components. I am not sure if it is of the same dilution logic as samples.

Your standards don’t need to follow the same dilution path as your samples — what matters is that they are accurately prepared at known concentrations and in the same final solvent system as your samples.

In Empower, your standards should typically have a dilution factor of 1, while your samples should reflect the total dilution from extraction to final vial.

The key thing I would check is whether your standards and sample extracts are in the same solvent and whether there is any matrix effect impacting your response — especially when comparing biomass vs isolate.

If possible, I’d also recommend running a spiked sample to confirm recovery and ensure your method is not biased by the matrix.

By the way, where is your lab located? Just helps me understand your setup a bit better.

Perfect, that is the plan. Unfortunately, I would have to prep in mg/L, does that change that dilution calculation above?

The standards and extracts are in the same solvent and does not have any matrix effect thankfully.

We have CBGV (which we don’t typically test for) as an internal standard to use to confirm recovery.

We are located in Alabama.

Thanks!

That’s actually a really solid setup you’ve got — same solvent system and use of an internal standard like CBGV already removes a lot of the common sources of variability.

On your question about working in mg/L: that doesn’t change the dilution logic at all — it actually fits perfectly with how Empower handles calibration.

Your standards define the curve directly in mg/L, and your samples are back-calculated into mg/L and then converted to % potency using your sample weight and total dilution factor. So the key is still making sure that your dilution factor reflects the entire path from original sample to final vial.

Where I think your main opportunity is now (especially since you’re already getting strong R² values) is tightening the relationship between:

  • dilution strategy across matrices
  • calibration weighting (likely 1/x² for your range)
  • and internal standard recovery consistency

Using CBGV as an internal standard is a good approach — I’d just confirm that its response is stable across your full concentration range and that it’s not introducing variability at the low end of your curve.

Since you’re based in Alabama, you’re likely aligning with typical US cannabis testing expectations, so getting within ±2% of your third-party lab should be very achievable with a bit of calibration and processing refinement.

If you’d like, I can walk through one of your actual prep workflows and Empower processing methods with you and pinpoint exactly where the deviation is coming from — usually at this stage it’s something subtle in how dilution or weighting is being applied rather than the instrument itself.

Happy to take a closer look if that would help.

It is wonderful that we were able to bring these in line- and get your calibration and dilution handling consistent among all of your matrices as well.

Once you have the ability to run a few batches and be able to demonstrate to yourself that everything is stable-( especially compared to your 3rd party lab)- it would be invaluable to hear your thoughts on how the adjustments have performed for you and if you are now demonstrating this 2% agreement.

A brief comment on what it was like to work through the method refinement would also be greatly appreciated, if you feel comfortable- I will begin supporting several other labs experiencing the same type of HPLC/Empower calibration issues, and a hands-on account will help improve the process of supporting other customers.

Thanks again for your time and let me know if anything else arises- I will gladly follow up with further assistance.

Would having one broad calibration curve be why my CBD isolate CBD potency has been coming back lower than what it is? Because of the %deviation based on weighting methods?

I am currently running the two calibrations now and will compare to different sample matrices to see what I receive. Do you know how to convert the concentrations/calculated values received from Empower to percent weight?

I appreciate your help immensely!

Hi,

Yes — what you’re seeing with your CBD isolate coming in lower is very likely linked to using one broad calibration curve.

Even with a strong R², a wide-range curve (like 0.5–1000 mg/L) will typically introduce bias at the extremes due to weighting and response behavior. In your case, the high-end (isolate) can get pulled down slightly depending on how the regression is fitting across the full range. Splitting into two curves is the right move, so your comparison across matrices will be very telling.

On converting Empower results to % weight — this depends on how your method is structured, but at a high level:

  • Empower gives you concentration in mg/L
  • You then apply your total dilution factor
  • And relate that back to your original sample weight

A simplified expression is:

% (w/w) ≈ (Concentration × Dilution Factor) ÷ (10 × Sample Weight)

(assuming your units are mg/L and grams)

That said, this is one of those areas where small differences in how the method is configured (units, dilution entry, processing method setup) can significantly affect the final result — especially when you’re trying to match a third-party lab within ±2%.

Since you’re now running dual calibrations and working across multiple matrices, you’re essentially at the stage where method consistency and calculation structure become critical.

If it helps, I’d be happy to take a proper look at one full example (your calibration, one sample prep, and how it’s processed in Empower) and map everything out cleanly so your % potency calculation is locked in and reproducible across all matrices.

You’ve already done the hard part — this is really about tightening the last few pieces so your system behaves predictably.

Let me know.