# BrowserPlots.jl - view your plotting history in a browser tab

**URL:** <https://discourse.julialang.org/t/browserplots-jl-view-your-plotting-history-in-a-browser-tab/138939>\
**Category:** Package Announcements\
**Tags:** plotting, editors, makie, neovim\
**Created:** [August 19, 2026, 8:13pm UTC](https://discourse.julialang.org/t/browserplots-jl-view-your-plotting-history-in-a-browser-tab/138939 "2026-08-19T20:13:44Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![arnold-c](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/arnold-c/32/222741_2.png) [@arnold-c](https://discourse.julialang.org/u/arnold-c)\
**Post date:** [August 19, 2026, 8:13pm UTC](https://discourse.julialang.org/t/browserplots-jl-view-your-plotting-history-in-a-browser-tab/138939/1 "2026-08-19T20:13:44Z")

</div>

## Initial release - v0.1.0

[Github page](https://github.com/arnold-c/BrowserPlots.jl)

[Documentation website](https://browserplots.callumarnold.com)

Very quick announcement of a package to view your plots in your browser (with its history).

I primarily use neovim as my coding interface, and one thing that’s added some friction is plotting. With GLMakie.jl an interactive window pops up that allows you to view your plots, but unlike VSCode with the plot viewer, it’s not possible to look at your plotting history (which I find helpful when I’m iterating on a figure). CairoMakie does allow this through the creation of the temporary static image files, but I haven’t found a good image viewer on my Mac that allows for the clean scrolling between version - I’ve tried many and none quite fit the bill (for me). Coming from R, I wanted something like the excellent [httpgd](https://nx10.dev/httpgd/) package, where I could open up browser tab and connect to the port that shows all the plots generated in a session. That’s what this package aims to do.

### How to

Install BrowserPlots directly from GitHub:

```julia
import Pkg
Pkg.add(url = "https://github.com/arnold-c/BrowserPlots.jl")

```

Install a plotting package separately if you do not already have one:

```julia
Pkg.add("CairoMakie")

```

Use a Makie backend capable of producing PNG output, such as CairoMakie (though I have tested it with GLMakie and it does work):

```julia
using BrowserPlots
using CairoMakie

browse()
x = range(0, 2π; length = 200)
lines(x, sin.(x); axis = (; title = "Sine wave"))

```

`browse()` starts a local server, registers the browser gallery with Julia’s display stack, and opens the gallery in a new tab. In an interactive session, plots displayed by Julia are added automatically. In a script—or whenever output is suppressed—call `display` explicitly:

```julia
p = plot(rand(20))
display(p)

```

`browse(; port = 8008, silent = true)` can be used to run the render the plots at a particular port (`8008`) and not launch a new browser tab (if you already have the port open and you are just starting the julia session, for example).

Once in the viewer, you can remove particular plots from the history, and/or clear the entire history. You can also clear the history from the terminal with the command `clear_history!()`

 ![BrowserPlots-preview](https://global.discourse-cdn.com/julialang/original/3X/5/e/5e58cdb88123630960de9b0a517920062203724d.png)

### Headless development

One thing I’ve played around with is a headless environment - WGLMakie.jl and Bonito.jl do allow for this, but I never had great luck integrating them into my workflow (most likely just user error!). With BrowserPlots.jl I can just use Tailscale `serve` and access localhost as if it were the local machine.

```bash
tailscale serve --https=<port> localhost:<port>

```

Obviously this requires having access to your tailnet on both machines, which may not work for your environment.

### AI Disclosure

All the code written in the package was written using codex - I have reviewed it to ensure it’s using a broadly reasonable approach, but this is just a quick package to fit my requirements, so the majority of my thought and time has been spent reviewing that the functionality I need works as expected. It’s very possible that in the (admittedly very small and simple) package there are some bugs that I haven’t discovered yet. If you’d prefer not to use it because of the AI development, that’s fine - I’m making it publicly available in case anyone else find this useful.

---

<div class="post-metadata">

**Author:** ![ffevotte](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ffevotte/32/6587_2.png) [@ffevotte](https://discourse.julialang.org/u/ffevotte)\
**Post date:** [August 20, 2026, 7:55am UTC](https://discourse.julialang.org/t/browserplots-jl-view-your-plotting-history-in-a-browser-tab/138939/2 "2026-08-20T07:55:31Z")

</div>

Nice! Is that similar in spirit to [ElectronDisplay](https://github.com/queryverse/ElectronDisplay.jl), only displaying in a browser window instead of Electron?

I’ve wanted that for a long time (even started coding something myself), thanks!

---

<div class="post-metadata">

**Author:** ![arnold-c](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/arnold-c/32/222741_2.png) [@arnold-c](https://discourse.julialang.org/u/arnold-c)\
**Post date:** [August 20, 2026, 10:34am UTC](https://discourse.julialang.org/t/browserplots-jl-view-your-plotting-history-in-a-browser-tab/138939/3 "2026-08-20T10:34:55Z")

</div>

> [@ffevotte](#):
>
> Nice! Is that similar in spirit to [ElectronDisplay](https://github.com/queryverse/ElectronDisplay.jl), only displaying in a browser window instead of Electron?

Yes, absolutely, but I was looking for something that just worked via my browser directly

---

<div class="post-metadata">

**Author:** ![tp2750](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tp2750/32/207806_2.png) [@tp2750](https://discourse.julialang.org/u/tp2750)\
**Post date:** [September 5, 2026, 4:33am UTC](https://discourse.julialang.org/t/browserplots-jl-view-your-plotting-history-in-a-browser-tab/138939/4 "2026-09-05T04:33:45Z")

</div>

Cool!  
Is this exclusive to Makie or does it also work with Plots.jl?  
Thanks for sharing.

---

<div class="post-metadata">

**Author:** ![arnold-c](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/arnold-c/32/222741_2.png) [@arnold-c](https://discourse.julialang.org/u/arnold-c)\
**Post date:** [September 11, 2026, 7:05pm UTC](https://discourse.julialang.org/t/browserplots-jl-view-your-plotting-history-in-a-browser-tab/138939/5 "2026-09-11T19:05:24Z")

</div>

Yes - I have confirmed that it works with Plots.jl as well. I just made another small release to add in zoom functionality and also ensure that the default Plots.jl viewer doesn’t open when BrowserPlots.jl is active
