About STAC Lens
STAC Lens is a free, open-source, browser-only tool that shows the shape, health, and real behavior of any STAC (SpatioTemporal Asset Catalog) catalog or API. Paste a catalog URL and it draws the publisher's structure as a tree, its coverage in time and space beside it, and marks where the metadata contradicts itself or the specification. Nothing is uploaded: every request goes from your browser to the catalog you are looking at.
It runs at staclens.com and can be self-hosted from the source on GitHub (Apache-2.0).
What it is for
STAC is the open standard for describing geospatial data — satellite imagery, aerial photography, elevation models, climate grids, vector layers — as catalogs of Collections and Items with a footprint, a time, and assets you can download. Hundreds of public catalogs exist, from NASA, ESA, Microsoft Planetary Computer, Element 84, national mapping agencies, and research groups. STAC Lens is a lens on any of them. It answers three questions that a field-by-field browser does not:
- Shape. How did the publisher actually organize this data? Deep and nested, or a flat root with four hundred Collections? Where are the Items, and how many?
- Health. Where does the metadata contradict itself or the standard? Two disjoint spatial extents, a
rel:collectionlink that disagrees withrel:parent, a deprecated license value, an extent that does not contain its own parts. - Distance from the specification. What does an API declare it supports, and what does it do when asked? STAC Lens sends real requests and reports the difference.
Who it is for
- People choosing a data source — see how a catalog is organized, what it covers in time and space, and whether its API behaves, before writing code against it. The landing page lists more than a hundred public catalogs, each verified to be live, real STAC, and readable from a browser.
- Publishers checking their own catalog — a picture of the structure you shipped, with the problems marked. Schema validators check the JSON; this checks what the JSON does.
- People learning STAC — the Catalog → Collection → Item model, extents, links, and API capabilities as one visual language rather than a set of documents.
- The STAC community — an empirical view of conformance in the wild. Everything the app has learned about real servers is written down in the project's design log, with the requests that established it.
Not another STAC Browser
STAC Browser is the reference browser for STAC and it does its job well. STAC Lens is not a replacement for it and is not trying to become one.
| STAC Browser | STAC Lens | |
|---|---|---|
| Purpose | Read a catalog: every object, every field, faithfully | Understand a catalog: its shape, health, and real behavior |
| Deployment | One instance per catalog, configured by its publisher | One instance, any catalog — paste a URL |
| Unit of view | The current object (a page per Catalog / Collection / Item) | The whole graph, with time and space alongside it |
| Server behavior | Trusts the server | Exercises the server and reports what it actually does |
| Metadata problems | Renders what is there | Flags contradictions and deprecated forms, never silently resolves them |
| Item browsing | Complete | Deliberately sufficient — lists, pages, a timeline and a map |
If you publish a catalog and want visitors to read it, deploy STAC Browser. If you want to see what a catalog is — yours or anyone's — open it in STAC Lens.
What "health" means here
Health is not a score. It is a list of findings, each traceable to a rule somebody else wrote down: the STAC core specification, its best-practices document, the community linter stac-check, the STAC API specification, and the method of stac-api-validator (declared conformance versus actual response). Nothing is invented by this project. When no rule exists — a flat root with 422 Collections, a Collection with millions of Items — the fact is reported as an observation, never as a problem.
Every rule the app applies or could apply, with its source, its severity tier, and whether it is built, is on the health rules page. Rules have stable identifiers (C-04, A-02, S-01) so a finding can be cited.
Principles
- Never enumerate what cannot be enumerated. A 51-million-Item Collection is browsed through the API's own cursor, one page at a time. There is no "load everything".
- Never invent structure. The tree shows the hierarchy the publisher made — flat where it is flat. No client-side grouping, no synthetic nodes, no counts the source did not give.
- Show a failure as a failure. A rejected request is an error message with the server's own words, never an empty result.
- Declared versus observed. A capability an API declares in its conformance classes is shown as declared; what the server actually does is shown only after a real request, with the request and the response quoted.
- Conformance-gated UI. A control that depends on a server capability exists only when the server declares it.
- Direct manipulation over controls. Drag to pan, wheel to zoom, drag a divider to resize; windows have title bars; the map pans by default and draws only when a tool is armed.
- Nothing leaves the browser. No backend, no proxy, no analytics. The catalog you open is the only server that sees your request.
Vocabulary
Short definitions of the terms this site uses, in the sense the STAC specification gives them.
- STAC — SpatioTemporal Asset Catalog: an open specification (also an OGC Community Standard) for describing geospatial assets as JSON documents linked into catalogs, so that data from any provider can be searched the same way.
- Catalog — a JSON document that links to other Catalogs, Collections, or Items. It is the folder of STAC: structure, not data.
- Collection — a Catalog with metadata about a coherent set of data: a license, a spatial extent (one or more bounding boxes), a temporal extent (one or more intervals), and summaries. A Collection typically holds the Items of one product, such as Sentinel-2 Level-2A.
- Item — a GeoJSON Feature with a datetime, a footprint, and one or more Assets. One scene, one tile, one file set.
- Asset — a link to an actual file (a Cloud-Optimized GeoTIFF, a Parquet table, a thumbnail) with a media type and roles.
- Static catalog — a tree of JSON files on a web server or object store, walked by following links.
- STAC API — a web service that serves the same objects and adds search:
/searchwithbbox,datetime,collections, and pagination throughnextlinks. - Conformance classes — the list of capabilities a STAC API declares in its landing page (
conformsTo). STAC Lens reads it to decide which controls to show, then checks whether the server honors what it declared. - Extent — a Collection's declared coverage. Spatially, an array of bounding boxes whose first entry must be the overall extent; temporally, an array of intervals whose first entry must be the overall interval.
- Health finding — a place where a catalog breaks a normative rule (invalid), ignores a recommendation (warning), or behaves differently from what it declared (behavior). See the rule list.
Names in other languages
The same tool, described in the words people search for. STAC Lens is a viewer and health checker for STAC catalogs of open geospatial data: Earth observation, remote sensing imagery, GIS and mapping data, climate and elevation grids.
- 中文:STAC Lens 是一个开源的、纯浏览器端的 STAC(时空资产目录)目录可视化与健康检查工具,用于查看遥感影像、对地观测、开放地理数据、GIS 数据目录的结构、时空覆盖范围和元数据质量。中文说明
- 日本語:STAC Lens は、STAC(時空間アセットカタログ)カタログの構造・時空間範囲・メタデータの健全性を可視化する、オープンソースのブラウザ専用ツールです。リモートセンシング、地球観測、オープン地理空間データ向け。
- Español: STAC Lens es una herramienta de código abierto, que se ejecuta solo en el navegador, para visualizar la estructura, la cobertura espacio-temporal y la salud de los metadatos de catálogos STAC de datos geoespaciales abiertos y de observación de la Tierra.
Project facts
- License: Apache-2.0. Source: github.com/rednotfound/stac-lens.
- Stack: TypeScript, React, Vite, D3, Leaflet. No backend.
- STAC versions: 1.0 and 1.1; STAC API Core, Features, Item Search, and the extensions listed on the health rules page.
- How the code was written: largely with an AI coding assistant, directed and reviewed by a designer, and verified by driving the app in a real browser against real catalogs. It works, it is tested, and it will still contain mistakes not yet found. If something looks wrong, it probably is — say so.
- Cite it: the repository carries a
CITATION.cff; GitHub's "Cite this repository" button reads it.