Writing a notebook is not just about writing the final document — Pluto empowers the experiments and discoveries that are essential to getting there.
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 easy to install.
- simple - no hidden workspace state; friendly UI.
A Pluto notebook is made up of small blocks of Julia code (cells) and together they form a reactive notebook. When you change a variable, Pluto automatically re-runs the cells that refer to it. Cells can even be placed in arbitrary order - intelligent syntax analysis figures out the dependencies between them and takes care of execution.
Cells can contain arbitrary Julia code, and you can use external libraries. There are no code rewrites or wrappers, Pluto just looks at your code once before evaluation.
Your notebooks are saved as pure Julia files (sample), which you can then import as if you had been programming in a regular editor all along. You can also export your notebook with cell outputs as attractive HTML and PDF documents. By reordering cells and hiding code, you have full control over how you tell your story.
Pluto offers an environment where changed code takes effect instantly and where deleted code leaves no trace. Unlike Jupyter or Matlab, there is no mutable workspace, but rather, an important guarantee:
At any instant, the program state is completely described by the code you see.No hidden state, no hidden bugs.
Your programming environment becomes interactive by splitting your code into multiple cells! Changing one cell instantly shows effects on all other cells, giving you a fast and fun way to experiment with your model.
In the example below, changing the parameter
A and running the first cell will directly re-evaluate the second cell and display the new plot.
Built-in package manager
Pluto uses syntax analysis to understand which packages are being used in a notebook, and it automatically manages a package environment for your notebook. You no longer need to install packages, you can directly import any registered package like
DataFrames and use it.
To ensure reproducibility, the information to exactly reproduce the package environment is stored in your notebook file. When someone else opens your notebook with Pluto, the exact same package environment will be used, and packages will work on their computer, automatically! more info
Lastly, here's one more feature: Pluto notebooks have a
@bind macro to create a live bond between an HTML object and a Julia variable. Combined with reactivity, this is a very powerful tool!
You don't need to know HTML to use it! The PlutoUI package contains basic inputs like sliders and buttons. Pluto's interactivity is very easy to use, you will learn more from the featured notebooks inside Pluto!
new CustomEvent("input"), making it compatible with the
Pluto for teaching
Pluto was developed alongside the free online course Introduction to Computational Thinking at MIT, with the goal of creating a programming environment that is powerful, helpful and interactive, without being too intimidating for students and teachers.
Let's do it!
For one tasty notebook
- Julia v1.6 or above
- Linux, MacOS or Windows, Linux and MacOS will work best
- Mozilla Firefox or Google Chrome
Run Julia, enter
] to bring up Julia's package manager,
and add the Pluto package:
(v1.7) pkg> add Pluto
Ctrl+C to return to the
To run Pluto, run the following commands in your Julia REPL:
julia> import Pluto
Pluto will open in your browser, and you can get started!
Questions and Help
Questions? Have a look at the FAQ.
Interested in learning Julia, Pluto and applied mathematics? Join the open MIT course taught by Alan Edelman, David P. Sanders & Grant Sanderson (3blue1brown) (and a bit of me): Introduction to Computational Thinking, Spring 2021.
Contribute to Pluto
Follow these instructions to start working on the package.
Pluto.jl is open source! Specifically, it is MIT Licensed. Pluto.jl is built by gluing together open source software:
Unless otherwise specified, the included featured notebooks have a more permissive license: the Unlicense. This means that you can use them however you like - you do not need to credit us!
Your notebook files are yours, you also do not need to credit us. Have fun!
From the authors
The Pluto project is an ambition to rethink what a programming environment should be. We believe that scientific computing can be a lot simpler and more accessible. If you feel the same, give Pluto a try! We would love to hear what you think.
You can chat with us
- talk with fellow Pluto users in the Zulip chat room (search for the
- use Pluto's built-in feedback system:
- contact fons via email
Questions? Have a look at the FAQ.
Development of Pluto.jl is partially sponsored by
|The free online course Introduction to Computational Thinking at MIT uses Pluto notebooks to teach scientific computing in a new way. Homeworks react to the student in realtime, with live answer checks and visualizations while you solve problems.
|QuEra Computing uses a Pluto notebook as an online dashboard to control their quantum computer!
|JuliaHub by Julia Computing enables the creation and editing of Pluto notebooks on the cloud!
|The mission of NumFOCUS is to promote open practices in research, data, and scientific computing by serving as a fiscal sponsor for open source projects and organizing community-driven educational programs.