Whole-slide image · measured in your browser
No conversion needed.
Pan and zoom a 2.12 GB original Aperio SVS. PureJsImage reads its existing JPEG tiles with HTTP Range. No tile server, converted copy, or sidecar index is involved.
These are unmodified public Aperio slides from the ImageBox3 Google Cloud test bucket. Each URL was verified for byte ranges, wildcard CORS, exposed Content-Range, Aperio metadata, and native tile decode. No PureJsImage proxy is involved.
Original pyramid tiles
Whole-slide viewport
Starting the worker…
Drag quickly: offscreen work turns red as its AbortController is cancelled instead of piling up.
The access pattern
The browser asks for TIFF tiles, not another format.
The worker owns the range source, TIFF directory, JPEG decode, tile cancellation, and source-byte counters. The main thread owns only interaction, a bounded 192-tile bitmap LRU, and canvas drawing.
PixelBlocks into one native tileMeasured vs cited
What “no conversion” changes
No synthetic timings and no claim that PureJsImage is faster than Viv, OpenSlide, or libvips. This comparison is only about the path from an existing slide in object storage to a browser viewport.
| Question | This demo | Convert-to-OME-Zarr path |
|---|---|---|
| Source file | Original SVS, unmodified Measured | A converted copy is required |
| Storage for serving | 2.12 GB as-is Measured | About an order of magnitude larger for lossy-JPEG WSI Cited · OME NGFF ↗ |
| Preprocessing | None Measured | bioformats2raw + raw2ometiff per slide; timing not measured here |
| Serving | Static object storage + HTTP Range Measured | Static serving is possible after conversion; conversion infrastructure is still required |
| Sidecar index | None Measured | Not required by Zarr; some OME-TIFF random-access workflows generate an IFD index |
| Bytes to browse | See the live counter above Measured | Not measured here |
| Demo runtime dependencies | 0 Measured | Varies |
It is an open, actively developed format with broad tool support, standardized metadata, and independently accessible chunks. This demo is for a different moment: an Aperio slide is already sitting in a bucket and you want to inspect it before building a conversion pipeline.
Technical demonstration only. This viewer is not a diagnostic tool and has not been validated for clinical use.