marimo

marimo

marimo team · Coding

marimo is a free, open-source reactive Python notebook for data scientists and developers who want reproducible code, Git-friendly files, and shareable apps.

Interface preview of marimo

About marimo

What Is marimo

marimo is an open-source Python notebook built around one idea: your code and its outputs should never disagree. Instead of tracking which cells you ran and in what order, marimo runs dependent cells automatically whenever you change a value somewhere else in the notebook, which removes the hidden state that makes traditional notebooks hard to trust and even harder to hand off to a teammate.

It stores every notebook as a plain .py file, so version control works the way it does for the rest of your codebase. You can run the same file as a script, launch it as an interactive web app, or open it in the browser through WebAssembly with no server at all. A free hosted option, molab, lets you try it online.

The catch? Reactive execution means an expensive cell reruns on every small change, so heavy workflows need care. You can mark slow cells as stale instead of auto-running them, but that's a setting you have to think about. marimo cloud is still in closed beta, which means teams that want fully managed hosting without running their own servers have to either wait for it to open up or set up the infrastructure themselves.

Getting Started

  1. Install the package with pip (pip install marimo), uv, or conda, or skip installs and open a notebook in molab, the free online version.
  2. Run marimo edit in your terminal to launch the editor and create a new notebook.
  3. Write Python in a cell. When you run it, marimo automatically runs any cells that depend on its variables.
  4. Add interactivity by binding sliders, tables, or plots to Python variables. No callback functions needed.
  5. Save your work as a .py file, then run it as a script or deploy it as a web app when you're ready to share.

Product Information

A quick look at marimo's pricing, supported platforms, and performance.

Free PlanYes
Paid Plans$0
PlatformWeb, Linux, macOS, Windows
Developermarimo team
CategoryCoding
Release DateJun 2020
Latest UpdatedOct 2025
Website Visits144.2K
Website Global Rank286.2K
API AvailabilityN/A

Best for

The users, tasks, and scenarios where this tool fits best.

Users

  • Data scientists
  • Developers
  • Educators

Tasks

  • Exploring datasets and building charts
  • Writing SQL against dataframes and warehouses
  • Turning a notebook into a small internal tool

Scenarios

  • Reproducing a model training run months later and getting the same numbers.
  • Sharing an interactive report where reviewers can drag a slider instead of reading static output.
  • Prototyping a dashboard in the browser with no backend setup via WebAssembly.

Key features

Reactive Execution

This is the feature that defines marimo. Run one cell and every cell that depends on it re-runs, so the notebook can't fall into the stale, out-of-order state that trips up Jupyter users. If a cell is expensive, you can tell marimo to mark dependents as stale rather than re-run them. The result is a notebook whose outputs always match the code above them.

Pure Python File Storage

Every marimo notebook is saved as a .py file, not JSON. That means diffs are readable, merge conflicts are manageable, and your notebook lives alongside the rest of your project in Git. You can import functions from one notebook into another, which turns notebooks into reusable modules instead of isolated documents.

Built-in Interactivity

You bind UI elements directly to Python variables. A slider isn't wired up through callbacks. It just reads and writes a value, and marimo handles the rest. Tables, plots, and form inputs all work the same way, which makes turning an analysis into a small app more approach, not less.

SQL Support

marimo has native SQL support alongside Python. You can query dataframes, databases, warehouses, and lakehouses without leaving the notebook, and mix the results with your Python work. It's a genuine convenience if your analysis lives half in pandas and half in a warehouse.

Run as Script or App

The same file can be executed as a Python script, parameterized by command-line arguments, or deployed as an interactive web app or slide deck. There's no separate export step or rewrite. One file, three ways to use it.

Browser Execution via WebAssembly

marimo can run entirely in the browser through WebAssembly, no server required. That lowers the barrier for sharing a notebook with someone who doesn't want to install anything. It's also how the free molab option gets you running in seconds.

AI-Native Workflows

marimo was designed with AI tooling in mind. You can pair the notebook with AI coding agents like Claude Code, or use the editor's built-in AI features for completion and assistance as you write. The reactive model also helps here, since automated edits can't leave hidden dependencies behind.

Pros and cons

Pros

  • Reactive execution removes hidden state, so outputs always match the code you see.
  • Storing notebooks as `.py` files makes version control and code review straightforward.
  • One file runs as a script, a web app, or in the browser, which cuts down on export work.
  • Free and open source under a permissive license, with no feature paywall.

Cons

  • Reactive re-runs can get expensive on large datasets, forcing you to manage which cells go stale.
  • Fewer third-party plugins and tutorials exist compared to the mature Jupyter plugin library.
  • marimo cloud is still in closed beta, so managed hosting isn't available to everyone yet.

Frequently asked questions

marimo is a reactive Python notebook for data analysis, model training, and SQL queries. It's aimed at people who want reproducible results and Git-friendly files instead of the hidden state that traditional notebooks allow.