Why Marimo Over Jupyter
| Feature | Jupyter | Marimo |
|---|---|---|
| Reactivity | Manual re-run cells | Auto-updates dependents |
| File format | JSON (.ipynb) | Pure Python (.py) |
| Git diffs | Unreadable JSON diffs | Clean Python diffs |
| Hidden state | Constant issue | Impossible by design |
| Run as script | Needs conversion | python notebook.py |
| Deploy as app | Needs Voila/Streamlit | marimo run notebook.py |
| SQL support | Needs extensions | Built-in |
Reactivity
import marimo as mo
x = mo.ui.slider(1, 10, value=5)
x
# Cell 2: automatically re-runs when slider changes
result = x.value ** 2
mo.md(f"**{x.value}squared = {result}**")No more running cells out of order. Marimo builds a dependency DAG and ensures consistent state.
Pure Python Files
Notebooks are stored as .py files — readable, diffable, and executable:
import marimo
app = marimo.App()
@app.cell
def cell1():
import pandas as pd
data = pd.read_csv("sales.csv")
return data,
@app.cell
def cell2(data):
summary = data.groupby("region").sum()
return summary,Built-in UI Components
Sliders, dropdowns, tables, charts, file upload, date pickers — all reactive and composable.
SQL Support
result = mo.sql(f"SELECT region, SUM(revenue) FROM {sales_df} GROUP BY region")Deploy as Web App
marimo run dashboard.py --host 0.0.0.0 --port 8080FAQ
Q: What is Marimo? A: Marimo is a reactive Python notebook with 20,000+ GitHub stars that auto-updates dependent cells, stores notebooks as pure .py files, and deploys as web apps with one command.
Q: Can I convert Jupyter notebooks?
A: Yes. marimo convert notebook.ipynb > notebook.py converts any Jupyter notebook.
Q: Is Marimo free? A: Yes, fully open-source under Apache-2.0.