# chronozarr > An open Zarr v3 layout for raster time series. ## Docs - [chronozarr v0.2](/specification): **Status:** Draft **Date:** 2026-09-30 **Spec version string:** `0.2.0` **Supersedes:** chronozarr v0.1 (`0.1.0`); `CHRONOFABRIC.md` (ChronoFabric v1: Zarr v2, one array per cell, `manifest.json`) - [Examples](/examples): The [live chronozarr demo](https://chronozarr.org/demo/) explores a Sentinel-2 time series of the Ucayali River, Peru. The homepage previews are generated from that store's level-3 RGB bands. They use a fixed display stretch and are illustrative images, not level-0 measurements. - [Getting started](/getting-started): This example builds a small synthetic time series, writes it, and checks an exact level-0 roundtrip. You do not need a bucket or satellite imagery to try it. - [How it works](/how-it-works): chronozarr is a layout convention plus readers. Every object is an ordinary Zarr v3 object; the convention specifies a time axis, a multiscale pyramid, coordinates, and optional temporal encoding. - [Integrate](/integrate): Choose the interface that fits your application. - [Publish a store](/publishing): A store is a directory of static objects. Upload it to an HTTPS host, keep its relative paths intact, then share the root URL. No application server is required. - [chronozarr](/reference/javascript): Browser and Node reader for [chronozarr](https://github.com/chronozarr/chronozarr) stores, plus a MapLibre GL JS custom layer that draws one. - [chronozarr on MapLibre](/reference/maplibre): `ChronozarrLayer` draws a chronozarr store on a MapLibre GL JS map as a custom layer. It opens the store with `js/chronozarr/decoder.js`, picks the pyramid level from the map zoom, uploads the raw chunks of the visible cells as integer (or float) textures, and reconstructs star-delta timesteps and runs the product band math in the fragment shader. Each cell is a small mesh whose vertices were projected from the store's CRS to Web Mercator, so the raster lands on the basemap with no resampling step. No dependencies: MapLibre is the host page's. - [Command line](/reference/cli): Install `chronozarr`, then run `chronozarr COMMAND --help` for all options. - [Python and xarray](/reference/python): `da` has dimensions `(time, band, y, x)`, supported stored dtype, and projected pixel-centre coordinates. The output must be new or empty. Encoding defaults to `auto`; sharding defaults off. Use `encoding="none"` for direct ordinary Zarr reads. - [Appending: what one new date costs](/guides/append): `chronozarr append STORE INPUT` adds timesteps to the end of a store in place (spec section 14, publishing in [hosting.md](/guides/hosting) section 7). Before it existed the only way to add a date was a re-encode under a new prefix: rewrite and re-upload every object. This page measures the append against that and against the layout choices that decide its cost. - [Measured comparisons: zarr-layer, and one COG per date](/guides/comparisons): Two comparisons of a chronozarr store, measured on 2026-10-01 on one machine (Apple M3 Max, macOS, Node 24.16.0, Chromium 153 through Playwright 1.63.0 with the Metal GPU backend). All code, raw results and a lockfile are in `bench/`; the exact commands are in the last section. - [Embedding the viewer](/guides/embedding): `https://chronozarr.org/demo/?store=` opens any chronozarr store. Add `embed=1` and the same page is a compact viewer for an `