What you can check in a few seconds
A raster viewer earns its place when it answers a question faster than launching QGIS would. The usual ones:
- Is the georeferencing there, and right? The panel reports the CRS, the EPSG code, the ground sample distance and the extent. A DEM that claims 2 cm pixels but spans 40 km is telling you something.
- Where are the holes? Nodata cells render as holes, not as a cliff to -32767, and the percentage of the grid they cover is stated outright.
- Is the surface clean? Turn the hillshade on. Noise, stitching seams between flight lines and the tell-tale ripples of a bad interpolation all show up in relief long before they show up in a colour ramp.
- Is this a DSM or a DTM? Buildings and tree canopy stand out immediately in the 3D view. Paperwork disagrees with the data more often than anyone admits.
- Do the DEM and the ortho actually line up? Drape one on the other. A half-metre offset that is invisible in two separate windows is obvious the moment they share a surface.
Controls
| Action | 2D map | 3D terrain |
|---|---|---|
| Move | Drag to pan | Drag to orbit |
| Zoom | Scroll, or pinch | Scroll, or pinch |
| Pan | Drag | Right-drag, or shift + drag |
| Reframe | Double-click, or Fit to extent | Reset view |
| Readout | Coordinates and height follow the pointer | — |
How large files are handled
A GeoTIFF written for real work carries an overview pyramid: the same image at half resolution, quarter, eighth, and so on. This viewer reads the whole directory chain first — a few kilobytes — picks the smallest level still larger than what the screen needs, and decodes only that. The 600 MB orthophoto in the example above is drawn from a 4498-pixel overview, not from its 18 000-pixel original, so no more than a few tens of megabytes are ever in flight.
Within that level, tiles are pulled one at a time, decompressed, resampled into the display grid and dropped. Elevation gets a 2048-pixel grid; imagery gets up to 4096 pixels, or whatever the GPU's maximum texture size allows, whichever is smaller. The terrain mesh is decimated separately to about a million vertices so it stays one draw call.
Two details worth knowing, because both are common bugs in browser raster viewers. Projected coordinates are in the hundreds of thousands of metres, and passed to a GPU as 32-bit floats they quantise to a visible lattice — so the terrain mesh is recentred before the cast. And the colour ramp is clipped to the 2nd–98th percentile by default, because one unflagged -9999 spike would otherwise squash the entire terrain into a single colour. The full range is one checkbox away, and the true minimum and maximum are always on screen.
What is supported
| Aspect | Supported | Not supported |
|---|---|---|
| Container | Classic TIFF, BigTIFF, cloud-optimised GeoTIFF | External .ovr overviews, .tfw sidecars |
| Compression | None, LZW, Deflate, PackBits, JPEG, WebP | LERC, ZSTD, JPEG 2000, LZMA, CCITT |
| Samples | 8, 16, 32 and 64-bit, signed, unsigned or float | 1, 2 and 4-bit bilevel and packed data |
| Layout | Tiled or striped, chunky or planar, predictors 1–3 | Mixed bit depths across bands |
| Colour | Greyscale, RGB, RGBA, palette, YCbCr JPEG | CMYK, ICC colour management |
| Georeferencing | ModelPixelScale + tiepoint, ModelTransformation, GeoTIFF keys | Reprojection between coordinate systems |
What this viewer does not do
Deliberately out of scope, so that what is here is fast and correct:
- No reprojection. Files are shown in their own CRS.
- No editing, resampling or export — use GDAL.
- No contours, no volume or profile tools.
- No full-resolution zoom. It reads one pyramid level, not a tile window that refines as you zoom, which is what a COG tile server is for.
- No vector overlays.
For anything on that list QGIS is free and excellent. This is for the case where you have a file, a browser, and one question.