JPG · JPEG → STL · PHOTOS TO PRINTS · FREE · NO UPLOAD
JPG to STL — Photos to Printable Lithophanes
Turn any JPG/JPEG photo into a watertight STL relief or lithophane with live sliders — in the browser, photos never leave the device.
What it does: converts a JPG/JPEG photo into a 3D relief or lithophane STL — black pixels become low, white pixels become high — closed as a watertight solid.
Why you need it: camera photos are already JPEG; at typical relief settings, JPEG compression does not visibly affect the printed surface, so you can go from a phone photo to a lithophane without re-exporting as PNG.
How it works: Canvas reads pixel luminance into a height map; three.js builds the mesh in this tab. Lithophane mode (default) inverts the mapping so dark pixels become thick.
Relief settings
The exported mesh is a closed solid: relief top, flat base and side walls — ready to slice.
Conversion specs
| Input format | JPG / JPEG (also accepts PNG and WebP) |
| Output format | Binary STL — watertight solid, 50 bytes per triangle |
| Height mapping | Pixel luminance → surface height; lithophane inverts (dark = thick) |
| JPEG compression | Does not visibly affect relief at typical detail; high-detail can show artifacts as bumps |
| Typical lithophane | 80–120 mm wide, 2.5–3.5 mm relief, white PLA, 100% infill, printed standing |
| Processing | 100% client-side via Canvas + three.js |
| File size limit | Device RAM only — no server limit |
| Cost | Free, unlimited, no account required |
From photo to lithophane — what actually works
A lithophane is the killer use for a photo: print in translucent filament, view it backlit, and thickness equals darkness. Portraits and high-contrast photos work best. Brightness maps to height; lithophane mode (the default) inverts that so dark pixels become thick. Uncheck it for emboss mode, where bright pixels are raised and the print is viewed front-lit. Defaults are width 100 mm, relief 4 mm, base 1 mm, and about 220 samples along the longer side — all adjustable with live sliders.
JPG compression artifacts and sensor noise become surface bumps at high detail settings. Use a good-quality source, lower the detail slider (fewer samples average more pixels), or slightly blur the photo in any editor first. The tool itself does not denoise.
| Photo types, ranked | Tip |
|---|---|
| Portraits | Great — faces read well backlit. |
| Pets | Great with a contrast boost. |
| Landscapes | Good if the subject is distinct. |
| Night shots & low light | Poor — noise becomes bumps. |
| Screenshots & flat graphics | Use the PNG converter instead. |
For the full relief guide, see image to STL. Logos and graphics convert more cleanly from PNG — use the PNG to STL page. After export, verify the result is watertight.
FAQ
Is my photo uploaded?+
No. Processing is 100% client-side: the browser's canvas API reads the image and the mesh is constructed in this tab. There is no upload endpoint, so personal photos never leave your device — which matters more here than for any other converter on this site.
JPG or PNG — which should I use?+
For photos, JPG is fine — compression artifacts are minor at normal detail settings. For logos and line art, use PNG (lossless, so edges and fills stay clean); see the PNG to STL page on this site.
Why does my print look noisy/bumpy?+
JPG compression artifacts and sensor noise become surface bumps at high detail settings. Use a good-quality source, lower the detail slider (fewer samples average more pixels), or slightly blur the photo in any editor first. The tool itself does not denoise.
What settings make a good lithophane?+
A common recipe: 80–120 mm wide, relief 2.5–3.5 mm, base 0.6–1 mm, white PLA, 100% infill, printed standing vertically. The tool defaults (width 100 mm, relief 4 mm, base 1 mm, ~220 samples along the longer side) are a starting point — drop the relief toward 2.5–3.5 mm for a lithophane.
Does .jpeg work too?+
Yes. .jpg and .jpeg are the same format; the tool accepts both, plus PNG and WebP.
Is the STL watertight?+
Yes, by construction: the top relief, bottom plate and walls share their edge vertices, so every edge belongs to exactly two triangles. Verify any file with the STL repair checker on this site.