marimo

marimo

Reactive Python notebook stored as pure .py files: no hidden state, Git-friendly, SQL built in, deploys as apps or WASM.

🔗 Visit marimo
📁 Editors, IDEs & Dev Tools🗣️ English

Description

Data scientists write their analyses in 'notebooks' — documents that mix code, text and charts. The standard tool, Jupyter, has old design flaws: results can silently get out of sync with the code, and its files don't work well with team collaboration tools. marimo is a modern replacement that fixes those flaws, and it can even turn a notebook into a small interactive web page. marimo is a reactive Python notebook that fixes the two structural problems of Jupyter: hidden state and unversionable files. Notebooks are stored as pure Python files, so they diff cleanly in Git and run as scripts; execution is a reactive dependency graph, so changing a cell automatically re-runs everything that depends on it and stale state simply cannot exist. SQL is first class — cells can query dataframes (Polars, Pandas), DuckDB, PostgreSQL, MySQL or SQLite and return results as dataframes. Interactive UI elements like sliders, dropdowns, dataframe viewers and chat panels bind directly to Python values without callback plumbing, which lets a notebook double as a deployable web application, a slide deck, or a WebAssembly page that runs entirely in the browser. AI-assisted coding is built in, and a VS Code extension plus CLI cover both editor camps. In one tool it replaces Jupyter, Jupytext, ipywidgets, Papermill and part of Streamlit. marimo is Apache 2.0 with no paid tier, has 21k+ GitHub stars, and is used at Stanford, UC Berkeley, OpenAI, BlackRock, Shopify and Moderna.

💬 Our review

The short version: if you're starting a new Python data project today, this is probably the notebook to pick — free, modern, and it removes Jupyter's classic traps.

marimo attacks the two things everyone quietly hates about Jupyter — hidden out-of-order state and JSON files that make code review impossible — and its answers are the right ones: a reactive dependency graph and pure-Python storage. The deploy-as-app story is a real bonus; many teams can delete a Streamlit wrapper that existed only to share a notebook. Adoption names (OpenAI, BlackRock, Stanford) and 21k+ stars say this is past the experiment phase. The honest costs: the reactive model enforces discipline — no cyclic dependencies, no redefining a variable across cells — so gnarly legacy notebooks won't port without refactoring; the Jupyter extension and widget ecosystem doesn't carry over; and very expensive cells need explicit lazy execution configuration to avoid unwanted re-runs. Against alternatives: Jupyter still wins on ecosystem breadth, Hex on hosted team collaboration, Observable on JS-native data apps. But marimo is free, Apache 2.0, with no paid tier and no lock-in — for new Python data and ML projects in 2026, it should honestly be the default choice.

💰 Pricing

FreeFully open source under Apache 2.0; no paid tier
Open Source 0

📊 Global score

58Average
🌐Availability15/100Faible

1 language · 0 platform

📄Profile100/100Excellent

Profile completeness

🤖 AI-enriched data

💰 Pricing model💳 Free· Apache 2.0 open source, no paid tier
👥 Target audienceData scientists | ML engineers | Educators
🗣️ Languagesen
🌍 Target countriesWorldwide
👍

Pros

No hidden state (reactive execution)

Pure .py files, Git-friendly

Deploys as web app or WASM

👎

Cons

Jupyter widgets don't carry over

Legacy notebooks need refactoring

❓ Frequently asked questions

Can I convert my existing Jupyter notebooks?
Yes, marimo converts .ipynb files, but notebooks relying on out-of-order execution or variable redefinition will need refactoring — the reactive model forbids exactly those patterns.
What happens when a cell is expensive to run?
By default dependents re-run automatically when you change a cell. For costly computations you can configure lazy execution so marimo marks cells stale instead of re-running them.
How do I share a notebook as an app?
Run it with marimo's app mode or export to WebAssembly — the same .py file serves as notebook, script and interactive web app, with UI elements bound to Python values.
Is there a paid version?
No. marimo is Apache 2.0 open source with no paid tier; the company behind it also offers a hosted cloud, but the tool itself is free.
Is it worth the money compared to alternatives?
marimo is completely free, while Hex starts around $36/user/month for teams, and Jupyter + Streamlit are free but split the job across two tools. Price simply isn't a factor against it — the only real cost is the migration effort from existing Jupyter habits.
Which notebook tool should you pick for your case?
New Python data project: marimo. Large legacy notebook codebase or exotic Jupyter extensions: stay on Jupyter. Hosted, collaborative analytics for a data team: Hex. JavaScript-native data visualization: Observable.