Lightweight reactive notebooks for Julia ⚡ - welcome to Pluto!

Explore models and share results in a notebook that is

  • reactive - when changing a function or variable, Pluto automatically updates all affected cells.
  • lightweight - Pluto is written in pure Julia and is an installable package.
  • modern - responsive, intuitive user experience; beautiful exported documents; custom themes.


The central idea is that Pluto notebooks are reactive, just like Observable notebooks, but using Julia instead of JavaScript. Cells can be placed in any order - our intelligent AST parser figures out the dependencies between them and takes care of execution. When you change a variable, Pluto automatically re-runs the cells that refer to it.

Unlike Jupyter or Matlab, there is no mutable workspace, but rather a one-to-one corresponce between variables and code. In a Pluto notebook, the value of a variable always corresponds to the code that defines it.


Cell output is simple: one cell outputs one variable, which is displayed using the richest available formatter. We believe that this limitation actually makes programming easier!

Your notebooks are saved as pure Julia files, which you can then import as if you had been programming in a regular editor all along. You can also export your notebook with output as attractive HTML and PDF documents. By reordering cells and hiding code, you have full control over how you tell your story.


(To developers: follow these instructions to start working on the package.)

After installing julia, add the package:

julia> ]
(v1.0) pkg> add Pluto

To run the notebook server:

julia> using Pluto

Then go to http://localhost:1234/ to start coding!


This package is still in its early days - go to the issue tracker to see what's up!

Let us know what you think! 😊

Questions? Have a look at the FAQ.

Created by Fons van der Plas and Mikołaj Bochenski. Inspired by Observable.