chronozarr
chronozarr turns a georeferenced raster time series into an interactive dataset that anyone can open with a link. In a web browser, the series plays or scrubs like a video. You zoom and pan the map, and a click on a pixel shows its values over time. In Python, the same files return the exact numbers you stored. No tile server runs anywhere.
Live demo: 117 monthly Sentinel-2 composites of the Ucayali River in Peru, read directly from a storage bucket. Documentation: chronozarr.org.
Quickstart
This quickstart targets Python and npm 0.5.1. The release notes cover the new conversion options, custom coordinate systems, viewer bundle and compatibility with existing stores.
Install uv, then the chronozarr command:
uv tool install --python 3.13 'chronozarr[geo]==0.5.1'
chronozarr supports Python 3.11 and newer. --python 3.13 makes uv use 3.13 even when an older Python comes first on your computer. With pip, in an environment with Python 3.11 or newer:
python -m pip install 'chronozarr[geo]==0.5.1'
Use a folder with one GeoTIFF per date, with the date in each file name, such as ndvi_2024-01.tif. All files share one grid. To try it without your own files, export twelve months of the public demo as GeoTIFFs:
chronozarr export-cog https://data.chronozarr.org/ucayali_santa_maria_v03 sample --level 2 --times 2024-01..2024-12
Then convert the folder and share it:
chronozarr convert sample my_store --dry-run
chronozarr convert sample my_store
chronozarr share my_store # a temporary public link that any computer can open
chronozarr preview my_store # or: private, opens on this computer only
The dry run checks every file and writes nothing. convert writes the store. share prints a temporary link that you or a colleague open in a browser. It needs cloudflared, works only while the command runs and your computer is on, and anyone with the link can read the store. preview opens the store in your browser through a local server. Its link opens only on this computer.
The full quickstart has a sample dataset, the expected output of each command and the pip route.
Share a store
| Link | Command | Lasts | Needs |
|---|---|---|---|
| Temporary | chronozarr share my_store |
While the command runs | cloudflared, your computer on and online |
| Permanent | chronozarr publish my_store --destination s3://BUCKET/PREFIX |
As long as you keep the files | Cloud storage that you control: S3, R2, Google Cloud Storage or Azure |
The recipient needs only a web browser. chronozarr.org serves the viewer page and stores no data. See Share a temporary link and Publish a permanent link.
Read the values
import xarray as xr
ds = xr.open_dataset("my_store", engine="chronozarr")
A store is a Zarr v3 group, so xarray, zarr-python and GDAL 3.13 also read it without chronozarr. They return the stored values: plain xarray and CarbonPlan's zarr-layer 0.11.0 do not apply its band scale and offset or its mask (GeoZarr review). See Analyze a store in Python.
JavaScript
npm install chronozarr@0.5.1
The npm package has a DOM-free reader, a MapLibre layer, a GeoLibre plugin and the production viewer for self-hosting. See the JavaScript reader.
Versions
Python and npm package 0.5.1 read both draft store formats: v0.3.0 for CRSs with an EPSG code and v0.4.0 for other CRSs. Package versions and store specification versions are independent. Existing v0.3 stores need no conversion. Readers from package 0.4.1 and earlier cannot open v0.4 stores; upgrade the reader to 0.5.1. To use a v0.2 store, convert it with chronozarr convert OLD_STORE NEW_STORE. See the 0.5.1 release notes.
Documentation
| Topic | Page |
|---|---|
| What chronozarr is, and how it compares | What is chronozarr? |
| Every input type | Convert your data |
| Sentinel-2 for your own area and dates (a repository checkout) | Sentinel-2 for your area |
| SWOT, NISAR and model output | Examples |
| Every command | Command line |
| Python functions | Python API |
| Format rules | Specification |
| Measured speed, memory and correctness | Performance and evidence |
| Problems and fixes | Troubleshooting |
| Instructions for coding agents, and these docs as plain text | Agent skill, llms.txt |
The pages are written in docs/ for chronozarr.org. Use the source installation guide when developing from a checkout. Package publication and site deployment are separate steps. To contribute, see CONTRIBUTING.md.
License
See LICENSE.
Metadata
Release files for chronozarr 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| chronozarr-0.5.1.tar.gz | 2.5 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chronozarr-0.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.8 MB
Release files / chronozarr-0.5.1.tar.gz
| Download URL | chronozarr-0.5.1.tar.gz |
|---|---|
| Size | 2.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
979cbe4047bd31520962c94ae1e7584301c9a23add954dc5d4e5513f1ea11ade
|
|
BLAKE2b-256 checksum How to use checksums |
da7a2ab532d28844541aa2ba1bb9b1e1c5b49fb0517e05014e02df6a0118ce46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logRelease files / chronozarr-0.5.1-py3-none-any.whl
| Download URL | chronozarr-0.5.1-py3-none-any.whl |
|---|---|
| Size | 263.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aa93f4cb9c1cf0cde17885f9d808e82ac3fe58abf19e9accba9fce20e9722fb1
|
|
BLAKE2b-256 checksum How to use checksums |
6505ae00ef5a6e308483c42721b7e2e558c94761bc8d35b29be5a9ae472beb9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logSecurity for chronozarr 0.5.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for chronozarr-0.5.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.