LAS is published by the American Society for Photogrammetry and Remote Sensing (ASPRS). This reference follows LAS 1.4 revision 15 and LAS 1.5 revision 0, approved in August 2025, and notes where earlier versions differ. All numbers are little-endian. Text fields are ASCII, padded with zero bytes. Fields that are not required and not used must be zero.
Versions
| Version | Header size | Point formats | Main changes |
|---|---|---|---|
| 1.0 | 227 | 0, 1 | Bytes 4 to 7 reserved |
| 1.1 | 227 | 0, 1 | File Source ID at byte 4 |
| 1.2 | 227 | 0 to 3 | Global Encoding at byte 6 (GPS time type); colour formats |
| 1.3 | 235 | 0 to 5 | Waveform data and its offset in the header |
| 1.4 | 375 | 0 to 10 | 64-bit point counts, 15 returns, 256 classes, extended VLRs, WKT |
| 1.5 | 393 | 6 to 10 | GPS time range and Time Offset; formats 0 to 5 and GeoTIFF systems dropped |
A reader should take the header’s length from Header Size rather than
from the version, and must use Offset to Point Data to find the
points.
Header fields
| Offset | Size | Type | Name | Versions | Meaning |
|---|---|---|---|---|---|
| 0 | 4 | char[4] | File Signature | All | LASF |
| 4 | 2 | uint16 | File Source ID | 1.1 on | Source of the file, such as a flight line, 1 to 65,535; 0 means none assigned, as for a merged tile |
| 6 | 2 | uint16 | Global Encoding | 1.2 on | Bit field; see below. Reserved (0) in 1.1 |
| 8 | 4 | uint32 | Project ID – GUID data 1 | All | Optional project identifier, together with the next three fields |
| 12 | 2 | uint16 | Project ID – GUID data 2 | All | |
| 14 | 2 | uint16 | Project ID – GUID data 3 | All | |
| 16 | 8 | uint8[8] | Project ID – GUID data 4 | All | |
| 24 | 1 | uint8 | Version Major | All | 1 |
| 25 | 1 | uint8 | Version Minor | All | 0 to 5 |
| 26 | 32 | char[32] | System Identifier | All | Hardware, or the operation that made the file; see below |
| 58 | 32 | char[32] | Generating Software | All | Software and version, such as TerraScan V-10.8 |
| 90 | 2 | uint16 | File Creation Day of Year | All | Day of the year in GMT, 1 January being day 1 |
| 92 | 2 | uint16 | File Creation Year | All | Four-digit year |
| 94 | 2 | uint16 | Header Size | All | Size of this header in bytes |
| 96 | 4 | uint32 | Offset to Point Data | All | Bytes from the start of the file to the first point |
| 100 | 4 | uint32 | Number of Variable Length Records | All | VLRs between the header and the points |
| 104 | 1 | uint8 | Point Data Record Format | All | 0 to 10; see point records |
| 105 | 2 | uint16 | Point Data Record Length | All | Bytes per point; anything beyond the format’s own fields is extra bytes |
| 107 | 4 | uint32 | Legacy Number of Point Records | All | Number of points (the only count before 1.4). From 1.4, 0 unless the file keeps legacy compatibility |
| 111 | 20 | uint32[5] | Legacy Number of Points by Return | All | Points that are return 1 to 5, under the same rule |
| 131 | 8 | float64 | X Scale Factor | All | Multiplier for stored X, such as 0.01 |
| 139 | 8 | float64 | Y Scale Factor | All | |
| 147 | 8 | float64 | Z Scale Factor | All | |
| 155 | 8 | float64 | X Offset | All | Added after scaling |
| 163 | 8 | float64 | Y Offset | All | |
| 171 | 8 | float64 | Z Offset | All | |
| 179 | 8 | float64 | Max X | All | Actual extents of the points, as real coordinates; 0 if there are no points |
| 187 | 8 | float64 | Min X | All | |
| 195 | 8 | float64 | Max Y | All | |
| 203 | 8 | float64 | Min Y | All | |
| 211 | 8 | float64 | Max Z | All | |
| 219 | 8 | float64 | Min Z | All | |
| 227 | 8 | uint64 | Start of Waveform Data Packet Record | 1.3 on | Offset of waveform data inside the file; 0 if none or stored externally |
| 235 | 8 | uint64 | Start of First Extended Variable Length Record | 1.4 on | Offset of the first EVLR, or 0 |
| 243 | 4 | uint32 | Number of Extended Variable Length Records | 1.4 on | EVLRs after the points |
| 247 | 8 | uint64 | Number of Point Records | 1.4 on | Number of points, always filled in |
| 255 | 120 | uint64[15] | Number of Points by Return | 1.4 on | Points that are return 1 to 15 |
| 375 | 8 | float64 | Max GPS Time | 1.5 | Highest non-zero GPS time of the points, in the file’s time encoding |
| 383 | 8 | float64 | Min GPS Time | 1.5 | Lowest non-zero GPS time |
| 391 | 2 | uint16 | Time Offset | 1.5 | Used with Global Encoding bit 6; see below |
A coordinate is stored value × scale factor + offset. For example, with
X scale 0.01 and X offset 500000, a stored X of 1234567 is 512345.67.
From 1.4, a writer that keeps legacy compatibility fills both the legacy 32-bit counts and the new 64-bit ones; this is possible only with point formats 0 to 5 and at most 4,294,967,295 points. Otherwise the legacy fields are 0. If a non-zero legacy field disagrees with the new one, the specification tells readers to use the legacy value.
Global Encoding
| Bit | Name | Meaning |
|---|---|---|
| 0 | GPS Time Type | 0: GPS times in the points are GPS week time (seconds into the week). 1: Adjusted Standard GPS Time, standard GPS time minus 1,000,000,000 seconds. From 1.2 |
| 1 | Waveform Data Packets Internal | Waveform data is inside this file (in 1.4 and 1.5 as an EVLR). Deprecated. From 1.3 |
| 2 | Waveform Data Packets External | Waveform data is in a separate file with the same name and the extension .wdp. Never set together with bit 1. From 1.3 |
| 3 | Synthetic Return Numbers | The return numbers were generated, for example by merging a first-return file and a last-return file. From 1.3 |
| 4 | WKT | The coordinate system is given as OGC WKT rather than GeoTIFF keys. Required for point formats 6 to 10, and always set in 1.5. From 1.4 |
| 5 | Reserved | 0 |
| 6 | Time Offset Flag | With bit 0 also set, GPS times are Offset GPS Time: standard GPS time minus 1,000,000 × Time Offset seconds. Must not be set without bit 0. From 1.5 |
| 7 to 15 | Reserved | 0 |
Standard GPS time counts seconds from midnight at the start of 6 January 1980. A Time Offset of 1000 gives the same result as Adjusted Standard GPS Time.
System Identifier
| Made by | System Identifier |
|---|---|
| A hardware system | The hardware’s name, such as ALS50 |
| Merging one or more files | MERGE |
| Modifying a single file | MODIFICATION |
| Extracting from one or more files | EXTRACTION |
| Reprojecting, rescaling, warping and so on | TRANSFORMATION |
| Another operation | OTHER, or up to 32 characters naming it |