# Pluto 1.0 release!

**URL:** <https://discourse.julialang.org/t/pluto-1-0-release/137296>\
**Category:** Package Announcements\
**Tags:** pluto, notebooks\
**Created:** [May 27, 2026, 3:18pm UTC](https://discourse.julialang.org/t/pluto-1-0-release/137296 "2026-05-27T15:18:02Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![fonsp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fonsp/32/222349_2.png) [@fonsp](https://discourse.julialang.org/u/fonsp)\
**Post date:** [May 27, 2026, 3:18pm UTC](https://discourse.julialang.org/t/pluto-1-0-release/137296/1 "2026-05-27T15:18:03Z")

</div>

After six years, it’s time to release Pluto version 1.0! With this release, I want to celebrate all the progress over the past years, and to symbolise that Pluto is _ready_. I am proud of what we have achieved, and I hope you enjoy it!

This is a long post, so I will give a table of contents. _This post will take 10 minutes to read. It will take longer if you click on links with additional information._

- [Wait… what is Pluto?](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-wait-what-is-pluto-1)
- [Okay! And what’s new in Pluto?](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-okay-and-whats-new-in-pluto-3)
  - [(1/10) Reproducibility & reliability](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-110-reproducibility-reliability-4)
  - [(2/10) Sharing your work](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-210-sharing-your-work-6)
  - [(3/10) Reactivity](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-310-reactivity-8)
  - [(4/10) Interactivity](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-410-interactivity-11)
  - [(5/10) Accessibility and localization](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-510-accessibility-and-localization-14)
  - [(6/10) Education](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-610-education-15)
  - [(7/10) AI tools](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-710-ai-tools-19)
  - [(8/10) Documentation](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-810-documentation-20)
  - [(9/10) Editor tools](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-910-editor-tools-21)
  - [(10/10) Ecosystem](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-h-1010-ecosystem-24)

- [Thank you!](https://discourse.julialang.org/t/pluto-1-0-release/137296#p-638767-thank-you-25)

 

# Wait… what is Pluto?

Pluto is an **interactive environment for notebook programming** in Julia. Our goal is to make scientific computing more _accessible_ and _fun_! You can use Pluto to experiment with code in a safe and friendly environment, and you can use it to write interactive articles, lecture notes and presentations (literate programming).

What’s special about Pluto is:

- **Interactive** : cells are **reactive** (like a spreadsheet) and it’s very easy to add **buttons and sliders** to control your code.
- **Reproducible** : From package management to execution order, Pluto goes to great lengths to make sure that someone else will be able to run your notebook when you’re done!
- **Accessible** : We designed Pluto to teach our own course: [Computational Thinking at MIT](https://computationalthinking.mit.edu/). The result is a programming environment that prioritizes beginners over advanced users!

And Pluto is popular! It’s used by people all around the world ([like these online courses](https://plutojl.org/en/docs/education-showcase/)) and Pluto has been the #1 starred Julia package on GitHub since 2021.

### Try Pluto

Pluto is free and open source, written in Julia and JavaScript. Pluto is super **easy to install** using Julia’s package manager. Start Julia, and run:

```julia
import Pluto
Pluto.run()

```

Want to know more? [Check out our website →](https://plutojl.org)

 ![hand drawing of 3 characters playing with the "Pluto" letters](https://global.discourse-cdn.com/julialang/original/3X/d/7/d70e318762e2cb2c1470502e237801b0e55e713f.png)

# Okay! And what’s new in Pluto?

Well… the [`1.0.0` release](https://github.com/JuliaPluto/Pluto.jl/releases/tag/v1.0.0) itself is a bit unspectacular (just one PR: [“removed deprecations”](https://github.com/JuliaPluto/Pluto.jl/pull/3560)), but in this post I want to give an overview of **highlights from the past years**. If you tried Pluto before, then now might be a good time to check it out again!

## (1/10) Reproducibility & reliability

Pluto 1.0 is very reliable! Courses of 100+ students often report that everyone was able to install Pluto and run course notebooks without problems.

This is the result of countless design choices, bug fixes, testing, built-in strategies to automatically recover from broken states, and care. We have ~2500 automatic test cases, including tests that use web browsers to test Pluto by clicking and typing in the UI.

### Automatic Pkg management

Every notebook has an isolated Pkg environment, and packages are automatically added and removed when needed. When you open a notebook from someone else, the same versions of packages will be used.

We developed GracefulPkg.jl to improve reproducibility when mixing Julia versions. And there is also a new [Project.toml editor](https://github.com/fonsp/Pluto.jl/pull/3218), which gives precise control over which versions are used. You can use the new Julia [`[sources]`](https://pkgdocs.julialang.org/v1/toml-files/#The-%5Bsources%5D-section) feature to use packages from github in a reproducible way.

 ![screenshot of a code snippet that imports the Plots package, with a dynamic inline popup that tells the user that "Plots version 1.41.6 will be installed in the notebook when you run this cell. Installation can take 3 minutes, afterwards it loads in 4 seconds."](https://global.discourse-cdn.com/julialang/original/3X/3/4/34fbff1585d4e3ea83606535e91a43b9226dc4be.png)

## (2/10) Sharing your work

Pluto notebooks can be exported directly to Julia, PDF and HTML. The HTML format is special: it is a self-contained file that renders your notebook exactly as it looked when you exported. It also contains the Julia source code and package environment, which means that if you can read it, you can run it. Here is an [example](https://featured.plutojl.org/basic/turtles-art.html). Since 2025, the Pluto web assets are also self-contained, which means you can open HTML export files without internet. [Read more about exporting →](https://plutojl.org/en/docs/export/)

### Make a website

You can use [`static-export-template`](https://github.com/JuliaPluto/static-export-template) to automatically generate a website from a repository of notebooks, and with PlutoSliderServer.jl you can serve Pluto-based websites that are instantly interactive.

We also launched [pluto.land](https://pluto.land/), a free web service to easily share Pluto HTML exports. It’s like a pastebin, but only for Pluto notebooks.

## (3/10) Reactivity

Pluto notebooks are reactive. Changing one cell **instantly shows effects** on all other cells, giving you a fast and fun way to experiment with your model. There are new ways to control reactivity, which helps when you have **long-running cells**.

### Disable cells

Pluto allows you to **disable a cell** , which means that it will not get executed with reactivity. When one of the dependencies of a disabled cell changes, the disabled cell will **not** get executed as usual.

The cell disabling feature is **reactive** – any cells that depend on a disabled cell will **also be disabled**. This is a really powerful feature, because you can easily disable a large number of cells at once, by disabling a core cell that is used in all of them. [Learn more →](https://plutojl.org/en/docs/disable-cell/)

### Confirm before long runtimes

A new feature in Pluto will **ask for confirmation** when you trigger a reactive chain of cells that might take a long time to run (based on previous runtimes). This gives the option to cancel the run, make more changes, and run everything in a single reactive batch.

 ![screenshot of a popup that says: "This cell and its dependency might take 3 minutes to run. Confirm? No (Escape key), Yes (Enter key). Tip: You can use the disable cell feature to control which cells run reactively."](https://global.discourse-cdn.com/julialang/original/3X/3/7/37b249d81f3096e4e1402b692b556d2a64a2124d.png)

## (4/10) Interactivity

Pluto is **super interactive** since day 1! What’s new: more interactive elements in PlutoUI.jl and new APIs for designing your own widgets.

### New in PlutoUI.jl

The [PlutoUI.jl](https://github.com/JuliaPluto/PlutoUI.jl) package contains lots of new input widgets. You have sliders, switches, buttons, dropdowns, multiselects, textfields, you name it! And it also has a click-for-more widget, a reading-time-calculator, an extra wide Pluto cell, a cell in the side margin, advanced tools for 2D layout, and tools for composing multiple widgets into one! [Check out the complete showcase →](https://featured.plutojl.org/basic/plutoui.jl)

There is also [PlutoTeachingTools.jl](https://github.com/JuliaPluto/PlutoTeachingTools.jl), co-developed with other teachers who use Pluto. It contains everything you need to write interactive lectures, and live homeworks that react to student input.

 ![screenshot of various plutoUI widgets aligned in a grid. there are several sliders, a switch toggle, checkbox select items for "linear" and "quadratic", a dropdown with the sine function selected, a color picker with the color pink selected, a button that says "Recalculate", and a large text input box.](https://global.discourse-cdn.com/julialang/original/3X/0/e/0eaea984ee0a828409a6df46fa26a93f17669fa4.png)

### Advanced: Widgets API

We have gradually rolled out lots of API that lets you write your own widgets, using a high level of integration into the Pluto engine. We expose a [JavaScript runtime](https://plutojl.org/en/docs/javascript-api/), Pluto’s high-performance [Julia-JS connection](https://plutojl.org/en/docs/abstractplutodingetjes/#with_js_link), our [display system](https://plutojl.org/en/docs/abstractplutodingetjes/#@embed), and [more](https://plutojl.org/en/docs/abstractplutodingetjes/#ReactDOMElement). With this API, you can easily add Pluto-specific widgets to an existing package (without adding a Pluto dependency), or write a new package. PlutoUI.jl is also built using this API. [Read an overview →](https://plutojl.org/en/docs/advanced-widgets/)

## (5/10) Accessibility and localization

Pluto is more accessible than ever! We have worked hard to improve **keyboard-only** , mouse-only and touch-only use, **visual accessibility** and **screen reader** support. [Learn more →](https://plutojl.org/en/docs/accessibility/)

Also new: Pluto can be used in **16 different languages** : Chinese (Chinese) _(by [@Fromduststar](https://github.com/Fromduststar))_, Dansk (Danish) _(by [@gwr-de](https://github.com/gwr-de))_, Deutsch (German) _(by [@kellertuer](https://github.com/kellertuer))_, Ελληνικά (Greek) _(by [@pankgeorg](https://github.com/pankgeorg))_, English, Español Latinoamericano (Latin American Spanish) _(by [@gruumsh1](https://github.com/gruumsh1))_, Français (French) _(by [@Pangoraw](https://github.com/Pangoraw) and [@gdalle](https://github.com/gdalle))_, Čeština (Czech) _(by [@kunzaatko](https://github.com/kunzaatko))_, Italiano (Italian) _(by [@disberd](https://github.com/disberd))_, Japanese (Japanese) _(by [@Itou-Kouki](https://github.com/Itou-Kouki))_, Nederlands (Dutch) _(by [@fonsp](https://github.com/fonsp))_, Norsk Bokmål (Norwegian) _(by [@kellertuer](https://github.com/kellertuer))_, فارسی (Persian) _(by [@shosseinib](https://github.com/shosseinib))_, Polski (Polish) _(by [@s-zymon](https://github.com/s-zymon))_, Português (Portugal) (Portuguese Portuguese) _(by [@rgouveiamendes](https://github.com/rgouveiamendes))_ and Suomi (Finnish) _(by [@eteppo](https://github.com/eteppo))_.

Are you interested to contribute to Pluto’s localization? [Check out our documentation →](https://plutojl.org/en/docs/language/)

## (6/10) Education

Inspiration for Pluto comes from my experience teaching Julia. (I currently work on Pluto alongside the course [Bayesian ML](https://bmlip.nl/) at TU Eindhoven, check it out!)

### Error messages

Getting an error message can be scary and demotivating for new programmers, so we did our best to improve the error experience in Pluto. Using web design and Julia heuristics, we try to present the error message and stack trace the way we would explain it to someone else.

Features include:

- Mini preview for your own code
- Explaining what the stack trace is
- Fade-out of internal Julia functions in the stack trace
- Click-to-show the stack trace if the error comes from the cell itself
- Click-to-show stack frames that happened before your own code
- Click-to-show long type annotations

 ![screenshot of an error message in pluto, showcasing the features described previously.](https://global.discourse-cdn.com/julialang/original/3X/4/2/42d521676f145df8c644ac83a62c4d243c7729e2.png)

### Course Website Template

We developed [`computational-thinking-template`](https://github.com/JuliaPluto/computational-thinking-template), a repository template for building **awesome looking course websites**! It features a sidebar, a colorful homepage, built-in search, GitHub Actions, “Edit this Page” links, run with Binder, and much more! This template is based on the successful online course [Computational Thinking at MIT](https://computationalthinking.mit.edu/). The technology behind this course is open source (developed by the Pluto team), and now available as a standalone template. [Read more about the template](https://discourse.julialang.org/t/ann-course-website-template-based-on-computational-thinking-mit/137004), or you can [explore all publishing options →](https://plutojl.org/en/docs/notebooks-online/)

 ![cropped screenshot of the computational thinking course template default website. there is a sidebar, a colorful header and a search bar. The course still has placeholder name, authors, etc.](https://global.discourse-cdn.com/julialang/original/3X/b/9/b94b31b455df6b78a29b40cbfc6eea4300843826.png)

### PlutoTurtles

[PlutoTurtles.jl](https://github.com/JuliaPluto/PlutoTurtles.jl) is a fun way to get started with Julia programming. You can move a little turtle with simple commands to draw lines in any color you want – you make a drawing with code. With Pluto, you can make the drawings **interactive** , by controlling variables with sliders, and Pluto can **highlight lines of code** while the turtle takes steps.

We have a [programming tutorial based on PlutoTurtles.jl](https://featured.plutojl.org/basic/turtles.html), and a [showcase of some simple turtle art](https://featured.plutojl.org/basic/turtles.html).

## (7/10) AI tools

Pluto is not a vibe coding tool, and we are not planning to make it one! We think that AI code generation is useful, but right now, Pluto should still be a tool that helps people get better at writing Julia code.

At the moment, we have one AI-powered feature, which can **automatically fix syntax errors** (like a missing `end` or `"`), but no other types of errors. We hope that this will help you with what you are trying to do, without taking over your creativity.

There are multiple ways to disable AI features if it’s not what you want. Check out our [documentation about AI editor features →](https://plutojl.org/en/docs/ai-editor-features/)

## (8/10) Documentation

Also new! We have a collection of [40 featured notebooks](https://featured.plutojl.org/), which showcase the exciting things you can do with Julia and Pluto. You can read and interact with the featured notebooks directly from the Pluto main menu, or from our website.

And we have a shiny new website – [plutojl.org](https://plutojl.org) ! The website shows what Pluto can do, and it has lots of documentation to explain how to best use Pluto. Oh, and the website is built with [PlutoPages.jl](https://github.com/JuliaPluto/PlutoPages.jl), a new SSG package.

 ![cropped screenshot of the plutojl website showing the documentation navigation sidebar and a search bar](https://global.discourse-cdn.com/julialang/original/3X/9/5/955bf3381bd656c0977c218c548b6e9f537ba57e.png)

## (9/10) Editor tools

The Pluto editor has lots of improvements. [Sergio Vargas](https://github.com/savq) wrote a new parser for Julia that runs in CodeMirror 6, the new code editing system that we use. The new parser is very detailed and performant, which allowed us to (re)write lots of functionality based on syntax-pattern-matching.

### Autocomplete

Pluto has a carefully crafted autocomplete system, which gives code suggestions while you type. It combines static code analysis (from the JS parser) with scope analysis and Julia REPL autocomplete results – an experience optimized for Julia notebooks. I believe it’s good enough to enable automatically while you type, but you can also disable this in the settings.

 ![screenshot of the autocomplete system – the user typed the letter c inside a function, and it autocompletes the argument name correctly along with other functions that start with c.](https://global.discourse-cdn.com/julialang/original/3X/c/e/ceeb764038df83f9c8bf640cb6862e2ae730122d.png)

### More features

We implemented a jump-to-definition plugin, more keyboard shortcuts, a mixed language parser (when using Python/SQL/HTML inside Julia), tabs/spaces setting, copy-link-to-header, and much more.

Pluto also got support for Logging (like `@info`), retro terminal streams (like `println`) and ANSI color rendering. And we improved our rich object viewer, with high-performance displays for HTML, LaTeX, SVG, PNG, and our interactive tree viewer for vector, tuple and dictionary data structures.

## (10/10) Ecosystem

Along the way, we have contributed several packages to the Julia ecosystem: Malt.jl, HypertextLiteral.jl, GracefulPkg.jl, MIMEs.jl, ExpressionExplorer.jl, PlutoDependencyExplorer.jl and contributions to base Julia and the Julia web ecosystem. These packages are also used in projects unrelated to Pluto!

We now have a formal [governance structure](https://plutojl.org/en/docs/governance/), [architecture overview](https://plutojl.org/en/docs/architecture/), and I transfered the repository to a collective `JuliaPluto` organisation.

# Thank you!

Pluto has been a collaborative effort. You can read some highlights about [how Pluto works and who designed it](https://plutojl.org/en/docs/architecture/). Open source software development is challenging, but I’m very grateful for people I met along the way. Thank you for supporting me in difficult times, for teaching me new ways of thinking, and for your contributions to the project. It means a lot to me!

If you have used Pluto and you enjoy it, I’m happy! Please reach out and share your experience, I would love to hear from you. You can contact me here on discourse, or email _fons-at-plutojl-dot-org_.

🌸

---

<div class="post-metadata">

**Author:** ![orlando\_mendez](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/orlando_mendez/32/211282_2.png) [@orlando\_mendez](https://discourse.julialang.org/u/orlando_mendez)\
**Post date:** [May 27, 2026, 8:33pm UTC](https://discourse.julialang.org/t/pluto-1-0-release/137296/2 "2026-05-27T20:33:09Z")

</div>

Congrats, @fonsp, on this release, and may we have more #pluto versions in the future! 🐶🥳

---

<div class="post-metadata">

**Author:** ![bvdmitri](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bvdmitri/32/22935_2.png) [@bvdmitri](https://discourse.julialang.org/u/bvdmitri)\
**Post date:** [May 28, 2026, 9:38am UTC](https://discourse.julialang.org/t/pluto-1-0-release/137296/3 "2026-05-28T09:38:05Z")

</div>

I remember using [early versions of Pluto](https://github.com/JuliaPluto/Pluto.jl/issues/1016) back in 2021! What a nice journey! Great project that inspired many people to try out Julia, congratulations with the first _stable_ release 😜

---

<div class="post-metadata">

**Author:** ![csvance](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/csvance/32/218927_2.png) [@csvance](https://discourse.julialang.org/u/csvance)\
**Post date:** [May 28, 2026, 1:10pm UTC](https://discourse.julialang.org/t/pluto-1-0-release/137296/4 "2026-05-28T13:10:37Z")

</div>

Congratulations on 1.0! Pluto is a lot of things to a lot of people, but for me one of its biggest strengths is how well it works for communicating results interactively.

---

<div class="post-metadata">

**Author:** ![Mikhail\_Kagalenko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mikhail_kagalenko/32/13257_2.png) [@Mikhail\_Kagalenko](https://discourse.julialang.org/u/Mikhail_Kagalenko)\
**Post date:** [June 3, 2026, 3:00pm UTC](https://discourse.julialang.org/t/pluto-1-0-release/137296/5 "2026-06-03T15:00:27Z")

</div>

> [@fonsp](#):
>
> There are multiple ways to disable AI features if it’s not what you want.

Unless I’m missing something, there does not seem to be a way to disable AI features from a notebook itself, instead a suggested solution is to supply a named parameter to Plluto.run(). Can this parameter be set from within the notebook?

---

<div class="post-metadata">

**Author:** ![johnh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnh/32/3615_2.png) [@johnh](https://discourse.julialang.org/u/johnh)\
**Post date:** [June 3, 2026, 3:31pm UTC](https://discourse.julialang.org/t/pluto-1-0-release/137296/6 "2026-06-03T15:31:43Z")

</div>

Woohoo! Pluto is 1 !

---

<div class="post-metadata">

**Author:** ![Oscar\_Belmonte\_Ferna](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_belmonte_ferna/32/222062_2.png) [@Oscar\_Belmonte\_Ferna](https://discourse.julialang.org/u/Oscar_Belmonte_Ferna)\
**Post date:** [June 4, 2026, 2:17pm UTC](https://discourse.julialang.org/t/pluto-1-0-release/137296/7 "2026-06-04T14:17:34Z")

</div>

These are really good news!!! Congrats Fons. I use the package in my daily work/classes. Thank you.
