LAS is the dominant format for storing lidar point clouds maintained as an open standard by the OGC. Like most formats that have been around long enough, it has meanwhile accumulated versions. The version number on a LAS file is not just a timestamp – it tells you what the file can and cannot represent. Choose the wrong version for your data, and you will either lose information silently or find yourself wrestling with software that cannot read what your sensor actually recorded.
Understanding LAS files becomes much easier once you see them as structured containers. Every file begins with a header that describes the dataset: coordinate system, point count, bounding box, offsets and scales. After the header comes the point data section, which stores the actual measurements and attributes. What those containers can hold depends on two things: the version, and the Point Data Record Format (PDRF) in use.
Point Data Record Formats
Each point data record format describes a different set of attributes such as XYZ, intensity, return information, classification and scan angle. A LAS file uses exactly one PDRF for all points.
New versions introduced new PDRFs that expanded the attribute space and added capabilities that earlier versions could not represent.
| Point Data Record Format | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X / Y / Z | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Intensity | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Return Number / Number of Returns | 8 | 8 | 8 | 8 | 8 | 8 | 16 | 16 | 16 | 16 | 16 |
| Synthetic Flag | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Key-Point Flag | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Withheld Flag | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Overlap Flag | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Scanner Channel | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Scan Direction Flag | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Edge of Flight Line Flag | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Classification | 32 | 32 | 32 | 32 | 32 | 32 | 256 | 256 | 256 | 256 | 256 |
| User Data | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Scan Angle | ±90 | ±90 | ±90 | ±90 | ±90 | ±90 | ±180 | ±180 | ±180 | ±180 | ±180 |
| Point Source ID | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| GPS Time | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| R / G / B | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
| NIR | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ |
| Waveform Data | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
The table shows what each format can store, but the column differences tell a more specific story. LAS 1.4 did not simply add fields. It revised several foundational design decisions that had become limitations as sensor technology advanced. The sections below walk through the most significant of those changes.
Where LAS 1.4 changed existing foundations
Classification
LAS 1.2 stores classification in a single byte that also contains several flags. LAS 1.4 separates these concerns and expands the classification domain. The result is a cleaner data model: flags (like synthetic key point, withheld, and overlap) get their own dedicated fields, and the classification range expands from 32 to 256 classes.
Scan Angle
Earlier LAS versions store scan angle as a signed byte, which limits the resolution to whole degrees. LAS 1.4 replaces this with a 15 bit value that provides much finer precision. This is especially useful for scan geometry analysis and quality control.
Returns per Pulse
LAS 1.2 supports a maximum of five returns. Modern sensors often exceed that, especially in high density or multi channel configurations. LAS 1.4 increases the limit to fifteen returns, which prevents silent data loss during conversion.
Improved CRS Representation
Coordinate reference systems have always been a weak point in LAS. LAS 1.4 introduces WKT based CRS encoding, which is far more explicit and interoperable than the older VLR based approach. It is not perfect, but it is a significant improvement.
More Options in Variable Length Records
LAS 1.4 expands the VLR and EVLR mechanism. EVLRs allow large metadata blocks to be stored after the point data, which is useful for waveform packets and other information that does not fit neatly into the header.
Fields that are entirely new
Overlap Flag
Overlap points were handled inconsistently in older datasets. LAS 1.4 adds a dedicated overlap flag, which makes it easy to include or exclude these points depending on the workflow.
Waveform Support
LAS 1.2 includes limited waveform support, but LAS 1.4 formalizes and extends it. The newer PDRFs include proper waveform descriptors and EVLR storage, which makes full waveform datasets much easier to manage.
Near Infrared (NIR) Channel
Some sensors record a NIR intensity channel in addition to the standard intensity. LAS 1.4 adds an optional NIR field in the newer PDRFs, which gives software a reliable, standardized field to read from.
Further reading
If you want to go deeper into the technical structure of LAS and LAZ files, the LAS/LAZ cheatsheet published by rapidlasso GmbH is a compact single-page reference.
It covers the full file header field by field, all Point Data Record Formats with their byte sizes, VLR and EVLR record types, and the LAZ compression structure. It is aimed at developers and technically inclined practitioners, and makes a good companion to the conceptual overview above.
Where this leaves you
The gap between LAS 1.2 and LAS 1.4 is not just a version increment. It reflects how much lidar hardware has changed. Sensors now record more returns per pulse, additional spectral channels, and finer geometry than the older format was ever designed to handle. LAS 1.2 will quietly discard or degrade that information during conversion, which makes format choice a data integrity decision, not just a software preference.
If you are working with modern sensors or receiving data from someone who is, LAS 1.4 is the only format that represents that data without compromise. The more interesting question tends to come next: once you have your data in LAS 1.4, how do you actually work with it at scale? That is where formats like LAZ for compression, or COPCs for cloud-native access, enter the picture.
