Open now
Browser image viewer + converter
Open an image. Choose what to do.
View any supported image with pan and zoom, or switch to Convert and create JPEG, PNG, WebP, AVIF, TIFF, and other first-party output. The selected mode never changes when you choose a file.
No server uploadYour files stay in this tab. Public samples load from their named source only when you click Open here.
Drop a file or open an example
The viewer decodes the visible region locally for any supported image. Drag to pan, scroll to zoom, or choose a TIFF page or pyramid level.
Original
No image selected
Choose a file or sample to preview it here.
Complete pipeline
Converted output appears here.
The converter reopens its own output and verifies dimensions before offering a download. Whole-slide inputs should use a visible clip rather than converting the complete base level.
Converted
Converted image
- Conversion time
- Not available Decode, transform, and encode
- Decode mode
- Not available Enabled mode; selectors may fall back
- WASM vs TypeScript
- Not available Same file and settings in this tab
- Max observed JS heap
- Not available Browser estimate at checkpoints
- Known file bytes
- Not available Input + output, not scratch memory
- Output size
- Not available Validated encoded Blob
Operation log
Detection, directory selection, viewport reads, exports, validation, errors, timings, and available memory observations appear here.
Use it in a site
How this demo loads PureJsImage
This page serves a deterministic ESM bundle generated from src/browser.ts, the explicit all-codec entry, and the optional JPEG WASM entry on the same repository commit. The TypeScript path remains the default; the WASM module is fetched from this site only after you enable it and submit eligible work.
For an application, install from npm and let your bundler resolve the browser export. For a quick no-build experiment, the pinned npm package is also available from jsDelivr. Raw GitHub file URLs are not used because they are not a dependable JavaScript package CDN.
import { createImageLibrary } from
'https://cdn.jsdelivr.net/npm/purejsimage@0.17.0/dist/browser.js'
import { allCodecs } from
'https://cdn.jsdelivr.net/npm/purejsimage@0.17.0/dist/codec-entries/all.js'
const images = createImageLibrary(allCodecs)
const image = await images.open(file)
const output = await image.webp({ quality: 82 }).toBlob()