Skip to main content

Introduction to marimo

marimo is a reactive Python notebook that transforms how you work with data and code. Unlike traditional notebooks, marimo automatically runs dependent cells when you make changes, keeping your code, outputs, and program state perfectly synchronized.

Reactive by design

Run a cell and marimo automatically runs all dependent cells, eliminating hidden state and manual re-execution

Git-friendly notebooks

Notebooks stored as clean .py files that work seamlessly with version control

Deploy as apps

Transform notebooks into interactive web apps with a single command

Interactive UI elements

Bind sliders, dropdowns, and plots to Python without writing callbacks

What makes marimo different?

marimo solves fundamental problems with traditional notebooks like Jupyter by guaranteeing that your notebook code, outputs, and program state are always consistent.

No hidden state

Every time you run a cell, marimo analyzes your code and automatically runs cells that depend on it. Delete a cell and marimo scrubs its variables from memory. This eliminates the “run cells out of order” problem that plagues traditional notebooks.
import marimo as mo

# When you change this slider...
slider = mo.ui.slider(1, 10, value=5)
slider
# ...marimo automatically re-runs this cell
mo.md(f"The slider value is {slider.value}")

Pure Python notebooks

marimo notebooks are stored as pure Python files, not JSON. This means:
  • Clean diffs in version control
  • Easy code review
  • Import functions from one notebook into another
  • Execute notebooks as scripts: python notebook.py
  • Run tests with pytest

Batteries included

marimo comes with everything you need:

SQL support

Query dataframes, databases, and data warehouses with native SQL cells

AI assistance

Generate code with AI that understands your data context

Rich UI library

Sliders, tables, plots, chat interfaces, and 40+ interactive components

Package management

Auto-install packages on import with built-in dependency tracking

Interactive dataframes

Page, search, filter millions of rows with no code required

Modern editor

GitHub Copilot, vim keybindings, variable explorer, fast completions

Use cases

marimo excels at:
  • Data exploration and analysis - Interactive notebooks that stay consistent as you iterate
  • Research and experimentation - Reproducible notebooks you can trust
  • Internal tools and dashboards - Deploy notebooks as web apps without refactoring
  • Teaching and learning - Students see immediate feedback without hidden state confusion
  • Reports and presentations - Notebooks with dynamic markdown and beautiful layouts

Get started

Quickstart

Install marimo and create your first notebook in minutes

Key concepts

Learn about reactivity, cells, and how marimo notebooks work
Try marimo instantly in your browser with molab, our free online notebook environment.

Philosophy

marimo is designed to be:
  1. Simple - Intuitive APIs that feel natural to Python developers
  2. Immersive - Focus on your work without wrestling with the tool
  3. Interactive - Immediate feedback as you code and explore data
  4. Seamless - Works with your existing tools and workflows
  5. Fun - Enjoyable to use for both quick experiments and serious projects
We believe the tools we use shape how we think. marimo provides a better environment for research, experimentation, and communication with code.

Build docs developers (and LLMs) love