Back to home

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.

Lion medallion, 16-bit depth at 3 mm

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:

  1. 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.
  2. 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.
  3. 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