Skip to content
LidarKit

LAS point data record formats

Eleven layouts, one byte in the header, and everything that follows from it.

Every point in a LAS file is a record of fixed size, and the size and contents of that record are chosen once, for the whole file, by the point data record format — a single byte at offset 104 of the header. It decides whether the points have GPS time, colour, near-infrared or waveform data, how many classes and returns they can express, and how precisely the scan angle is recorded. It is the most consequential byte in the file after the version.

The eleven formats

FormatBytesSinceGPS timeRGBNIRWaveformClassesReturns
0201.0————325
1281.0Yes———325
2261.2—Yes——325
3341.2YesYes——325
4571.3Yes——Yes325
5631.3YesYes—Yes325
6301.4Yes———25615
7361.4YesYes——25615
8381.4YesYesYes—25615
9591.4Yes——Yes25615
10671.4YesYesYesYes25615

The byte counts are the standard sizes. A file may declare a larger record length, in which case the difference is extra bytes — additional per-point attributes described by a VLR. See below.

The formats fall into two families. Formats 0 to 5 share the layout defined in 2003 and extended by bolting fields onto the end. Formats 6 to 10, introduced with LAS 1.4, are a redesign of the core record that widened every field that had proved too narrow.

The legacy core: format 0

Twenty bytes, and every other legacy format begins with exactly these:

OffsetSizeFieldNotes
04XSigned integer; × scale + offset from the header.
44Y
84Z
122IntensityUnsigned; scale is the producer's choice, often 0–65535 or 0–255.
141Return number (3 bits), number of returns (3 bits), scan direction (1 bit), edge of flight line (1 bit)Three bits allow returns 1–7, but the spec caps them at 5.
151Classification (5 bits) + synthetic, key-point, withheld flags (3 bits)Classes 0–31.
161Scan angle rankSigned byte, −90 to +90 degrees, whole degrees.
171User dataProducer-defined.
182Point source IDUsually the flight line.
  • Format 1 appends GPS time as an 8-byte double at offset 20 (28 bytes).
  • Format 2 appends red, green and blue as three 2-byte values at offset 20 (26 bytes).
  • Format 3 appends GPS time at 20 and RGB at 28 (34 bytes).
  • Format 4 is format 1 plus a 29-byte waveform packet at 28 (57 bytes).
  • Format 5 is format 3 plus a waveform packet at 34 (63 bytes).

The LAS 1.4 core: format 6

Thirty bytes. Compared with format 1, everything that had run out of room was widened:

OffsetSizeFieldChange from the legacy core
012X, Y, ZUnchanged.
122IntensityUnchanged.
141Return number (4 bits), number of returns (4 bits)Up to 15 returns.
151Classification flags (4 bits), scanner channel (2 bits), scan direction, edge of flight lineFlags move here; overlap becomes a flag; multi-channel scanners get a field.
161ClassificationA full byte: classes 0–255.
171User dataUnchanged.
182Scan angleSigned 16-bit in 0.006° steps, ±30,000 covering ±180°.
202Point source IDUnchanged.
228GPS timeNow mandatory in every 1.4 format.
  • Format 7 appends RGB at offset 30 (36 bytes).
  • Format 8 appends RGB at 30 and near-infrared at 36 (38 bytes).
  • Format 9 is format 6 plus a waveform packet at 30 (59 bytes).
  • Format 10 is format 8 plus a waveform packet at 38 (67 bytes).

The widened class byte is why the classification table for formats 6 to 10 runs to 22 standard classes and 192 user-definable ones, while the legacy formats stop at 31. It is also why software that reads a format 6 file with format 1 assumptions gets the classification wrong: the flags are in a different byte.

The waveform formats: 4, 5, 9 and 10

These add a 29-byte reference per point — a descriptor index, the byte offset and size of this return's waveform samples, the return's location along the pulse, and the pulse direction as three floats — and store the samples themselves either in an extended record after the points or in a separate .wdp file. Full-waveform LiDAR is valuable in forestry and bathymetry research, but it is a niche within a niche, and the tooling reflects that.

laz-perf, the compressor this site is built on, has no support for the waveform formats. That is why the converter and viewer on this site decline formats 4, 5, 9 and 10 with a message rather than reading the point half and discarding the rest: dropping the waveform silently would produce a file that looks converted and is not. The inspector reads their headers and records normally, because inspection needs no point data.

Extra bytes

Any format can carry additional per-point fields. The header's record length is simply larger than the format's standard size, and the extra bytes at the end of each record hold whatever the producer wanted: scanner reflectance, amplitude, deviation, a normalised height, a segment ID. The specification asks the producer to describe each field in an Extra Bytes VLR (user ID LASF_Spec, record 4): one 192-byte descriptor per field giving its name, data type, no-data value, scale, offset and a description.

With the record, tools can read the fields by name. Without it, the extra bytes are a run of unlabelled data that every reader has to carry along and none can interpret. Extra bytes survive LAZ compression, and a reader that honours the descriptor can expose the fields by name.

Choosing a format

  • New airborne or drone data: format 6, or 7 if the sensor captured colour, or 8 if it captured near-infrared as well. LAS 1.4.
  • Data that must open in old software: format 1, or 3 with colour, in LAS 1.2. Accept that classes above 31 and returns above 5 are lost, and that the coordinate system has to travel as GeoTIFF keys rather than WKT.
  • Format 0 or 2: only when there genuinely is no GPS time, which is rare outside terrestrial scans exported through a LAS writer.
  • Formats 4, 5, 9, 10: only when the waveform is the point of the data, and only after confirming every tool in the chain reads them.

Changing the format of an existing file means rewriting every record and mapping fields where the two layouts differ, with anything the target cannot hold lost on the way. The converter here does not do it: it moves between LAS and LAZ and leaves the point format exactly as it found it.

Reading the format from a file

Inspect a LAS or LAZ file — the inspector reports the format, the record length, the extra bytes and their descriptors, and what the format implies: GPS time, colour, near-infrared, waveform, the class range and the maximum return number. It reads only the header, so the answer is instant for a file of any size, and it will flag a format that its version does not define.

For the container around the records, see what is a LAS file.

Frequently asked questions

What is a LAS point data record format?
A number from 0 to 10, stored in one byte of the header, that fixes the layout of every point record in the file: how many bytes each point occupies and which attributes it carries. Format 0 is 20 bytes of position, intensity, return, classification and scan angle; higher formats add GPS time, RGB colour, near-infrared and waveform packets.
Which point format has RGB colour?
Formats 2, 3, 5, 7, 8 and 10. Formats 2 and 3 are the LAS 1.2 originals; 7 and 8 are their LAS 1.4 equivalents, with 8 adding a near-infrared channel. Colour is stored as three 16-bit values, so 8-bit imagery is usually scaled up by 256 when written.
Which point format should I use?
Format 6 for LAS 1.4 data without colour, 7 with colour, 8 with colour and near-infrared. They carry a 64-bit-compatible layout, 256 classes, 15 returns, a finer scan angle and a mandatory GPS time. Use 1 or 3 only when a downstream tool cannot read LAS 1.4.
What is the difference between format 1 and format 6?
Format 6 is the LAS 1.4 redesign of format 1. Both hold position, intensity, returns, classification, scan angle, user data, point source ID and GPS time, but format 6 widens the return fields from 3 to 4 bits, the class from 5 to 8 bits and the scan angle from a signed byte to a 16-bit value in 0.006-degree steps, adds a scanner channel and an overlap flag, and moves the classification flags into their own byte. It is 30 bytes to format 1's 28.
Why do some tools reject point formats 4, 5, 9 and 10?
Those formats append a 29-byte waveform packet reference to each point and store the raw waveform samples elsewhere in the file. Reading them properly means handling that second data stream, and laz-perf, the open-source LAZ library that browser tools and PDAL are built on, does not support them, so many tools, including the converter and viewer on this site, decline them rather than silently drop the waveform data.
Can a LAS 1.2 file use point format 6?
No. Formats 6 to 10 were introduced in LAS 1.4 and depend on its 375-byte header. A file whose header says version 1.2 and format 6 is malformed; some readers open it anyway, strict ones refuse it. The inspector on this site flags the combination.
What are extra bytes?
Attributes appended to every point beyond the standard layout — a reflectance value, a scanner's amplitude, a per-point quality flag. The record length in the header is larger than the format's standard size by that amount, and an Extra Bytes VLR (LASF_Spec, record 4) should describe each field's name, type, scale and offset. Without that record the extra bytes are uninterpretable.