3D printing · No upload
Make a lithophane STL from a photo on your device
Turn a photo into a binary STL where dark parts of the picture are thicker and light parts thinner.
Each rung samples an input brightness and shows its rounded model thickness and the light the model predicts through it, relative to the minimum thickness you set. The ladder shows at most twelve rungs; rows can repeat thickness levels or skip others, so it is not a list of every distinct level.
A binary STL from luminance alone: colour is discarded and a transparent region reads as black. Refused by name: under 16 pixels on a side or an image the browser cannot decode; fewer than 2 grey levels by the thickness-step count or over 2,200,000 triangles with Build withheld. One photo at a time. Takes .jpg, .jpeg, .png and .webp.
How this lithophane maker works
Your browser decodes the picture and scales it to the mesh grid with its high-quality image filter, and each sample is read as a Rec. 709 luma value. Colour is discarded, because a lithophane carries its picture in thickness alone. Dark samples become thicker material and light samples thinner material, and the picture appears when light shines through the plate from behind.
Each sample becomes one grid vertex, with its thickness rounded to a multiple of the layer height you entered. A flat plate gets a front surface, walls around its border and a back fanned from one corner across the same border ring, which gives each edge two adjoining triangles. A curved plate is a half cylinder with a second full surface for its back, so it needs nearly twice as many triangles; the readout shows the count before you build. For a curved plate, the width you enter is the outer arc length, and the height still follows the photo’s aspect ratio. Triangles are written straight into the binary STL as they are generated, so even a two-million-triangle mesh does not need an intermediate triangle array.
Detail sets the number of mesh cells across, capped at the photo’s pixel width. A grid of nx by ny cells uses (nx+1) by (ny+1) sampled vertices, so that cap is not a promise of no upsampling. The step count comes from the thickness range and layer height before rounding; rounding can change how many thickness levels are available, and a photo may use fewer. The minimum and maximum are bounds before rounding, so a rounded thickness can fall outside them, and the ladder’s light figures are relative to the minimum you set, which need not be the thinnest part of the model. Those figures come from an attenuation model for white PLA, so they show the shape of the modelled tone curve; actual banding and contrast depend on your material, print settings and backlight. Sampling finer than the nozzle is flagged because the printer may not reproduce that detail. The page does not simulate your slicer, bed adhesion or light source, so a good preview can still print badly.