OpenLiDARViewerv0.6.9 · AGPL-3.0
Launch viewer
Local-first LiDAR intelligence // OLV 0.6.9

Open any point cloud.
Keep it on your machine.

ACTIVE MODEVISUALIZEPOINT-CLOUD WORKSPACE

Drone LiDAR, terrestrial laser scans, phone captures and billion-point streaming datasets open straight in a browser tab. Navigate, measure, analyse terrain and export results that carry their coverage, provenance and limits with them. Nothing is uploaded.

No installNo accountNo uploadYour browser’s GPU API: PROBING
OLV // LIVE WORKSPACEPRIVATE: ON DEVICE
OpenLiDARViewer showing a height-coloured drone survey with the Scan Intelligence panel open
RENDERPROBING
FRAMELOCAL ENU · FLOAT64
POINTS9.6M · SHOWN / TOTAL

Hover the console. The probe reports whether a laser return sits under the cursor.

0Import formatsLAS to PTS, phone scans to PCD
0Streaming pathsCOPC, EPT, 3D Tiles, out-of-core LAS and chunked LAZ
0E4Cross-implementation validatedAgainst PDAL, GDAL, GRASS, SAGA, PROJ, R
0Tests in the release gateUnit, export, terrain, UI and slow buckets
0Local files sent to a serverRead on your device; remote datasets are range-fetched from the host you name

Precision is not accuracy. A viewer should know the difference, and say so.

Every number OpenLiDARViewer reports carries the coverage that produced it, the method version, and the evidence level behind the method. When it can’t stand behind an export, it watermarks it or refuses. That is the whole design.

01 Why it exists

A viewer that tells you what it knows, and what it doesn’t.

Most tools hand you a number. OpenLiDARViewer hands you the number, the coverage that produced it, the method version, and the evidence level behind the method. Each export is stamped, watermarked or refused according to the evidence behind it.

Local-first, by architecture

Decoding, rendering, analysis and export run in your browser. There is no server to upload to, no account, no telemetry of your data. Out-of-core files stream from origin-private storage on your own disk, and a computed terrain core is kept there too, so asking for the same analysis again restores it instead of recomputing it.

ON-DEVICEOPFS OUT-OF-CORENO TELEMETRY

Evidence-graded, not asserted

Every scientific product carries a level on a seven-rung ladder, E0 to E6. Seventeen claims agree with an independent implementation. None claims field accuracy yet, and the register says so in plain words.

17 AT E40 AT E5CLAIM REGISTER

Browser-native performance

WebGPU rendering with an automatic WebGL 2 fallback, worker-based LAZ decoding, Eye Dome Lighting, and a view-dependent streaming scheduler with bounded memory. A billion-point COPC or EPT cloud opens without loading the whole file.

WEBGPU · WEBGL 2WASM LAZEDL
02 Capabilities

From first look to signed deliverable.

Everything below is reachable in the current release. Items the app marks review or preview are exploratory by design. Code that ships without a user path is recorded in the project’s unreachable-module register rather than described here.

CAP-01 Terrain intelligence

A bare-earth surface that grades itself.

Ground classification, a gridded DTM with per-cell confidence and hold-out RMSE, then DSM, canopy height, slope, hillshade, TPI and VRM, all under one Terrain Assessment verdict: Good, Preview, Limited or Blocked.

  • Coverage and Confidence colour modes paint where the ground was measured and where it was filled
  • Evidence-gated contours, map sheet, DEM package and a ZIP with a SHA256SUMS manifest
  • Fails closed on an unknown unit or a missing vertical reference
HEIGHT · EDL · SCAN REPORTHeight-coloured drone survey with the Scan Intelligence panel open
CAP-02 Measurement

Eight tools. Every number graded.

Distance, polyline, area, height, angle, slope, cross-section profile and cut/fill volume. Each value carries a red, yellow or green badge for how well real returns support its endpoints, and the badge travels with the session file.

  • Stockpile volume integrated over a lasso-clipped grid, live in the toast; the exported record is still the point-sample one
  • Snapping onto real points; editable, undoable, metric or imperial
  • Profile chart at deliverable size, validated at E4 against OGR and R
  • Not survey-grade, and labelled that way in every export
DISTANCE · TRUST BADGEA distance measurement placed between two picked points
CAP-03

Navigate like a game engine

Orbit, Walk, Fly and Pan with WASD and mouse-look; Top, Iso, Oblique and Planar presets; a Plan view; saved views and shareable view links that carry no scan data.

CAP-04

Contour Studio and Output

Analytical isolines and cartographic generalisation, opt-in terrain-aware simplification, contours drawn over the cloud as a derived layer. One Output panel; exports pass a gate that can only downgrade.

CAP-05

Compare two epochs

Rigid ICP epoch alignment, defaulting to yaw plus horizontal translation so the fit cannot absorb the vertical signal it is measuring. The change raster and the thresholded gain and loss volumes are validated at E4, and a level of detection so noise below the survey’s own precision is not reported as movement.

CAP-06

Scan Intelligence and reports

Point count, density, spacing, attributes and integrity diagnostics, each figure naming the population it describes. A Scan QA report that states what it does not establish, multi-page PDF reports from three templates, and a findings ledger that persists across the session.

New in v0.6.9 // RELEASE CANDIDATE

Four changes you can feel, and what each one still can’t do.

No product changed evidence level this cycle. One measurement method changed, three paths got faster or more durable, and the register stands where it stood: 34 claims, 17 at E4, none at E5.

01
METHOD CHANGE

Stockpile volume is integrated over area

A lasso stockpile no longer sums the points that happen to be loaded. Each grid cell is clipped to the polygon and contributes the median surface within it, so the figure stops moving with point density. Registered as olv.volume.stockpile-area-grid, generation 2.

SCOPELive in the lasso toast only. The session record, the technical report and the measurement CSV still carry the older point-sample volume, so the two can disagree on the same lasso. The claim stays at E3.
02
FASTER OPEN

A local LAZ opens progressively

The header prefix is read first, a worker frames the file from it, and chunks decode from a pool, so a compressed file is never held whole. A strided stand-in preview draws while the decode continues.

SCOPEThe preview is a sample, capped at the smaller of the render budget and two million points, and is marked incomplete until the full decode lands. An ordinary LAS still reads whole under the memory guard.
03
PERSISTENT

A terrain core survives a reopen

A computed terrain core is written to origin-private storage on your own disk and restored when you ask for the same analysis again. Benchmarked at 6.6 s, 6.2 s and 9.4 s fresh against restore medians of 24 ms, 62 ms and 96 ms, with byte-identical grids.

SCOPEThe key is the analysed input, not the file: a different stride or a different classification recomputes. Only cores that took a second or more are kept, the store is capped at 512 MiB, and the browser may clear it at any time.
04
FAILS LOUDLY

Work too heavy for a worker refuses

A worker failure no longer drags a large job onto the main thread and freezes the page. The fallback runs only at sizes measured as safe: 25,000 points and 1,000 cells for terrain, 1,000,000 points for classification. Anything larger refuses and says nothing was produced.

SCOPEThose budgets are measured once on one machine as a proxy. They are not read from your device, so a slower machine can still struggle inside them.
v0.6.9 is tagged, released and deposited, so the newest citable archive is v0.6.9. Full changelog ↗
03 The interface

One workspace. Four modes.

Data, Work, Analyse and Output sit in a left rail; the Inspector on the right re-styles the scan without leaving the panel. Screenshots taken from the v0.6.8 build.

04 Workflow

Six moves from raw scan to evidence.

01

Open

Drop a file or paste a COPC, EPT or tileset URL. The format is detected for you.

02

Frame

CRS, vertical datum and units read from the header. Large coordinates recentred in Float64.

03

Inspect

Colour by height, intensity, class, RGB or normals. Probe any point. Read the Scan Report.

04

Analyse

Ground filter, DTM with hold-out RMSE, surface products, one Terrain Assessment verdict.

05

Validate

Process Studio shows each product as ready, review or blocked, with the shortest action that lifts it.

06

Export

Stamped, watermarked or refused. The permit decision is written into the artifact’s provenance, and the deliverable ZIP carries a SHA256SUMS manifest.

05 Scientific standing

Precision is not accuracy. The register keeps them apart.

Every claim in the app is tracked in a machine-readable register with a current and a required evidence level. The boundary that matters is E3 to E4: below it, a result has only been checked against our own code and our own synthetic data. Seventeen claims have crossed it. Field-grade validity begins at E5, and no product is there yet.

E0Code exists and runsIMPLEMENTED
E1Unit tests pin hand-worked expectationsUNIT
E2Agrees with a closed-form answerANALYTIC
E3End-to-end on generated known truthSYNTHETIC
E4An independent implementation agrees within tolerance17 CLAIMS
E6Reproduced by an independent party from the archiveREPRODUCED
06 Formats

Twelve import formats. Four ways to stream.

Static loads decode in a worker with a memory-safety budget. Streaming paths fetch view-dependent, decode in workers and keep residency bounded, so a file far larger than memory still renders. A local LAZ opens progressively: the header and chunk table are read first and chunks decode from a pool behind a strided stand-in preview, so the compressed file is never held whole.

LASAerial · georeferenced
LAZAerial · WASM decode
E57Terrestrial · ASTM E2807
PTXTerrestrial · multi-scan
PTSTerrestrial · text
PCDPCL · ascii/binary/lzf
PLYPhone · mesh
OBJMesh vertices
GLB · GLTFAR · mobile
XYZGeneric · chunked
CSVGeneric · chunked
PNTS3D Tiles · single tile
COPCStreaming · octree
EPTStreaming · entwine
3D TILESStreaming · tileset.json
OOC LAS · LAZStreaming · OPFS index

Mesh content in 3D Tiles (B3DM, I3DM, CMPT, glTF) and Draco are refused by name. Full matrix with scanner and app compatibility in the guide.

07 Open source, archived, citable

AGPL-3.0, a DOI for every release, and a commercial door.

Status as of 18 September 2026, from the v0.6.9 release gate. Each tile links to the live source. The mutation score is the figure the release record cites, measured at an earlier commit rather than at the release commit, and a release whose cited score falls under 75 is refused.

Licence

From v0.6.7 the project is AGPL-3.0-only. Run a modified version for others over a network and you must offer them the source. Releases through v0.6.6 stay under MIT. A separate commercial licence exists for teams that need different terms.

Licensing guide ↗

Archived on Zenodo

Every release from v0.6.1 to v0.6.8 is deposited with a version DOI. The concept DOI resolves to v0.6.9, the newest deposit.

10.5281/zenodo.21544619

Resolve the concept DOI ↗

Verifiable builds

Release archives from v0.6.3 on carry a Sigstore-signed SLSA provenance statement, a SHA256SUMS manifest and a CycloneDX SBOM. Verify before you trust.

gh attestation verify <archive> \
  --repo Aurtechmx/openlidarviewer
What it isn’t

Three things this viewer will not pretend to be.

  1. Not a GIS. Full GIS layers and analysis, photogrammetry, CRS reprojection and editing of point data are left to dedicated tools.
  2. Not survey-grade. Measurement is for inspection and documentation. Treat it as survey-grade only once you have validated it against survey-grade data and procedures.
  3. Not field-validated. Seventeen claims agree with an independent implementation on frozen fixtures. None has passed a prospective field study, and the app says preview or review wherever that gap matters.
Ready when you are

Drop a scan. Read what it can tell you.

Open the viewer, drag a .las, .laz, .e57 or .copc.laz onto the page, or paste a remote COPC URL. Ten seconds, no sign-up.

Modern Chromium, WebGPU preferredRECOMMENDED
Firefox and Safari via WebGL 2SUPPORTED
Phones and tablets, touch model, one-handed dockSUPPORTED
8 GB RAM minimum, 16 GB recommendedREQUIREMENT
Very large files: prefer COPC or EPTADVICE
↑↓ MOVE↵ OPENESC CLOSE