# juliapluto/pluto.jl

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/juliapluto-pluto-jl).**

5,346 stars · 345 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/JuliaPluto/Pluto.jl
- Homepage: https://plutojl.org/
- awesome-repositories: https://awesome-repositories.com/repository/juliapluto-pluto-jl.md

## Topics

`designed-for-teachers` `education` `exploration` `interactive` `julia` `notebook` `pluto-notebooks` `reactive` `visualization`

## Description

Pluto.jl is a reactive computing environment for Julia that functions as a programmable document format. It serves as an interactive data science IDE and a polyglot computational notebook that stores Julia code and environment dependencies as versionable source files.

The system is distinguished by its reactive execution model, which uses a directed acyclic graph to track variable dependencies and automatically re-evaluate affected downstream cells when a value changes. It ensures reproducibility by integrating isolated package environments directly within the notebook file and persisting content as pure executable source files.

The platform covers a wide range of capabilities, including interactive data visualization, the creation of guided educational assignments, and the generation of static documentation websites. It supports diverse output modes such as slideshow presentations and web applications, and provides tools for exporting notebooks to HTML, PDF, and reproducibility-focused scripts.

The environment can be launched via a web interface on localhost or accessed through remote servers and cloud compute hosting.

## Tags

### Development Tools & Productivity

- [Interactive Data Science Environments](https://awesome-repositories.com/f/development-tools-productivity/interactive-data-science-environments.md) — Provides a browser-based environment for iterative data analysis combining code, visualization, and narrative.
- [Embedded Environment Control](https://awesome-repositories.com/f/development-tools-productivity/code-execution-environments/notebook-execution-environments/embedded-environment-control.md) — Provides controls to reset, update, or activate the embedded package environment and dependency files within a notebook. ([source](https://plutojl.org/en/docs/API/))
- [Computational Notebooks](https://awesome-repositories.com/f/development-tools-productivity/computational-notebooks.md) — Functions as a programmable document format storing code and environment dependencies as versionable source files.
- [Interactive Notebook Environments](https://awesome-repositories.com/f/development-tools-productivity/interactive-notebook-environments.md) — Serves notebooks on a web server allowing visitors to interact with inputs through isolated sessions. ([source](https://plutojl.org/en/docs/PlutoSliderServer/))
- [Isolated Environment Managers](https://awesome-repositories.com/f/development-tools-productivity/isolated-environment-managers.md) — Integrates with a package manager to maintain dedicated project files and automate dependency isolation. ([source](https://plutojl.org/en/docs/architecture/))
- [Notebook Dependency Managers](https://awesome-repositories.com/f/development-tools-productivity/notebook-dependency-managers.md) — Declares and installs required packages directly within the notebook file to ensure a reproducible execution environment. ([source](https://plutojl.org/pkg/))
- [Package Dependency Management](https://awesome-repositories.com/f/development-tools-productivity/package-dependency-management.md) — Integrates package version tracking directly into notebook files to ensure perfectly reproducible execution environments. ([source](https://plutojl.org/en/docs/packages/))
- [Embedded Package Environments](https://awesome-repositories.com/f/development-tools-productivity/package-development-isolation/embedded-package-environments.md) — Integrates isolated package environments directly within notebook files to ensure exact library versioning and reproducibility.
- [Browser-Based Execution Environments](https://awesome-repositories.com/f/development-tools-productivity/browser-based-execution-environments.md) — Launches interactive sessions via cloud environments to enable code execution without local installation. ([source](https://plutojl.org/en/docs/binder/))
- [Static Site Documentation](https://awesome-repositories.com/f/development-tools-productivity/documentation-generators/static-site-documentation.md) — Transforms notebooks into professional static documentation websites with integrated search and custom layouts. ([source](https://plutojl.org/en/docs/notebooks-online/))
- [Shareable Notebooks](https://awesome-repositories.com/f/development-tools-productivity/interactive-notebook-environments/shareable-notebooks.md) — Enables uploading notebook exports to a web service to generate shareable public links for zero-setup execution. ([source](https://plutojl.org/en/docs/export-plutoland/))
- [Notebook Lifecycle Management](https://awesome-repositories.com/f/development-tools-productivity/notebook-lifecycle-management.md) — Manages the full lifecycle of interactive notebooks, including creation, saving, and shutdown. ([source](https://plutojl.org/en/docs/files/))
- [Multi-notebook Session Management](https://awesome-repositories.com/f/development-tools-productivity/notebook-lifecycle-management/multi-notebook-session-management.md) — Enables running several notebooks simultaneously within a single session to switch between projects. ([source](https://plutojl.org/en/docs/launch-pluto/))
- [Notebook Loading](https://awesome-repositories.com/f/development-tools-productivity/notebook-loading.md) — Provides the ability to load notebooks from local paths, web URLs, or the system clipboard. ([source](https://plutojl.org/en/docs/files-open/))

### Programming Languages & Runtimes

- [Reactive Programming](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/reactive-programming.md) — Implements a reactive programming environment where downstream cells automatically re-execute when upstream dependencies change.
- [Notebook Source Persistence](https://awesome-repositories.com/f/programming-languages-runtimes/notebook-source-persistence.md) — Saves notebooks as pure source files that can be imported into other scripts. ([source](https://cdn.jsdelivr.net/gh/juliapluto/pluto.jl@main/README.md))
- [Reactive Notebooks](https://awesome-repositories.com/f/programming-languages-runtimes/reactive-notebooks.md) — Implements a reactive computing environment that automatically updates dependent cells when variables change.
- [Reproducible Notebook Storage](https://awesome-repositories.com/f/programming-languages-runtimes/reproducible-notebook-storage.md) — Saves notebook content as executable source files to ensure the environment is reproducible and versionable. ([source](https://plutojl.org/en/docs/faq/))

### Software Engineering & Architecture

- [Reactivity Dependency Graphs](https://awesome-repositories.com/f/software-engineering-architecture/reactivity-dependency-graphs.md) — Implements a reactive dependency graph to trigger precise updates of downstream cells when variables change. ([source](https://plutojl.org/en/docs/faq/))
- [Dependency Tracking](https://awesome-repositories.com/f/software-engineering-architecture/dependency-tracking.md) — Automatically identifies and tracks variable dependencies, including those emerging after macro expansion, to drive reactive execution.
- [Directed Acyclic Graph Engines](https://awesome-repositories.com/f/software-engineering-architecture/directed-acyclic-graph-engines.md) — Uses a directed acyclic graph engine to track variable dependencies and automatically re-evaluate affected downstream cells.
- [Reactive Execution Models](https://awesome-repositories.com/f/software-engineering-architecture/reactive-execution-models.md) — Uses a reactive execution model to propagate updates through the notebook automatically. ([source](https://cdn.jsdelivr.net/gh/juliapluto/pluto.jl@main/README.md))
- [Reproducible Scripts](https://awesome-repositories.com/f/software-engineering-architecture/reproducible-builds/reproducible-scripts.md) — Saves notebook state and exact package versions into a script file to ensure identical execution results. ([source](https://plutojl.org/en/docs/export-julia/))
- [Macroexpansion Dependency Tracking](https://awesome-repositories.com/f/software-engineering-architecture/reactive-execution-models/macroexpansion-dependency-tracking.md) — Tracks variable dependencies that emerge during execution by analyzing code after macroexpansion. ([source](https://plutojl.org/en/docs/architecture/))

### Content Management & Publishing

- [Markdown Structural Formatting](https://awesome-repositories.com/f/content-management-publishing/markdown-structural-formatting.md) — Uses markdown syntax to provide structural formatting, headings, and lists for documentation within cells. ([source](https://plutojl.org/en/docs/markdown/))
- [HTML Exports](https://awesome-repositories.com/f/content-management-publishing/content-formats-exporting/export-formats/html-exports.md) — Generates standalone HTML files from notebooks including outputs and source code for offline viewing. ([source](https://plutojl.org/en/docs/export-html/))
- [Multi-Format Exports](https://awesome-repositories.com/f/content-management-publishing/content-formats-exporting/export-formats/html-exports/multi-format-exports.md) — Generates shareable versions of notebooks in multiple formats including HTML, PDF, and source files. ([source](https://plutojl.org/en/docs/export/))
- [PDF Exports](https://awesome-repositories.com/f/content-management-publishing/content-formats-exporting/export-formats/pdf-exports.md) — Converts notebooks into printable PDF documents while managing page breaks to keep cells intact. ([source](https://plutojl.org/en/docs/export-pdf/))
- [Technical Documentation](https://awesome-repositories.com/f/content-management-publishing/documentation-knowledge-management/technical-documentation.md) — Generates static websites and HTML reports from executable notebooks to share research and technical guides.
- [Interactive State Sharing](https://awesome-repositories.com/f/content-management-publishing/interactive-state-sharing.md) — Distributes notebook state and computations so others can interact with and explore the same results. ([source](https://binder.plutojl.org/))
- [Reactive Website Publishing](https://awesome-repositories.com/f/content-management-publishing/reactive-website-publishing.md) — Hosts notebooks as live websites that maintain reactivity by connecting the frontend to a backend process. ([source](https://plutojl.org/en/docs/export/))
- [Notebook-Based Publishing](https://awesome-repositories.com/f/content-management-publishing/scientific-publications/notebook-based-publishing.md) — Publishes reactive notebooks to a public gallery for exploring models and demonstrated workflows. ([source](https://plutojl.org/en/docs/featured-notebooks/))
- [Dynamic Documentation Generation](https://awesome-repositories.com/f/content-management-publishing/static-site-document-generators/dynamic-documentation-generation.md) — Converts reactive notebooks into static websites, HTML pages, or PDFs for distribution.
- [Static Site Generators](https://awesome-repositories.com/f/content-management-publishing/static-site-generators.md) — Compiles notebooks, markdown files, and images into complete static sites for web hosting. ([source](https://plutojl.org/en/docs/PlutoPages/))
- [Web-Based Notebook Publishing](https://awesome-repositories.com/f/content-management-publishing/web-based-notebook-publishing.md) — Publishes notebook content to the web via HTML export or cloud hosting for URL access. ([source](https://plutojl.org/en/docs/notebooks-online/))

### Data & Databases

- [Application State Serialization](https://awesome-repositories.com/f/data-databases/binary-serialization/application-state-serialization.md) — Converts notebook data and binary states into a compact MsgPack format for efficient storage. ([source](https://plutojl.org/en/docs/API/))
- [Notebook Cell Execution](https://awesome-repositories.com/f/data-databases/horizontal-database-scaling/multi-region-scaling/cell-based-scaling/notebook-cell-execution.md) — Provides the ability to execute code in discrete notebook cells while preserving state. ([source](https://plutojl.org/en/docs/keyboard-shortcuts/))
- [Dependent Cell Refresh](https://awesome-repositories.com/f/data-databases/horizontal-database-scaling/multi-region-scaling/cell-based-scaling/notebook-cell-execution/dependent-cell-refresh.md) — Triggers re-evaluation of downstream cells when a value changes to ensure consistent system state. ([source](https://plutojl.org/en/docs/reactivity/))
- [Reactive Cell Synchronization](https://awesome-repositories.com/f/data-databases/horizontal-database-scaling/multi-region-scaling/cell-based-scaling/notebook-cell-execution/reactive-cell-synchronization.md) — Automatically executes code cells whenever a dependency changes to maintain a consistent environment state. ([source](https://plutojl.org/))
- [Interactive Data Exploration Tools](https://awesome-repositories.com/f/data-databases/interactive-data-exploration-tools.md) — Provides a reactive environment for exploring and visualizing data where outputs update automatically as variables change.
- [Script-Based Notebooks](https://awesome-repositories.com/f/data-databases/notebook-formatters/script-based-notebooks.md) — Persists notebook content as standard executable Julia source files to ensure version control compatibility.
- [Execution Control Guards](https://awesome-repositories.com/f/data-databases/horizontal-database-scaling/multi-region-scaling/cell-based-scaling/notebook-cell-execution/execution-control-guards.md) — Prevents specific code blocks from running automatically during dependency changes to isolate workflows. ([source](https://plutojl.org/en/docs/disable-cell/))
- [Reactivity Toggles](https://awesome-repositories.com/f/data-databases/horizontal-database-scaling/multi-region-scaling/cell-based-scaling/notebook-cell-execution/reactivity-toggles.md) — Prevents specific cells from updating automatically, keeping them static regardless of dependency changes. ([source](https://plutojl.org/en/docs/reactivity/))
- [Interactive Visualization Rendering](https://awesome-repositories.com/f/data-databases/interactive-visualization-rendering.md) — Generates static or interactive plots and charts that update in response to variable changes. ([source](https://plutojl.org/en/docs/plot/))

### Education & Learning Resources

- [Interactive Assignment Frameworks](https://awesome-repositories.com/f/education-learning-resources/interactive-assignment-frameworks.md) — Builds interactive exercises with text explanations and placeholders that provide immediate feedback via reactive execution. ([source](https://plutojl.org/en/docs/homework/))
- [Interactive Textbooks](https://awesome-repositories.com/f/education-learning-resources/interactive-textbooks.md) — Creates interactive textbooks and guided programming assignments with live sliders and widgets for exploration.
- [Interactive Software Education](https://awesome-repositories.com/f/education-learning-resources/technical-domain-education/technical-academic-domains/interactive-software-education.md) — Combines theory with hands-on coding by providing an interactive environment for students to explore scientific models. ([source](https://plutojl.org/en/docs/education-showcase/))
- [Interactive Learning Platforms](https://awesome-repositories.com/f/education-learning-resources/interactive-learning-platforms.md) — Serves as a platform for creating guided programming assignments and interactive textbooks with live feedback.

### Scientific & Mathematical Computing

- [Scientific Computing Workflows](https://awesome-repositories.com/f/scientific-mathematical-computing/scientific-computing-workflows.md) — Supports scientific computing workflows for developing mathematical models and simulations with integrated package management.

### User Interface & Experience

- [Reproducible Package Tracking](https://awesome-repositories.com/f/user-interface-experience/ui-architecture/reactivity-systems/automatic-dependency-tracking/automatic-dependency-tracking/reproducible-package-tracking.md) — Automatically installs and tracks specific versions of required libraries to ensure reproducible execution across different machines. ([source](https://cdn.jsdelivr.net/gh/juliapluto/pluto.jl@main/README.md))
- [Two-Way](https://awesome-repositories.com/f/user-interface-experience/data-binding/two-way.md) — Synchronizes browser-based UI widgets with backend program variables to trigger immediate reactive re-evaluation.
- [Interactive Content Controls](https://awesome-repositories.com/f/user-interface-experience/interactive-content-controls.md) — Provides embedded sliders, buttons, and scrubbable numbers to control plots and numerical outputs. ([source](https://plutojl.org/en/docs/lectures/))
- [Slideshow Mode](https://awesome-repositories.com/f/user-interface-experience/presentation-frameworks/presentation-modes/slideshow-mode.md) — Transforms notebook content into a full-screen presentation using Markdown header levels to define slides. ([source](https://plutojl.org/en/docs/presentation/))
- [Visual Layout Reorganization](https://awesome-repositories.com/f/user-interface-experience/visual-layout-reorganization.md) — Allows arranging cells in any visual order while maintaining execution based on variable dependencies. ([source](https://plutojl.org/en/docs/moving-cells/))
- [Web App View Modes](https://awesome-repositories.com/f/user-interface-experience/web-app-view-modes.md) — Provides a minimalistic view that hides the editor, allowing notebooks to function as simple web applications. ([source](https://plutojl.org/en/docs/isolated-cell/))
- [Widget Data Bindings](https://awesome-repositories.com/f/user-interface-experience/widget-data-bindings.md) — Connects browser-based input widgets directly to program variables to trigger immediate code re-evaluation. ([source](https://cdn.jsdelivr.net/gh/juliapluto/pluto.jl@main/README.md))

### Web Development

- [MIME Type Renderers](https://awesome-repositories.com/f/web-development/plugin-content-rendering/mime-type-renderers.md) — Renders cell outputs by mapping the data's MIME type to specialized frontend components. ([source](https://plutojl.org/en/docs/architecture/))
- [Polymorphic Output Renderers](https://awesome-repositories.com/f/web-development/plugin-content-rendering/mime-type-renderers/polymorphic-output-renderers.md) — Displays cell outputs by matching the data type of the result to a specialized frontend component using MIME types.

### DevOps & Infrastructure

- [Cloud Hosting](https://awesome-repositories.com/f/devops-infrastructure/cloud-hosting.md) — Provides the ability to host notebooks on remote servers to access high-performance compute resources like GPUs. ([source](https://plutojl.org/en/docs/install/))
