Every PLY this page accepts begins as text, even when the body of the file is binary. The first line is ply. Then a format line names ascii, binary_little_endian, or binary_big_endian, and the version 1.0. Then the file lists elements. A vertex element says how many points exist and which properties each point carries: x, y, z, and, when the scanner stored them, red, green, and blue, or the shorter names r, g, and b. A face element says how the points join. The word end_header is the door between that description and the numbers.
If the header is missing a format, or a property appears before its element, the page refuses the file. It does not guess a layout from the length of the bytes. Guessing is how a laboratory spends an afternoon looking at a mesh that is quietly wrong: a color channel read as a coordinate, or a face index read as a normal. Refusal is the kinder result.
Normals, when they are present, are nx, ny, and nz on the vertex. They are written back on the faces that remain. Many scanner files have no normals at all. The page says so, instead of inventing a smooth direction and calling it part of the original.
The bench after a successful open shows the format, the vertex count, the polygons, the triangles after fan triangulation, whether color was read, and whether normals were present. Those counts are the file. They are not a score.


