Skip to main content
marimo makes it easy to share your work - export to static formats, deploy as web apps, or collaborate via version control.

Export Formats

marimo can export notebooks to multiple formats:

Exporting to HTML

Create standalone HTML files with embedded outputs.

Basic Export

The exported HTML includes:
  • All cell outputs (plots, tables, text)
  • Optional source code
  • Styling and formatting

Options

Passing Arguments

Export with custom CLI arguments:

WebAssembly (WASM) Export

Export fully interactive notebooks that run entirely in the browser using Pyodide.

Basic WASM Export

Features

The exported HTML includes:
  • Python runtime (via Pyodide)
  • All notebook code
  • Required assets
  • No server needed!
Generate Cloudflare Worker config for easy deployment:
Creates index.js and wrangler.jsonc for deployment.

Serving WASM Files

WASM exports must be served via HTTP, not opened directly (file:// won’t work).

Package Compatibility

Pyodide supports most pure-Python packages. Some packages with C extensions may not work. Check the Pyodide package list.

Exporting to PDF

Create printable PDF reports from your notebooks.

Basic PDF Export

Options

Advanced Configuration

For better rendering of interactive widgets:
PDF export requires nbformat and nbconvert packages:

Export to Script

Convert to a flat Python script in topological order.
The exported script:
  • Executes cells in dependency order
  • Removes marimo-specific decorators
  • Can be run as a standard Python script

Export to Markdown

Export as markdown with code fences:
Generated markdown:
Requires nbformat:

Deploying as Web Apps

Running on a Server

Deploy marimo notebooks as web applications:

Docker Deployment

Example Dockerfile:
Build and run:

Cloud Platforms

Deploy to Cloudflare

Use WASM export with --include-cloudflare flag, then:

Deploy to Heroku

Create Procfile:

Version Control

marimo notebooks are pure Python files, making them ideal for Git.

Best Practices

1

Track .py files

Commit your notebook .py files directly:
2

Readable diffs

Since notebooks are Python code, diffs are human-readable:
3

Ignore outputs

No need to track outputs - they’re generated at runtime:
.gitignore

Collaboration

Workflow for teams:
  1. Create a branch for your analysis
  2. Edit the notebook with marimo edit
  3. Commit changes to the .py file
  4. Create pull request with readable diffs
  5. Review code like any Python file
  6. Merge when approved
marimo’s reactive execution ensures notebooks always run top-to-bottom, eliminating hidden state issues common in Jupyter.

Sharing on GitHub

README Examples

Reference notebooks in your README:
README.md
Or run as a dashboard:

Next Steps

Converting from Jupyter

Migrate existing .ipynb notebooks

Package Management

Manage dependencies with PEP 723