Optimization suite

Offline-first optimization with industrial-grade solvers

Five production optimization solvers compiled to WebAssembly. Linear, mixed-integer, quadratic, conic, and nonlinear programs run entirely in your browser with MATLAB®-compatible syntax. No signup. No server round-trip. No cost.

The five-solver stack

Each solver below is a production library in its own right. We compile them to WebAssembly without touching the solver internals, then expose MATLAB-compatible entry points on top.

LP
FUSE LP
linprog
Linear programs

Rust dual-simplex and barrier IPM, compiled to a 1.3 MB WASM module with SIMD128. Our own solver; powers the hot path for continuous LPs.

License: AGPL-3.0+ / commercial
MIP
HiGHS
intlinprog
Mixed-integer LPs

Open-source LP/MIP workhorse used in research pipelines worldwide. Branch-and-cut with presolve, cuts, and heuristics.

License: MIT
QP
Clarabel
quadprog / coneprog
QP, SOCP, SDP

Stanford interior-point conic solver (Rust). One unified method for QPs, second-order cone, and semidefinite programs.

License: Apache-2.0
QP+
PIQP
quadprog_piqp
Convex QPs with warm start

ETH Zurich proximal interior-point QP solver. Designed for MPC loops and sequential QP problems where warm-starting matters.

License: BSD-2
NLP
NLopt
fmincon / fminunc / ga
Nonlinear optimization

30 nonlinear algorithms: L-BFGS, SLSQP, COBYLA, MMA, Nelder-Mead, BOBYQA, DIRECT, CRS, ISRES, StoGO, and more.

License: LGPL-2.1+

LP benchmark numbers

Median solver-internal time for FUSE LP compiled to WebAssembly, run in Node 20+ on Apple M-series hardware, on 30% dense random feasible LPs (0 ≤ x ≤ 10). Dated 2026-04-12.

Size (m × n)NonzerosFUSE WASM (ms)WASM overheadObjective gap
50 × 507800.493.66×3.5e-10
100 × 1003,0051.652.39×2.3e-10
250 × 25018,81824.661.63×2.7e-07
500 × 50074,928230.11.85×2.9e-08
750 × 750168,809958.42.11×8.5e-08
1000 × 1000299,4382,682.02.42×2.6e-08
1500 × 1500673,93412,979.82.89×6.6e-07
2000 × 20001,200,39741,867.93.54×4.4e-07

How to read this. WASM overhead is the ratio vs the same Rust code built natively, and sits in the 1.6×–3.5× band — the expected cost of a WebAssembly runtime. The algorithm, pivoting rules, and sparse LU factorization are identical across compile targets.

To our knowledge, FUSE WASM is the fastest in-browser Rust-authored LP solver we are aware of. If you have seen a faster one, we would love to know about it. Run the numbers yourself →

Correctness before speed

A fast wrong answer is not useful. Across every LP instance above, the FUSE WASM optimal value matches the reference solver’s objective to within 1e-7 relative tolerance on small and medium problems, and within 1e-4 on the very largest cells where floating-point accumulation dominates. The same holds across fat, thin, and square problem shapes.

Objective agreement is the claim that matters more than raw wall-clock speed: it demonstrates that the solver is converging to the same optimum a reference commercial solver finds. Performance without correctness is marketing; performance with correctness is a tool.

Frequently asked questions

Is the SimLab optimization suite free?
Yes. There is no signup, no credit card, no metered runs, and no license prompt. Open the workspace and compute. SimLab is dual-licensed under AGPL-3.0+ and a commercial license; most users never need to think about the license because the web app is free to use.
Does it really work offline?
Yes. After your first visit, a service worker caches the SimLab runtime and all WebAssembly solver modules. Subsequent opens work with no network connection. You can fly, commute, or work in a remote site and continue solving LPs, QPs, and nonlinear programs without hitting any server.
How does the WebAssembly build compare to a native install?
The WASM overhead vs our native Rust build sits in the 1.6x to 3.5x band on typical dense LPs. This is the expected cost of running dense numerical code through a WebAssembly runtime instead of a native CPU build. The solver algorithms, pivoting rules, and sparse LU factorizations are identical; only the compile target differs.
Will my existing .m files work?
For the optimization toolbox functions covered here (linprog, intlinprog, quadprog, fmincon, fminunc, fminsearch, ga, fzero, fsolve, lsqcurvefit), the argument order and return shape match. Paste your .m file into SimLab and press Run. We track compatibility gaps in a public issue tracker.
What license is SimLab under?
SimLab itself is dual-licensed AGPL-3.0+ / commercial. The bundled solvers carry their own licenses: FUSE LP (AGPL-3.0+ / commercial), HiGHS (MIT), Clarabel (Apache-2.0), SCS (MIT), PIQP (BSD-2), and NLopt (LGPL-2.1+). If you are shipping a closed-source product built on SimLab, contact us for a commercial license.
Is my data sent to a server?
No. All solvers run in-browser via WebAssembly. Your objective coefficients, constraints, and solutions stay local to the tab. There are no telemetry round-trips on solve.
Can I re-run these benchmark numbers myself?
Yes. The interactive runner at /simlab/benchmark executes the same problem generator in your own browser. Numbers vary with your CPU; the ratios between sizes are stable.
What is the largest LP SimLab can solve in-browser?
We have measured up to 2000x2000 dense LPs (1.2 million nonzeros) on Apple M-series hardware. Memory, not CPU, is the practical ceiling in browsers; very large sparse problems with millions of variables are better handled by the native commercial build.

Try SimLab now

Paste a .m file that calls linprog, quadprog, or fmincon. Press Run. That’s the whole onboarding.

MATLAB® is a registered trademark of The MathWorks, Inc. SimLab is an independent project by Simulations4All and is not affiliated with, endorsed by, or sponsored by The MathWorks, Inc.