How to add a surface texture to an STL
- 1
Drop your model
STL, OBJ or 3MF, read on your device and never uploaded. No model at hand? Try the 20 mm cube or the cylinder.
- 2
Pick a pattern and projection
Choose a built-in pattern or upload a black and white height image. Triplanar fits most shapes; use cylindrical for knobs, handles and vases.
- 3
Set depth and size, then download
Watch the live preview, keep the top and bottom flat if the part sits on the bed, and download the textured model as STL or 3MF.
What each setting does
| Setting | What it does | Good start |
|---|---|---|
| Depth | How far the surface moves, in mm. Positive raises the pattern, negative engraves it into the part. | 0.4 to 0.8 mm for FDM with a 0.4 mm nozzle |
| Size | The size of one feature: one diamond of knurl, one hexagon, one brick, or one whole image tile. | The default of each pattern |
| Rotation | Turns the pattern on the surface, for example to angle knurl or run wood grain sideways. | 0 degrees |
| Projection | How the flat pattern is laid onto the 3D shape: triplanar, cylindrical, spherical or planar. | Triplanar, or cylindrical for round parts |
| Detail | How small the triangles get. Fine is sharper but makes more triangles; Draft is quicker. | Normal |
| Skip top / bottom | Faces within the angle of flat are left untouched, so the part sits flat on the bed. | Both on, 20 degrees |
Real texture vs fuzzy skin
Fuzzy skin in the slicer jitters the nozzle at random as it prints the outer wall. It is quick, but it only works on walls, the look is random noise, and it is hard to control. A surface texture changes the model itself: the pattern is in the STL, so you choose exactly what it looks like, how deep it is and where it goes, and every slicer prints it the same way.
Use it for grip on knobs, handles and tool parts (knurl, carbon weave), to hide layer lines on vases and covers (wood grain, leather, fine grain), or to make a plain model look finished (hexagons, bricks, stone). Upload your own height image for a logo, a pattern from a photo, or anything else: light areas rise, dark areas stay low.
How it works, and what to expect
The tool first joins the triangles of your file into one connected surface. Then it splits every triangle edge that is longer than a small share of one pattern feature (a third of it or less), again and again, until the surface is fine enough to carry the pattern. Each point then moves along the surface direction by the height of the pattern at that spot, times your depth. Shared points move once, so a watertight model stays watertight, and the page checks every edge and tells you.
Small features on a big part need many triangles. The tool stops at 2 million triangles on a computer and 600,000 on a phone, and says so when it hits the limit; make the Size bigger or pick Draft if that happens. Very deep engraving on thin walls can break through, so keep the depth under half the wall thickness. The code was written for this page and runs in a background thread in your browser.
Make it, texture it, colour it
Start from an image, add a printable texture here, or paint it in colour with AI. The guide texture an STL for 3D printing covers the colour route.
AI 3D texturing
Want colour instead of bumps? Paint your model with AI textures from a text prompt or an image.
Image to STL
Turn a picture or a logo into a 3D printable STL, then texture it here.
Normal and height map generator
Make a height map from a photo of a real surface, then upload it here as your own pattern.
STL repair
Close holes and fix broken edges first, so the textured file comes out watertight.