Skip to content
LidarKit

View GeoTIFF DEMs and orthophotos in your browser

Drop an elevation model in for an instant hillshade and a 3D surface. Add the orthophoto and it drapes straight onto the terrain. Nothing is uploaded.

Drop a DEM or orthophoto here

or choose files

GeoTIFF · DEM, DSM, DTM or orthophoto · BigTIFF and COG

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

Action2D map3D terrain
MoveDrag to panDrag to orbit
ZoomScroll, or pinchScroll, or pinch
PanDragRight-drag, or shift + drag
ReframeDouble-click, or Fit to extentReset view
ReadoutCoordinates 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

AspectSupportedNot supported
ContainerClassic TIFF, BigTIFF, cloud-optimised GeoTIFFExternal .ovr overviews, .tfw sidecars
CompressionNone, LZW, Deflate, PackBits, JPEG, WebPLERC, ZSTD, JPEG 2000, LZMA, CCITT
Samples8, 16, 32 and 64-bit, signed, unsigned or float1, 2 and 4-bit bilevel and packed data
LayoutTiled or striped, chunky or planar, predictors 1–3Mixed bit depths across bands
ColourGreyscale, RGB, RGBA, palette, YCbCr JPEGCMYK, ICC colour management
GeoreferencingModelPixelScale + tiepoint, ModelTransformation, GeoTIFF keysReprojection 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.

Frequently asked questions

How do I open a GeoTIFF without GIS software?
Drop the .tif file onto the viewer above. It is read on your own machine — the TIFF directory, the LZW or Deflate decompression and the hillshading all run in your browser — so there is nothing to install and nothing to upload. QGIS and ArcGIS are still the right tools for real analysis; this is for the moment you just need to see what a file contains.
Can I view a DEM and an orthophoto together?
Yes, that is what this viewer is for. Load both files and the orthophoto drapes over the elevation model in the 3D view, so you see the photograph on the actual shape of the ground. In the 2D view you can put the hillshade over the orthophoto instead, which is the fastest way to see terrain and detail at once.
Are my files uploaded?
No. There is no upload endpoint and no server component — the file is read through the browser's File API, decoded in a Web Worker, and drawn to a canvas. That makes it usable for survey data you are not permitted to send to a third-party service.
Is there a file size limit?
No. A GeoTIFF with overviews — which most modern DEMs and every cloud-optimised GeoTIFF has — is read at whichever pyramid level suits the screen, so a 600 MB orthophoto opens in seconds without loading 600 MB into memory. A file with no overviews has to be read at full resolution, which is slower but still works.
Which GeoTIFF compressions are supported?
Uncompressed, LZW, Deflate, PackBits, JPEG and WebP, in both classic TIFF and BigTIFF, tiled or striped, with the horizontal and floating-point predictors. LZW and PackBits are decoded by this site's own code; Deflate, JPEG and WebP use decoders the browser already ships. LERC, ZSTD and JPEG 2000 are not supported — GDAL can rewrite those with gdal_translate -co COMPRESS=DEFLATE.
Why is the elevation shown at a lower resolution than my file?
Because the display budget is a 2048-pixel grid, taken from whichever overview level is closest above it. That is sharper than most screens can show and it keeps hillshading interactive; the true full-resolution size is always reported next to it. Your file is only read, never altered.
Does it reproject between coordinate systems?
No. Both files are drawn in the coordinate system they were written in, and the viewer reports the EPSG code and CRS name it found in the GeoTIFF keys. If a DEM and an orthophoto are in different systems they will not line up, and the viewer says so instead of pretending they do.
What does the hillshade actually compute?
Horn's 3×3 slope estimator with the same sun-position maths gdaldem hillshade uses, so the result is directly comparable to GDAL's. The cell size comes from the decoded grid's own affine transform rather than the file's stated ground sample distance, which matters when the pixels came from an overview level.
Can it read a nodata mask correctly?
Yes. The GDAL_NODATA tag is honoured, those cells become holes rather than a cliff down to -32767, and the panel reports what percentage of the grid is nodata. Sparse tiles that a cloud-optimised GeoTIFF simply omits are treated the same way.

Working with point clouds instead? View LAS and LAZ files, convert LAZ to LAS or compress LAS to LAZ.