Skip to content
LidarKit

E57 viewer in your browser

Open a laser scan, measure distances in it, and find out what the file actually contains. Multi-scan projects come out registered. Nothing is uploaded, and there is no fixed size limit.

Drop your E57 file here

or choose a file

ASTM E57 · single- or multi-scan · multi-gigabyte files welcome

What an E57 file actually holds

E57 (ASTM E2807) is the vendor-neutral exchange format for terrestrial laser scanning. Leica, Faro, Trimble, Riegl and Matterport all export it, which is why it is usually the file you get handed rather than the one you captured.

One E57 file is a project, not a single cloud. It holds a list of scans, each with its own points, its own sensor metadata, and its own pose — the rotation and translation that place it in a shared coordinate frame. A viewer that ignores the pose shows you one scan's worth of geometry with the rest stacked on top of it. This one applies it, which is why a 40-station building survey opens looking like a building.

Scans may store Cartesian X, Y and Z, or spherical range, azimuth and elevation — the form a rotating scanner measures in directly. Both are read here. Points can also be flagged invalid, which is how a scanner records a pulse that returned nothing; those are skipped rather than drawn as a spike at the scanner position, and the panel counts how many there were.

Measuring in an E57

Click any point and the panel beside the view reports its coordinates in the file's own frame — the scan's pose applied, the viewer's internal recentring removed — along with its intensity and RGB where the scan recorded them. Press M or hit Measure, click two points, and you get the 3D distance, the horizontal distance, the height difference and the slope. Metres or feet and inches. Measurements can be copied out as CSV, which is always written in metres whichever unit is on screen.

There is one thing worth understanding about what that number means, and the viewer states it rather than leaving you to find out. A multi-gigabyte project is drawn from a sample — every sixth point, or every five-hundredth — so a click selects the nearest point in the sample, not the nearest point in the file. The coordinates themselves are exact, straight out of the file. The uncertainty is in which point you got, and it is roughly the spacing between displayed points, which the panel shows alongside the stride. Measure a wall at 18 mm sample spacing and the answer is good to about that, not to the millimetre the numbers are printed to.

This is a property of E57 rather than a shortcut. The format stores points as a stream with no spatial index, so there is no way to ask "which point is under this pixel" without reading the entire file — which on a 20 GB project is not a click, it is a coffee break. For checking a ceiling height, a door width or a clearance, measuring against the sample is the right trade. Setting out is not: that needs every point, not a sample.

A horizontal slice through the scan

Press Floor plan, or P, and the view turns to look straight down through a thin horizontal slab of the scan. The camera switches to an orthographic lens, so a metre is the same length everywhere on screen. That is what makes the grid and the scale bar true rather than decorative, and it is the difference between a plan and a photo of a model taken from above.

The slice starts 1.2 m above the lowest floor in the file, which is where architectural plans cut: through doors and windows, above desks and most plant. Floors are found from the heights of the points themselves. A floor is thousands of points at one height and stands out against the walls, so the panel shows that height profile, marks the slice on it, and lists each level it found as a button. Cut height and thickness are sliders. The grid lands on whole metres of the file's own coordinates, so it agrees with the numbers a clicked point reports.

Measuring works inside the slice, and a click only reaches points that are drawn, so a wall-to-wall distance is taken between the walls rather than the floor beneath them. Drag to pan, scroll to zoom about the cursor, and shift-drag or right-drag to turn the drawing. What you are looking at is the scan's own points at that height, not a traced drawing. It shows where the walls are and how far apart; turning that into wall lines is a drafting job, and this is the reference to draft from.

The plan can be saved as a PNG, either the whole plan or the current view. Pick a ground resolution, such as 1 cm per pixel, or a print scale such as 1:100 at 300 dpi. The panel gives the size in pixels, and on paper, before anything is rendered. The image is rendered afresh at that resolution rather than screenshotted, and its footer states the cut height, the resolution and how sparsely the file was sampled. A PNG travels without this page, so it has to carry its own caveats. One of them is worth knowing in advance: pixels finer than the spacing between drawn points make the image bigger, not more detailed.

A vertical section

Section, or S, does the same thing standing up: a thin vertical slab, seen side-on through the same orthographic lens, with Z up the screen. It cuts across the file's X or Y axis, and a strip in the panel shows where the points are along that axis. Walls running across the cut are the spikes in it, so cutting between two of them shows the room and cutting through one shows its face. Other side turns round to look back the other way. Open it from the floor plan and it cuts through the middle of whatever the plan was showing.

It is where heights live: floor to ceiling, the depth of a beam, the clearance under a duct, the fall of a floor across a room. Measuring works inside the section exactly as it does in the plan. The grid sits on whole metres of the file's coordinates and of height, and the section exports as a PNG with the same footer, which states the axis, the cut position and which way it looks. It is a point-cloud section: the scan's points in a slab, not a drawn one.

What is in this file, before the points arrive

An E57's header and XML parse in milliseconds even when the point data runs to gigabytes, so the panel that says what you have received appears while the cloud is still loading: how many scan stations, how many points, whether it is registered, whether it is structured, whether it carries RGB, intensity, timestamps or imagery, and whether it names a coordinate system.

Those answers are the ones people actually need from a file somebody else produced. Registered means every scan carries a pose and the stations sit in one frame; unregistered means the file never said how they relate, and they will overlap. Structured means each scan kept its row and column grid, which some importers require and many exports drop. Each fact has a line explaining why it matters, and nothing is inferred — where the file does not say, the panel says the file does not say.

Why there is no classification option

The E57 standard defines no classification field. Not an optional one — none at all. Ground, vegetation and building codes are an ASPRS LAS concept, and nothing in an E57 file carries them.

So this viewer does not offer a classification colour mode, because a legend that shows ground, vegetation and building while shading every point identically is worse than no legend. Classification only becomes possible once a scan is in a format that has somewhere to record it — LAS or LAZ, where automatic classification can label ground, vegetation and buildings. Intensity is offered only where the scan recorded it, and RGB only where the scan was captured with imagery, for the same reason.

Checksums, and what "verified" means here

E57 is unusual among point cloud formats in being self-checking: the file is a sequence of 1 KB pages, each ending in a CRC-32C checksum. A corrupt transfer is therefore detectable rather than something you infer later from odd-looking geometry.

The header and the XML metadata are always verified, before any offset out of them is trusted. Verifying every page of point data costs real seconds per gigabyte, so it is a checkbox rather than a default — and the panel says which pages were checked instead of implying all of them were.

How large files are handled

The file is decoded in a Web Worker, streaming through it once. Points are taken at an even stride across every scan rather than from the beginning, so what you see is a fair sample of the whole project and not just its first station.

The display budget is 2 million points, shared across the scans in proportion to their size. Your file is never modified — this is a display limit, not a conversion.

Two details worth knowing, because they are where browser point cloud viewers usually go wrong. First, scan poses routinely put a cloud in projected coordinates hundreds of kilometres from the origin, where 32-bit floats resolve to decimetres and the cloud snaps to a visible lattice; every scan here is recentred on one shared origin before the cast, so the scans stay registered and stay smooth. Second, because every E57 attribute occupies a constant number of bits, subsampling is done by advancing bit cursors rather than by decoding and discarding — which is what makes striding a multi-gigabyte file cheap.

The imagery most tools throw away

An E57 file can carry the scanner's own photographs alongside the points, in a section called images2D, each with the pose that says where it was taken from. Terrestrial exporters fill it in as a matter of course and almost nothing reads it.

The viewer lists everything in that section — how many images, how they are projected, how large they are, and which scan each belongs to — and loads any one of them on request. Pixels are fetched only when asked for, because a scan project routinely carries more imagery than points: one 32-station export measured 110 MB of JPEG against 1.75 GB of points, and decoding all of it up front would be slower than the point cloud it sits beside.

What is in there varies by vendor, and the viewer reports what it finds rather than assuming. A Matterport sweep turns out to hold six 2048×2048 perspective faces at exactly 90° — a cubemap, in other words, a finished panorama per station. Faro, Leica and BLK files more often carry a single equirectangular image per station. And the standard also allows a visual reference image, which by definition has no projection parameters at all: those can be shown, but where they point cannot be recovered from the file, and the viewer says so instead of guessing.

Where the imagery is a cubemap, or any other perspective photo with a pose, the viewer can put you inside it. Enter a station's panorama and you stand exactly where the scanner stood, looking around through its own photographs; markers show the neighbouring stations and how far off each is, and a click walks you there. The first station is open to anyone; touring on from it asks you to sign in. Each photo is placed from its own pose rather than snapped to a tidy cube, which matters more than it sounds — every Matterport station measured so far sits a degree or so off level, and a cube that assumed otherwise would show the seams. A slider fades the point cloud in over the photographs, so whether the two agree is something you can see rather than take on trust.

What this viewer does not do

  • No editing, registration or filtering. The floor-plan slice hides points on screen; the file itself is never cut.
  • No traced wall lines or CAD output. The floor plan and the section are slices of the points, drawn to scale.
  • No area or volume measurement, and no snapping to planes or edges. Distances are measured between two points you pick.
  • No panorama tour for equirectangular imagery yet. Cubemap and perspective photos can be walked through; the single 360° image that Faro and Leica files usually carry is shown flat for now.
  • No E57 export — this reads E57, it does not write it.

That list is deliberate. Reading and drawing is what lets this open a multi-gigabyte project in a browser tab in seconds, with no install and no upload — and each of those omissions is a thing that would have cost that. This is for the moment you have a scan, a browser, and one question about it.

It does not write E57 — but it does write LAS. Converting E57 to LAS or LAZ is a separate tool on this site: it applies each scan's pose, writes every station into one LAS 1.4 or LAZ file with the scan number kept as the point source ID, and carries colour and intensity across. What it cannot carry — the imagery, and the per-scan structure itself — it names before it runs, because flattening a scan project into a flat point list is a one-way trip.

Once the points are in LAS or LAZ, the rest of the toolbox applies: view them in 3D, label ground, vegetation and buildings, or read the header and coordinate system.

Frequently asked questions

How do I open an E57 file without installing software?
Drop the .e57 file onto the viewer above. It is decoded on your own machine and drawn with WebGL, so there is nothing to install and nothing to upload. Multi-scan files open as one registered cloud, with each scan listed underneath so you can hide any of them.
Is my E57 file uploaded to a server?
No. The file is opened with the browser's File API and decoded by a parser running in a Web Worker on your machine; the page has no server to send it to. That matters more for E57 than for most formats, because laser scans are usually of buildings and sites their owners are not free to send to a third party.
Is there a file size limit?
No limit on the file itself. The viewer works to a budget of 2 million displayed points and spreads it across every scan in the project, so a multi-gigabyte, many-station project opens without exhausting memory and no single scan hogs the budget. The file is only ever read, never altered.
Why does the viewer show fewer points than my file contains?
Because drawing every point of a 300-million-point project would exhaust GPU memory and drop the frame rate to nothing. The panel below the view reports the true total and the stride it used, so you always know what you are looking at.
Does it handle E57 files with several scans?
Yes. Each scan is decoded with its own pose — the rotation and translation the file gives for placing it in a common frame — so a registered project appears assembled rather than piled on the origin. Every scan gets a row in the scan list with its sensor, its point count and a checkbox to hide it.
What if the scans are not registered?
If no scan carries a pose, the viewer says so instead of pretending otherwise. The scans are then drawn in their own coordinates and will overlap, because that is what the file actually contains — registration information the file does not hold cannot be recovered from the points.
Why is there no classification colour mode?
Because the E57 standard has no classification field, so there is nothing for any tool to colour by. Points can be coloured by elevation, by intensity where the scan recorded it, and by RGB where the scan was captured with imagery. Offering a classification mode would shade every point identically while looking authoritative. Classification is an ASPRS LAS concept, so it only becomes available once the points are in a LAS or LAZ file, which the classifier here can then label automatically.
Does it read spherical scans?
Yes. Terrestrial scanners often store range, azimuth and elevation rather than X, Y and Z. Both layouts are read, and the scan list says which one each scan uses.
Can I see the photographs stored in an E57 file?
Yes. E57 files can carry the scanner's own imagery in an images2D section, each image with the pose that records where it was taken from, and the viewer lists all of it and loads any image you pick. Most tools ignore this section entirely. Images are fetched one at a time rather than all at once, because a scan project often holds more imagery than points — a 32-station Matterport export carries 110 MB of JPEG in 192 faces.
Can I walk through the panoramas in an E57 file?
Yes, for cubemap and other posed perspective imagery — which is what Matterport exports. Press Panorama, or click a station marker and choose Enter panorama: you stand where the scanner stood and look around through its own photographs, with markers showing the nearby stations and how far away each one is. The first station is open to everyone; walking on to the others needs you to sign in. A slider fades the point cloud in over the photos, so you can check the two against each other. Equirectangular panoramas, which Faro and Leica files tend to carry, are listed and shown flat but not yet placed around you — that is still being worked on.
Can I measure distances in an E57 file?
Yes. Turn on Measure, click two points, and the panel gives the 3D distance, the horizontal distance, the height difference and the slope, in metres or in feet and inches. Measurements can be copied out as CSV. Because a large project is drawn from a sample of its points, a click selects the nearest sampled point rather than the nearest point in the file — the viewer shows the sample spacing so you know what the number is worth, rather than printing three decimals and letting you assume.
How accurate is a measurement taken in the browser?
The coordinates are exact: they come straight out of the file with the scan's pose applied and nothing rounded. The uncertainty is in which point you selected. The viewer draws up to 2 million points, so a big file is sampled, and each end of a measurement can be off by roughly the spacing between displayed points — a figure the panel states. On a typical room that is millimetres to a couple of centimetres. It is right for checking a ceiling height or a door width; setting-out tolerances need the full-resolution cloud rather than a display sample.
Can I get a floor plan from an E57 file?
You can get a to-scale horizontal slice, which is what a floor plan is drawn from. Press Floor plan (or P) and the view looks straight down through a thin slab of the scan, cut 1.2 m above the lowest floor it finds — through doors and windows, above most furniture — so the walls read as walls. A 1 m or 0.5 m grid on the file's own coordinates and a scale bar sit over it, the cut height and thickness are sliders, and Measure works inside the slice for wall-to-wall distances. It is a point-cloud slice, not a CAD drawing: no wall lines are traced, and what you see is the scan's own points.
Can I cut a vertical section through an E57 scan?
Yes. Press Section (or S) and the view turns side-on through a thin vertical slab of the scan, cut across the file's X or Y axis, to scale and with Z up. Choose the axis, slide the cut along it, set the thickness, and flip to look from the other side. Entered from the floor plan, the section cuts through the middle of what the plan was showing. Measure works inside it, so a floor-to-ceiling height or a beam depth is two clicks. Like the plan, it is the scan's own points in a slab, not a traced CAD section, and it exports as a PNG the same way.
Can I export an E57 floor plan as an image?
Yes, as a PNG, once you are signed in. Choose the whole plan or just the current view, and either a ground resolution (2 cm, 1 cm or 5 mm per pixel) or a print scale (1:200, 1:100 or 1:50 at 300 dpi). The panel states the pixel size, and the paper size for a print scale, before anything is rendered. The image carries the grid, a scale bar, the file's axis arrows and a footer giving the cut height, the resolution and how densely the scan was sampled. A print-scale export also records its dpi in the PNG, so software that honours it prints at the stated scale. That holds only at 100% — scaled to fit a page, it is no longer 1:100.
How does the viewer find the floors in a scan?
From the heights of the points drawn. A floor or a ceiling is thousands of points at one height, so it stands out as a spike against the walls, which spread evenly over every height. The plan panel shows that height profile with the slice marked on it and lists each horizontal surface it finds as a button; clicking one cuts 1.2 m above it. A ceiling and the floor above it, a slab apart, count as one level.
Can I see the coordinates of a point in an E57?
Click it. You get X, Y and Z in the file's own coordinate frame — the scan's pose applied, and the recentring the viewer does internally for float precision removed — plus intensity and RGB where the scan recorded them. Attributes the file does not carry are not shown at all rather than displayed as zero.
How can I tell whether an E57 is registered?
The viewer says so before the points have finished loading, because registration is stated in the file's metadata rather than derived from its geometry. Registered means every scan carries a pose placing it in a shared frame. If no scan carries one the file is unregistered and its stations will overlap when drawn; if only some do, the viewer reports how many. None of this is guessed from the point data.
What is a structured E57, and how do I know if mine is one?
A structured scan records a row and column index for every point, keeping the grid the scanner swept. That grid is what lets a point be addressed by scanner position, and some importers require it. An unstructured E57 is a flat list of points with no grid — perfectly valid, and what many exports produce. The viewer reports which one you have, and says when a project is mixed.
Can I tell which scan station a point came from?
Yes, two ways. Colour by Scan gives every station its own colour, which makes overlap between stations and any gap in coverage obvious at a glance. And clicking a point names the station it belongs to.
What are the checksums the viewer mentions?
E57 splits the file into 1 KB pages, each ending in a CRC-32C checksum, so corruption can be detected rather than guessed at. The header and metadata pages are always verified. Verifying every page of point data costs a few seconds per gigabyte, so it is a checkbox on the drop screen rather than a default, and the panel states which pages were actually checked.
Do I need a powerful computer?
Any machine with a modern browser and working WebGL, including phones. E57 needs no WebAssembly at all here — the format has no entropy coder, so the reader is plain JavaScript in a worker.