TL;DR: An STL to OBJ conversion swaps the container and leaves the contents alone. Both formats store a bag of triangles, so what comes out has the same geometry and the same holes. OBJ is capable of carrying color. A file converted from STL arrives without any, because there was none in the STL to carry. Below: what OBJ adds, why the color question keeps coming up, and where to send the model if color is the actual goal.
What does an STL to OBJ conversion actually change?
An STL to OBJ conversion changes the file format and nothing about the model. STL stores a flat list of triangles, each with three corners and a normal, and defines no units, no materials, no color and no object names. OBJ stores the same mesh as plain text, and it can additionally reference texture coordinates, named groups, and a companion .mtl material file. Converting fills the geometry half and leaves the rest blank, because the source had nothing to put there. The mesh is identical, down to the errors.
Two differences do show up in practice. The first is size, and it goes the way people do not expect: OBJ is ASCII, and a binary STL is not, so the converted file is typically two to four times larger on disk for the same triangles. The second is that OBJ can name things. A model split into a body, a lid and a handle keeps those names through o and g statements, where STL flattens the lot into one anonymous soup. The full field list is in the original Wavefront OBJ specification, which is short enough to read in ten minutes.
Why an STL to OBJ conversion still leaves you with no color
This is the question underneath most searches for it. Someone has a grey model, knows OBJ is the format with materials in it, and expects the conversion to open a door.
OBJ holds color two ways. It can store UV coordinates and point at a .mtl file that names a texture image, or it can append red, green and blue values to each vertex line. Neither one survives a trip through STL, because STL never had a field to hold them. If the model started life as a textured OBJ and someone converted it down to STL along the way, that color is gone for good and no amount of converting back retrieves it.
There is a second trap for anyone heading toward a printer. Even a textured OBJ with a proper .mtl does not print in color. Slicers assign filament per region, not per pixel, so an image texture has to be reduced to a small set of flat areas before it means anything to an AMS or an MMU. That reduction is a separate job, and the conversion does not do it.
Which format should the file end up in?
Pick by where the model is going next, not by which format sounds richer. Convert STL to OBJ when the mesh is heading into Blender, MeshLab or a game engine, where object names, groups and UVs are worth having. Convert to 3MF when it is heading into Bambu Studio, OrcaSlicer or PrusaSlicer, because 3MF is the only one of the three that stores per-triangle color the slicer will print. Leave it as STL when a model site or an older mesh tool refuses anything else. The conversion improves nothing on its own, so the only sensible criterion is what the next program reads.
The comparison is worth having straight before you pick, and 3MF versus STL lays out what each format records. The short version: STL is geometry and nothing else, OBJ is geometry plus a hook for materials, and 3MF is geometry plus color, units and print metadata in a zipped package. Color groups live in the Materials Extension of the 3MF specification.
How to convert STL to OBJ without uploading the file
Most conversion sites take your file to a server. If the model is client work or an unreleased design, that is a decision worth making on purpose rather than by default.
The Layerpaint model converter runs in the browser tab. Drop an STL on it, pick OBJ, download the result. The file never leaves the machine. It handles STL, OBJ, 3MF and GLB in any direction, and when the source does carry color, the OBJ it writes appends the color to each vertex line as v x y z r g b, which Blender and MeshLab both read natively. It writes no .mtl file, because per-vertex color does not need one.
If the mesh needs changes rather than a format swap, that is a different tool. Editing an STL without CAD covers scaling, cutting and simplifying a model you did not draw.
If color is the reason for the STL to OBJ conversion
Then the format was never the obstacle. Load the STL into Layerpaint, paint the regions you want, and export a Standard 3MF. Magic Fill floods a whole connected region with the active color in one click, so a fox gets its ears in one color and its chest in another without any selection work. The slicer reads the color groups on open and you assign each one to an AMS or MMU slot. Bambu Lab's multi-color printing documentation covers that end.
Two details save a reprint. The order you add chips to the palette is the slot order the slicer sees, so add them in the order you plan to load spools. And Match to filaments rewrites every chip to the nearest real filament in the library, which stops you from designing around a color nobody sells.
Common questions
Is the OBJ smaller than the STL it came from?
No, larger. OBJ writes coordinates as readable text where binary STL packs them into fixed-width floats, and the triangles from an STL arrive with their corners unshared, so nothing gets deduplicated on the way over. Expect two to four times the bytes.
Can I convert OBJ back to STL without losing the mesh?
The geometry survives intact. Everything else does not: materials, textures, vertex colors, group names and UVs are all dropped, because STL has no field for any of them. Keep the OBJ if you might need those later.
Will an OBJ print in color?
Not by itself. Slicers assign filament to regions, and an OBJ texture is an image, not a region map. For a multi-filament printer the file that works is a 3MF with color groups, which is what the painter exports.
Why does my converted OBJ look untextured in Blender?
Because there is nothing to show. If the file came through STL, no UVs and no material reference exist, and Blender falls back to the default grey. The converter is telling you the truth about the source file. Nothing went wrong.
Try it now
Convert the file in the converter, or drop the STL straight into the painter and color it first. No account, no install, nothing uploaded. Your first export is free, then $6.97 for ten or $39.97 for unlimited.