# \[ANN\] 🚀 Announcing Browzarr.jl

**URL:** <https://discourse.julialang.org/t/ann-announcing-browzarr-jl/137535>\
**Category:** Package Announcements\
**Tags:** plotting, data, visualization, netcdf, zarr\
**Created:** [June 10, 2026, 6:51am UTC](https://discourse.julialang.org/t/ann-announcing-browzarr-jl/137535 "2026-06-10T06:51:28Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![lazarusA](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lazarusa/32/6571_2.png) [@lazarusA](https://discourse.julialang.org/u/lazarusA)\
**Post date:** [June 10, 2026, 6:51am UTC](https://discourse.julialang.org/t/ann-announcing-browzarr-jl/137535/1 "2026-06-10T06:51:28Z")

</div>

Hey there, it’s been a while!

Today, I want to draw your attention to [**Browzarr.jl**](https://github.com/EarthyScience/Browzarr.jl), the Julia bridge for launching [Browzarr](https://github.com/EarthyScience/Browzarr), a browser-based visualization framework for exploring and analyzing Zarr and NetCDF datasets.

Try it live at **[browzarr.io](http://browzarr.io)**. The [documentation](https://browzarr.io/docs/) is still a work in progress.

You can inspect variables, metadata, dimensions, and chunked data through an interactive browser interface. Open local NetCDF files (using [netcdf4-wasm](https://earthyscience.github.io/netcdf4-wasm/viewer/)), local Zarr stores, or remote Zarr datasets with a single command.

## Install the Julia package:

```julia
using Pkg
Pkg.add("Browzarr")

```

Launch:

```julia
using Browzarr
browzarr()

```

Examples:

```julia
# local NetCDF file
browzarr(; store="/path/to/file.nc")

# local Zarr store
browzarr(; store="/path/to/data.zarr")

# remote Zarr store
browzarr(; store="https://example.com/data.zarr")

```

**Browzarr is also available as a standalone npm package for users outside the Julia ecosystem:**

```bash
npm install -g browzarr
browzarr

```

Feedback, bug reports, and contributions are welcome!

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [June 11, 2026, 7:29am UTC](https://discourse.julialang.org/t/ann-announcing-browzarr-jl/137535/2 "2026-06-11T07:29:41Z")

</div>

What I would really like is for more of the state to be stored in the URL and for that to be dynamically updated as I select and refine a dataset. The idea here is that once I load what I want to see, I want to be able to copy that URL and send it to someone else. They should then be able to see exactly what I see. I really want to play with the visualizations your show in the video, but I have no idea how to get to them.

---

<div class="post-metadata">

**Author:** ![lazarusA](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lazarusa/32/6571_2.png) [@lazarusA](https://discourse.julialang.org/u/lazarusA)\
**Post date:** [June 11, 2026, 7:44am UTC](https://discourse.julialang.org/t/ann-announcing-browzarr-jl/137535/3 "2026-06-11T07:44:53Z")

</div>

Agree, I only half-implemented this, see [allow sharing url + plotting parameters · Issue #373 · EarthyScience/Browzarr · GitHub](https://github.com/EarthyScience/Browzarr/issues/373).  
And since All `states` of a given plot are known, we should be able to store them. It needs work, but is possible.

---

<div class="post-metadata">

**Author:** ![lazarusA](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lazarusa/32/6571_2.png) [@lazarusA](https://discourse.julialang.org/u/lazarusA)\
**Post date:** [June 19, 2026, 4:09pm UTC](https://discourse.julialang.org/t/ann-announcing-browzarr-jl/137535/4 "2026-06-19T16:09:10Z")

</div>

I little bit unfriendly, but something functional was cooked in [PR666](https://github.com/EarthyScience/Browzarr/pull/666) by `@TheJeran`

[https://browzarr.io/latest/?data={"globalState"%3A{"initStore"%3A"https%3A%2F%2Fs3.bgc-jena.mpg.de%3A9000%2Fesdl-esdc-v3.0.2%2Fesdc-16d-2.5deg-46x72x1440-3.0.2.zarr"%2C"storeFromURL"%3Afalse%2C"variable"%3A"air\_temperature\_2m"}%2C"plotState"%3A{"pointSize"%3A5%2C"scalePoints"%3Afalse%2C"scaleIntensity"%3A1%2C"timeScale"%3A1%2C"valueRange"%3A[0%2C1]%2C"xRange"%3A[-1%2C1]%2C"yRange"%3A[-1%2C1]%2C"zRange"%3A[-1%2C1]%2C"showPoints"%3Atrue%2C"linePointSize"%3A2%2C"lineWidth"%3A1.25%2C"lineColor"%3A"%23111111"%2C"pointColor"%3A"%23EA8686"%2C"useLineColor"%3Afalse%2C"lineResolution"%3A3%2C"cOffset"%3A0%2C"cScale"%3A1%2C"useFragOpt"%3Afalse%2C"useCustomColor"%3Afalse%2C"useCustomPointColor"%3Afalse%2C"transparency"%3A0%2C"nanTransparency"%3A1%2C"nanColor"%3A"%23000000"%2C"showBorders"%3Afalse%2C"borderColor"%3A"%23000000"%2C"lonExtent"%3A[-180%2C180]%2C"latExtent"%3A[-90%2C90]%2C"originalExtent"%3A{"x"%3A-180%2C"y"%3A180%2C"z"%3A-90%2C"w"%3A90}%2C"lonResolution"%3A1%2C"latResolution"%3A1%2C"colorIdx"%3A0%2C"vTransferRange"%3Afalse%2C"vTransferScale"%3A1%2C"sphereResolution"%3A10%2C"displacement"%3A0%2C"displaceSurface"%3Atrue%2C"offsetNegatives"%3Atrue%2C"zSlice"%3A[0%2Cnull]%2C"ySlice"%3A[0%2Cnull]%2C"xSlice"%3A[0%2Cnull]%2C"interpPixels"%3Afalse%2C"useOrtho"%3Afalse%2C"rotateFlat"%3Afalse%2C"coarsen"%3Afalse%2C"kernel"%3A{"kernelDepth"%3A1%2C"kernelSize"%3A1}%2C"useBorderTexture"%3Afalse%2C"maskValue"%3A0%2C"borderWidth"%3A0.05%2C"cameraPosition"%3A{"x"%3A-3.780967105888259%2C"y"%3A-1.5251678420343258%2C"z"%3A-2.8945035494563265}%2C"disablePointScale"%3Afalse}%2C"zarrState"%3A{"zSlice"%3A[0%2C322]%2C"ySlice"%3A[0%2Cnull]%2C"xSlice"%3A[0%2Cnull]%2C"compress"%3Afalse%2C"useNC"%3Afalse%2C"fetchNC"%3Afalse%2C"coarsen"%3Afalse%2C"kernelSize"%3A2%2C"kernelDepth"%3A2%2C"icechunkOptions"%3Anull%2C"fetchOptions"%3Anull%2C"fetchKey"%3A0}}](https://browzarr.io/latest/?data=%7B%22globalState%22%3A%7B%22initStore%22%3A%22https%3A%2F%2Fs3.bgc-jena.mpg.de%3A9000%2Fesdl-esdc-v3.0.2%2Fesdc-16d-2.5deg-46x72x1440-3.0.2.zarr%22%2C%22storeFromURL%22%3Afalse%2C%22variable%22%3A%22air_temperature_2m%22%7D%2C%22plotState%22%3A%7B%22pointSize%22%3A5%2C%22scalePoints%22%3Afalse%2C%22scaleIntensity%22%3A1%2C%22timeScale%22%3A1%2C%22valueRange%22%3A%5B0%2C1%5D%2C%22xRange%22%3A%5B-1%2C1%5D%2C%22yRange%22%3A%5B-1%2C1%5D%2C%22zRange%22%3A%5B-1%2C1%5D%2C%22showPoints%22%3Atrue%2C%22linePointSize%22%3A2%2C%22lineWidth%22%3A1.25%2C%22lineColor%22%3A%22%23111111%22%2C%22pointColor%22%3A%22%23EA8686%22%2C%22useLineColor%22%3Afalse%2C%22lineResolution%22%3A3%2C%22cOffset%22%3A0%2C%22cScale%22%3A1%2C%22useFragOpt%22%3Afalse%2C%22useCustomColor%22%3Afalse%2C%22useCustomPointColor%22%3Afalse%2C%22transparency%22%3A0%2C%22nanTransparency%22%3A1%2C%22nanColor%22%3A%22%23000000%22%2C%22showBorders%22%3Afalse%2C%22borderColor%22%3A%22%23000000%22%2C%22lonExtent%22%3A%5B-180%2C180%5D%2C%22latExtent%22%3A%5B-90%2C90%5D%2C%22originalExtent%22%3A%7B%22x%22%3A-180%2C%22y%22%3A180%2C%22z%22%3A-90%2C%22w%22%3A90%7D%2C%22lonResolution%22%3A1%2C%22latResolution%22%3A1%2C%22colorIdx%22%3A0%2C%22vTransferRange%22%3Afalse%2C%22vTransferScale%22%3A1%2C%22sphereResolution%22%3A10%2C%22displacement%22%3A0%2C%22displaceSurface%22%3Atrue%2C%22offsetNegatives%22%3Atrue%2C%22zSlice%22%3A%5B0%2Cnull%5D%2C%22ySlice%22%3A%5B0%2Cnull%5D%2C%22xSlice%22%3A%5B0%2Cnull%5D%2C%22interpPixels%22%3Afalse%2C%22useOrtho%22%3Afalse%2C%22rotateFlat%22%3Afalse%2C%22coarsen%22%3Afalse%2C%22kernel%22%3A%7B%22kernelDepth%22%3A1%2C%22kernelSize%22%3A1%7D%2C%22useBorderTexture%22%3Afalse%2C%22maskValue%22%3A0%2C%22borderWidth%22%3A0.05%2C%22cameraPosition%22%3A%7B%22x%22%3A-3.780967105888259%2C%22y%22%3A-1.5251678420343258%2C%22z%22%3A-2.8945035494563265%7D%2C%22disablePointScale%22%3Afalse%7D%2C%22zarrState%22%3A%7B%22zSlice%22%3A%5B0%2C322%5D%2C%22ySlice%22%3A%5B0%2Cnull%5D%2C%22xSlice%22%3A%5B0%2Cnull%5D%2C%22compress%22%3Afalse%2C%22useNC%22%3Afalse%2C%22fetchNC%22%3Afalse%2C%22coarsen%22%3Afalse%2C%22kernelSize%22%3A2%2C%22kernelDepth%22%3A2%2C%22icechunkOptions%22%3Anull%2C%22fetchOptions%22%3Anull%2C%22fetchKey%22%3A0%7D%7D)
