Skip to content
LidarKit

View COPC files without downloading them

Paste a URL to a .copc.laz and the octree streams into your browser — only what is on screen is ever read. Local files work too, and nothing is uploaded.

Drop a COPC, LAS or LAZ file here

or choose a file

.copc.laz · .las · .laz · multi-gigabyte files welcome

…or open one from a URL. A .copc.laz file streams straight from the host — only the parts you look at are read. Anything else shows its full metadata without downloading the points.

No file to hand? Tryautzen-classified.copc.laz(81 MB, 10.6 M points) orsofi.copc.laz(2 GB, 364 M points).

What makes COPC different

An ordinary LAZ file is compressed in sequence. To draw the last point you must decompress every point before it, which is why every browser viewer that handles plain LAZ starts by downloading the whole file. At two gigabytes that is not a slow experience, it is an impossible one.

COPC reorders the same points into an octree before compressing them, and records an index of where each node landed. The root node is a thinned version of the entire cloud; each level below it adds detail in a smaller region. A reader can fetch the root, draw it immediately, and then pull only the deeper nodes that fall inside the current view.

The numbers are the argument. For the 2 GB SoFi Stadium scan — 364 million points — the header and octree index together come to about87 KB, under a twenty-thousandth of the file. That is enough to know the full extents, the CRS, the point count, and exactly which byte ranges to ask for next.

How this viewer streams it

  • One Range: bytes=0-588 request reads the LAS header and the COPC info record together, and confirms the host supports ranges at all.
  • The root hierarchy page is fetched and parsed. Deeper pages are left alone until the level-of-detail walk actually needs to descend into them — large files have deep trees, and walking one eagerly would undo the point of the format.
  • Nodes inside the view frustum are requested nearest-first, up to a point budget, and decompressed one at a time in a Web Worker. Each node is drawn the moment it arrives, so the picture sharpens rather than appearing all at once.
  • Nodes that leave the view are released, so panning around a large cloud does not accumulate memory without limit.

Any hosted LAS or LAZ, not just COPC

Point the URL field at a plain .las or .laz and you still get something useful for a few kilobytes: version, point count and format, coordinate system, bounding box, and the full VLR list. Rendering the points needs the whole file, so that is offered as a separate step with the size shown — never started for you.

When a URL will not load

Two host-side settings decide whether a remote file can be read from a browser, and neither is under this page's control:

ProblemWhat it meansWhat helps
CORS blockedThe host does not send Access-Control-Allow-Origin, so the browser refuses to hand the response to the page.Download the file and drop it in, or ask the host to fix it.
No range supportThe host answers 200 to a range request and starts sending the whole file.Download it in full — offered explicitly, with the size.
404 or 403The URL is wrong, or the object is not public.Check the link; the exact status is shown.

There is deliberately no proxy server to route around CORS. Proxying would mean your data passing through a third party, which is the one thing this tool promises never to do — and on multi-gigabyte files it would be someone else's bandwidth bill besides.

What this viewer does not do

  • No COPC writing. Producing one requires a full spatial sort and rechunk of the point set; PDAL does it well.
  • No editing, cropping, filtering or measurement.
  • No screen-space-error refinement yet — node selection is a breadth-first walk under a point budget, which is simple and predictable rather than maximally clever.

Frequently asked questions

What is a COPC file?
COPC — Cloud Optimized Point Cloud, written .copc.laz — is an ordinary LAZ 1.4 file whose points have been reordered into a clustered octree, with an index describing where each node sits in the file. Any LAS/LAZ reader can open it as a normal LAZ; a reader that understands the index can fetch just the parts it needs.
How can a 2 GB file open in a few seconds?
Because almost none of it is read. The viewer fetches the header and the octree index — tens of kilobytes — then requests only the nodes inside the current view, coarsest first, using HTTP range requests. Zoom in and finer nodes are fetched; zoom out and they are released. The panel under the view shows exactly how many bytes have been read.
Does the file have to be on a server?
No. A local .copc.laz is read the same way, through the File API, seeking within the file instead of over the network. The octree path is identical — only the source of the bytes differs.
Why does a URL sometimes fail to load?
Almost always CORS: the host has not set an Access-Control-Allow-Origin header, so the browser refuses to let the page read the response. Nothing on this end can change that — the fix belongs to whoever hosts the file. Some hosts also ignore HTTP range requests, which makes streaming impossible. Both cases are reported specifically rather than as a generic failure, with a download link as the fallback.
Are my files uploaded?
No, and there is no server component to upload them to. A local file never leaves your machine. A remote file is fetched by your browser directly from the host that already serves it — the bytes never pass through us, which is also why a CORS-blocked host cannot be worked around with a proxy.
Can I share a link to a cloud?
Yes. Any URL you open produces a permalink that reopens the viewer with the same file already loading, plus an iframe snippet if you want to embed the view in a page of your own.
What about a plain LAZ on a URL?
It still works, but differently. A plain LAZ has no spatial index, so there is no way to draw part of it. The viewer reads a few kilobytes and shows the full header — CRS, point count, format, extents, VLR list — and then offers downloading the points as a separate step, with the file size on the button.
Which point formats are supported?
COPC permits point data record formats 6, 7 and 8, and all three are supported, with or without extra bytes. RGB is read from formats 7 and 8.

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