LNP Formulation Optimization for mRNA
LNP formulation optimization for mRNA with real CovaLNP tool output: MC3 baseline 86.3% EE, 94.9 nm, PDI 0.150, and an NSGA-II Pareto front reaching 88.0%.
Oliver Kraft
CovaSyn

An mRNA-LNP formulation has four lipid molar fractions that must sum to 100, an N/P ratio, a choice of ionizable lipid, and at least four responses you care about at once: encapsulation efficiency, particle size, polydispersity and expression. One-factor-at-a-time screening in that space burns weeks of RNA and nanoprecipitation runs before you know whether the new ionizable lipid was even worth making. The useful question is not "what is the best formulation" but "which twelve of these hundred candidates deserve bench time".
This article walks the triage workflow using CovaLNP, the CovaSyn module for lipid nanoparticle formulations. Every number below is verbatim output from a live tool call, and the caveats sit next to the numbers.
What CovaLNP is
CovaLNP is a SMILES-native ML engine for LNP formulations. You give it the ionizable lipid as a structure, not as a name from a lookup table, plus the helper lipid / cholesterol / PEG-lipid molar fractions and the N/P ratio. It returns a predicted property vector. Because the lipid enters as SMILES, a novel in-house structure that has never been synthesised drops in exactly like DLin-MC3-DMA does.
Four tools cover the workflow:
| Tool | What it answers |
|---|---|
covalnp_predict | Score one formulation: EE, size, PDI, expression |
covalnp_optimize | Multi-objective search over lipid fractions and N/P |
covalnp_compare | Head-to-head between ionizable lipids at matched ratios |
covalnp_suggest | Which experiment to run next, ranked by expected information gain |
Step 1: score the benchmark you already trust
Start from something you have run in the lab. DLin-MC3-DMA is the legacy siRNA workhorse and still the reference most groups anchor to.
A covalnp_predict call on an MC3 mRNA-LNP at 50 / 10 / 38.5 / 1.5 molar (ionizable / DSPC / cholesterol / PEG-lipid), N/P 6, returned:
- Encapsulation efficiency: 86.3 %
- Particle size: 94.9 nm
- PDI: 0.150
- Predicted expression: 3.56 (HeLa)
That is one call for the whole vector. The point is not that 86.3 % is a guarantee. The point is that you now have a model-internal reference on the same scale as every candidate you are about to screen, so differences between candidates mean something even where the absolute value carries error.
Read expression carefully: 3.56 is a unitless model score, higher is better. It is not luciferase RLU, not percent transfected cells, and it is not convertible to either. Treat it strictly as a ranking coordinate.
Step 2: optimize the ratios, not just the lipid
Most formulation groups fix the ionizable lipid and then hand-tune ratios. That is where a multi-objective optimizer earns its keep, because EE, size and PDI do not move together.
covalnp_optimize runs NSGA-II across the ionizable x helper x cholesterol x PEG x N/P space under your constraints and returns a Pareto front rather than a single answer. On an MC3 starting formulation predicted at 77.3 % EE, the run returned a front spanning 80.2 % to 88.0 % EE, with every candidate on the front constraint-valid.
The best candidate on encapsulation:
| Component | Molar % |
|---|---|
| DLin-MC3-DMA (ionizable) | 30.7 |
| DOPE (helper) | 15.3 |
| Cholesterol | 51.2 |
| DMG-PEG2000 | 2.8 |
| N/P ratio | 3.9 |
Predicted EE: 88.0 %. Pareto neighbours came in at 83.3 % and 82.1 %, so the front is genuinely spread rather than a cluster of near-duplicates.

Two things a formulator should notice immediately. The optimizer pushed cholesterol up to 51.2 mol% and the ionizable down to 30.7 mol%, well away from the conventional 50/10/38.5/1.5 recipe. And it pulled N/P from 6 down to 3.9. Both are testable predictions - which is the entire value. You get a small set of deliberately non-obvious ratio combinations to put on the bench, instead of a grid centred on what you already do.
Honest note on this run: covalnp_optimize returns encapsulation reliably, but its predicted_transfection field came back as 0.0 in our runs, an internal quirk rather than a real prediction. So treat the optimize step as an EE-and-constraints step, and get expression and size from covalnp_predict or covalnp_compare on the shortlisted points. Do not build a story on an optimizer field that is returning a placeholder.
Step 3: compare ionizable lipids head to head
Ratio tuning has a ceiling. Changing the ionizable lipid moves more.
covalnp_compare at matched ratios, MC3 versus ALC-0315 supplied by SMILES:
| Response | MC3 | ALC-0315 | Direction |
|---|---|---|---|
| Expression (unitless) | 3.56 | 3.81 | better |
| Encapsulation | 77.3 % | 84.4 % | better |
| Particle size | 94 nm | 113 nm | worse |
This is the honest shape of a real comparison. Two responses improve, one degrades. A 113 nm particle is not automatically disqualifying, but if your target product profile has a size specification with an upper bound near 100 nm, the model just told you that the potency gain costs you headroom on size, and that is a decision for a human with a TPP in front of them, not for an optimizer.
Note that ALC-0315 was passed as SMILES, not as a name. Name-based lookup did not resolve reliably to distinct features in our testing - for example SM-102 by name did not produce differentiated results. Always supply the structure.
Step 4: pick the next experiment on information, not intuition
If you can only run six formulations this month, the question is which six teach you the most.
covalnp_suggest ranks candidates by expected information gain rather than by predicted mean alone. In our run, ALC-0315 came out first with predicted expression 3.81 at EIG 10.97; the next candidate, CKK-E12, trailed at 3.70. Ranking on information gain rather than raw predicted score is what keeps an active-learning loop from collapsing onto the one lipid family the model already knows well.
What this does not tell you
Be blunt with yourself and with your reviewers about the boundary.
- These are predictions, not measurements. No CovaLNP number replaces DLS, RiboGreen, cryo-TEM or an in vivo readout. The workflow reorders your queue; it does not shorten your validation.
- Expression is a unitless score. 3.56 versus 3.81 is a ranking, not a fold-change in protein output. Do not put it in a report as if it were an assay result.
- Applicability domain matters. A lipid whose chemistry sits far from the training distribution gets a prediction with error the point estimate does not show. Novel headgroups and unusual linker chemistries are exactly where confidence is lowest.
- The optimizer optimizes what you constrain. It has no view on scalability, on solvent removal, on lipid impurity profiles, on stability at 2-8 degrees C, or on whether your PEG-lipid supplier can deliver at scale.
- Size is the response to watch. In our runs, gains in encapsulation and expression repeatedly came with size increases. If size is a critical quality attribute for you, constrain it explicitly rather than reading it after the fact.
- `covalnp_explain` (feature attribution) is enterprise-gated, so on the standard tier you get rankings without SHAP-level attributions.
A realistic workflow
1. Predict your current in-house formulation. Confirm the model puts it where you expect relative to MC3.
2. Run covalnp_optimize with your real constraints, including a hard size ceiling.
3. Take the top 3-5 Pareto points, re-score them with covalnp_predict to recover expression and size.
4. Run covalnp_compare on your two or three candidate ionizable lipids at the best ratio set.
5. Put 6-12 formulations on the bench. Feed the measured EE and size back in.
That last step is the one that compounds. The model is triage; your data is truth.
Frequently asked questions
What is LNP formulation optimization for mRNA?
It is the process of choosing the ionizable lipid, the molar fractions of helper lipid, cholesterol and PEG-lipid, and the N/P ratio, so that encapsulation efficiency, particle size, polydispersity and expression all land inside the target product profile. Because those responses trade off against each other, it is a multi-objective problem, and single-response optimization usually improves one attribute while quietly degrading another.
Can encapsulation efficiency be predicted before running the formulation?
It can be estimated. In a CovaLNP run, covalnp_predict scored an MC3 mRNA-LNP at 86.3 % encapsulation, 94.9 nm and PDI 0.150 from lipid SMILES and molar ratios alone. These are model predictions used for screening triage, not analytical measurements. They are useful for ranking a candidate list before bench work, and they do not replace RiboGreen or DLS characterisation.
What N/P ratio should I use for an mRNA LNP?
There is no universal value; it depends on the ionizable lipid and the rest of the composition. In a covalnp_optimize NSGA-II run starting from a conventional N/P 6 formulation, the best-encapsulation Pareto candidate sat at N/P 3.9 with 30.7 mol% ionizable lipid, 15.3 mol% DOPE, 51.2 mol% cholesterol and 2.8 mol% DMG-PEG, predicted at 88.0 % EE. Treat that as a hypothesis to test, not a recommendation.
How do I screen a novel in-house ionizable lipid?
Supply it as SMILES. CovaLNP is structure-native, so a lipid that has never been synthesised is scored the same way a literature lipid is. Do not rely on lipid names: in our testing, name-based entry did not always resolve to distinct features, whereas the same lipid supplied by SMILES produced differentiated predictions. Flag any structure far from the training chemistry as out of domain.
What does the expression or transfection number mean?
It is a unitless model score where higher is better, used to rank formulations against each other. It is not a luciferase reading, a percent-transfected figure, or a fold-change. In a CovaLNP comparison, MC3 scored 3.56 and ALC-0315 scored 3.81 - meaning ALC-0315 ranks higher, not that expression rises by any specific measured amount.
Does an in-silico Pareto front replace a DoE?
No. It narrows what the DoE has to cover. A model-derived front tells you which region of the composition space is worth a designed experiment, so you can spend your runs on a tighter, better-centred design. The design of experiments, the replication and the statistical analysis of the measured data still have to happen for any claim you intend to defend.
Related reading
- Mixture designs for formulation DoE - why components that sum to 100 break a factorial design
- Response surface methodology tutorial - fitting and interpreting the model behind an optimum
- ICH Q8 design space, NOR and PAR explained - turning an optimized region into a defensible operating range
- QbD process development: DoE, RSM and ML workflow - where in-silico screening fits in the wider development path
Bring your own ionizable lipid SMILES and score it on the free tier before you book bench time. - Ionizable Lipid Screening Straight From SMILES
Tools for this topic
Use these in your AI agent right away.
- CovalnpLNP formulation for mRNA: encapsulation, size, N/P.
