16-bit vs 8-bit Depth Maps — Why 65,536 Levels Eliminate Laser Topography Lines
The technical case for 16-bit depth maps: 65,536 vs 256 brightness levels, laser topography lines, 3D printing banding, CNC step contours. Includes tool compatibility matrix and how to verify your file is really 16-bit.
Last updated: 2026-11-10
If you have ever imported a depth map into LightBurn 3D Sliced and seen horizontal step contours burn into a brass or stainless workpiece — the dreaded topography lines — you have met the practical limit of 8-bit precision. Depth-Map.com writes a 16-bit grayscale PNG. The model runs on a server. After that, the depth slider remaps the file in the browser. The difference between an 8-bit file and a 16-bit file is not stylistic; it is the difference between a visible 1/256 staircase and a continuous relief.

The lion above is the manufacturing file: 16-bit PNG, STL. It was exported at 3 mm depth and a 1.5 mm base. Full scale in the PNG is 10 mm, so the brightest pixel is 19661, not 65535. The raw model file, before that remap, does reach 65535.
The math: 256 vs 65,536 levels
A grayscale PNG stores a single brightness value per pixel. The bit depth determines how many distinct values that number can hold.
| Bit depth | Distinct levels | Brightness step | Precision ratio | |---|---|---|---| | 8-bit | 2⁸ = 256 | 1 / 255 | 1× (baseline) | | 16-bit | 2¹⁶ = 65,536 | 1 / 65,535 | 256× finer | | 24-bit RGB (3 × 8-bit) | 2²⁴ = 16.7M | — | Only useful for color; each channel is still 8-bit | | 32-bit float (EXR) | ~4 billion | continuous | 16,384× finer than 16-bit; overkill for most makers |
A depth map encodes physical height, not aesthetic brightness. If you map an 8-bit depth map onto a 3 mm-deep brass relief, each level corresponds to 0.0117 mm of physical height. A 16-bit depth map on the same 3 mm relief gives you 0.000046 mm per level — four orders of magnitude finer than the laser can physically engrave.
Where the staircase appears
The resolution of the human eye on a brightness ramp is roughly 100–150 distinguishable levels — slightly fewer than 8-bit. So on your monitor, an 8-bit depth map looks smooth. The staircase appears only after a physical process samples the depth. The process has an input resolution of its own:
- Fiber laser engraving: Spot size 0.03–0.1 mm; 50–300 Watts; resolves ~0.01 mm per pass in height. Faster than 8-bit precision on a 3 mm-deep file.
- CO₂ laser engraving on wood: Spot size 0.1–0.2 mm; resolves ~0.05 mm. Marginal — 8-bit works on shallow (under 1 mm) engravings; 16-bit needed above 2 mm.
- CNC bas-relief machining (ball-nose end mill): Resolves ~0.05–0.1 mm depending on bit diameter. 8-bit shows faint terraces on 5 mm reliefs; 16-bit is clean to 20 mm.
- FDM 3D printing: Z-resolution 0.08–0.2 mm (layer height). 8-bit is equivalent to its layer height on prints under 30 mm tall — invisible. 16-bit matters for lithophanes printed at 0.08 mm layer height on bright backlights.
- Resin / MSLA 3D printing: Z-resolution 0.025–0.05 mm. 8-bit terraces visible on anything over 6 mm tall; 16-bit required for lithophanes and jewelry.
The failure mode specific to lasers has a name in the maker community: topography lines. When an 8-bit depth map hits LightBurn's 3D Sliced engine, each 1/255 brightness step becomes one discrete laser pass depth. The laser carves a flat terrace, jumps, carves another — producing visible horizontal contours across what should be a smooth face.
8-bit engraving (256 levels) 16-bit engraving (65,536 levels)
████████████████████ ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
████████████████████ (smooth cheekbone)
████▀▀▀▀▀▀▀▀▀████
████ ████
███ staircase ███
███ terraces ███
██ ██
█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█
Why this isn't just aesthetic
Three practical consequences follow:
- Finishing cost. An 8-bit brass coin takes 20–60 extra minutes of hand polishing to remove terrace lines before photography. A 16-bit coin ships as-engraved.
- Rejection rate. Custom challenge coin orders with visible step contours fail commercial QC and get refunded; makers who deliver clean 16-bit work command 30–50% price premiums.
- Light-transmission reliefs. 3D-printed lithophanes backlit by a bright light source expose every layer transition; 8-bit lithophanes show faint banding at any resolution; 16-bit lithophanes don't.
A 16-bit container is not the same thing as a file that uses every code. On this site, 65535 means 10 mm. The 3 mm lion export therefore peaks at 19661. An 8-bit file stretched into 16-bit still has at most 256 distinct values, and those values fall on multiples of 257.
How to verify your file is really 16-bit
Vendors regularly claim 16-bit while delivering 8-bit-upscaled files (same 256 distinct values, re-encoded into 16-bit container). Three ways to check:
ImageMagick identify -verbose (free, cross-platform):
identify -verbose your-depth-map.png | grep -E "Depth|Statistics|Entropy"
Expected on the raw model PNG, before the millimetre remap:
Depth: 16-bit
Channel statistics:
Gray:
min: 0 (0)
max: 65535 (1)
Expected on the 3 mm manufacturing PNG from this site:
Depth: 16-bit
Channel statistics:
Gray:
min: 0 (0)
max: 19661
A peak below 65535 does not mean the file is fake. It means the relief does not use the full 10 mm scale. A stretched 8-bit file is the one whose values are multiples of 257 and whose distinct count is 256 or fewer.
Python / Pillow (for scripted verification):
from PIL import Image
im = Image.open('your-depth-map.png')
print(im.mode) # should be 'I' or 'I;16'
unique_values = len(set(im.getdata()))
print(f"Distinct brightness values: {unique_values}")
# A genuine 16-bit file from a smooth portrait has >5,000 unique values.
# A fake 16-bit (upscaled from 8-bit) shows <=256.
GIMP visual check: Open the file, Image → Image Properties. Look at Precision. Then File → Export → PNG with "Save color profile" off and re-open — if quantization bands appear on gradient regions, the original was 8-bit.
Tool compatibility matrix
The exported file is useless if downstream software can't ingest 16-bit. Current state of 2026:
| Software | Reads 16-bit PNG | Reads 16-bit TIFF | Reads 32-bit EXR | |---|---|---|---| | LightBurn (3D Sliced mode) | Yes, native | Yes | No | | Carveco Maker | Yes | Yes | No | | ArtCAM / Vectric Aspire | Yes (TIFF preferred) | Yes | No | | Bambu Studio (STL slicer) | n/a — slices the STL | n/a | n/a | | PrusaSlicer | n/a | n/a | n/a | | Lychee Slicer | n/a | n/a | n/a | | Fusion 360 (CAM depth map) | Yes | Yes | Yes | | Blender Displacement | Yes | Yes | Yes, preferred | | ZBrush Alpha brush | Yes (converted to 8-bit internally) | Yes | No | | Photoshop | Yes (opens, limited edit) | Yes | Yes |
The single most important column is LightBurn 3D Sliced. It is the de facto standard for photo-to-laser workflows, and its 3D Sliced engine specifically rewards true 16-bit input. If a vendor's depth-map generator is marketed for laser engraving but outputs 8-bit, they are leaving precision on the table that costs you polishing hours.
When 8-bit is enough
Honesty is cheaper than overselling:
- Web / preview: Always 8-bit. 16-bit PNGs balloon to 2–4× the file size and most browsers down-sample them for display anyway.
- FDM 3D prints under 3 mm total depth: 8-bit terraces are smaller than the slicer's layer height and vanish into the normal print texture.
- Icon / logo / 2D illustration workflows: No physical process reads the depth, so 8-bit is lossless for the viewer.
- Rapid A/B testing of composition: Export 8-bit for the first dozen iterations, re-export the chosen composition at 16-bit for final fabrication.
File-size reality
The 16-bit precision has a cost: file size roughly doubles vs. 8-bit for the same pixel dimensions. On a typical 2048 × 2048 depth map:
- 8-bit PNG: 1.5–3 MB (depends on gradient complexity)
- 16-bit PNG: 3–6 MB
- 16-bit TIFF (uncompressed): ~8 MB
- 32-bit EXR (half-float, zip-compressed): 4–7 MB — same precision ceiling as 16-bit for most makers, slightly smaller than TIFF
For a maker uploading to a laser, the extra 3 MB over the WiFi is unnoticed. For a web preview, downsample to 8-bit at display time.
The summary line
Choose 16-bit when the depth map will drive a physical process that beats 1/256 precision — which is all fiber lasers, all CNC above 2 mm depth, all backlit lithophanes, and all portrait-grade bas-reliefs. Choose 8-bit only for web previews or shallow decorative prints.
Related
- What is bas-relief? — the historical and workflow context
- 16-bit depth map generator — the lion sample, as a 16-bit PNG
- Image to STL Converter — turn the depth map into a printable mesh
- LightBurn 3D Sliced tutorial — fiber-laser parameter tables for brass, aluminum, stainless
- Depth map vs heightmap — the terminology confusion decoded