Symbolic regression engine

Find the equation
hidden in your data

Closyr breeds thousands of candidate expressions, keeps the ones that fit, and hands you a formula you can read — not a black box. It runs in your browser on WebAssembly, or on a server when the data gets big.

Searching generation 0004
Best expression f(x) = 0.5x² + sin(x)
0.9964
What you get

Readable formulas

The output is an expression — 0.5x² + sin(x) — not a fitted black box. Every candidate comes with its complexity, so you can trade accuracy for something you can actually publish.

Runs in your browser

The whole engine compiles to WebAssembly. Turn on In browser and your data never leaves the tab — no upload, no account, no server.

Many populations at once

Dozens of populations evolve independently and trade their best members, which keeps diversity up and stops the search settling into one local optimum.

Fast where it counts

Expressions are compiled to flat bytecode and scored in SIMD batches, so the search spends its time exploring instead of interpreting trees.

Constants get tuned

Every promising structure is handed to a Levenberg–Marquardt pass that fits its numeric constants, so a good shape isn't thrown away for a bad coefficient.

Watch it happen

The equation re-typesets as the search improves it, next to a live fit plot and the accuracy-versus-complexity front. Pause, resume, or stop whenever you've seen enough.

How a run goes
  1. 01

    You give it data

    Pick a benchmark dataset, upload a CSV, or draw the curve you're thinking of with the brush tool. One to fifteen input variables.

  2. 02

    Populations seed and mutate

    Each population starts from a different family of expressions — polynomial, trigonometric, exponential — and mutates, breeds, and prunes from there.

  3. 03

    Survivors trade places

    Good expressions migrate between populations. A hall of fame keeps the best expression found at every complexity, not just the best overall.

  4. 04

    You pick from the front

    The run ends with a set of solutions trading accuracy against size. Click any point on the front to see that expression plotted against your data.

Where it runs

In your browser

  • The full engine, compiled to WebAssembly
  • No server, no network, no account
  • Your data stays in the tab
  • Optional Web Worker parallelism

On a server

  • Every core running populations in parallel
  • Asynchronous islands — no barrier between them
  • Comfortable with large datasets
  • Progress streams back live