STL is the format nearly every 3D printer slicer expects — a deliberately minimal representation storing just a model's surface as a mesh of triangles, with no color, material, texture, or scene information at all. OBJ, by contrast, is a richer general-purpose 3D format that can carry materials and texture coordinates alongside geometry. This tool strips an OBJ model down to pure triangle geometry and re-packages it as STL, which is exactly what slicing software (Cura, PrusaSlicer, Bambu Studio, and similar) needs to generate print instructions.
The conversion runs through three.js, the standard JavaScript 3D library: OBJLoader parses your OBJ's vertex and face data into a scene graph, and STLExporter walks that geometry and writes out STL's triangle-list format. Because STL has no concept of materials or textures, anything beyond raw geometry in your source OBJ — colors, UV-mapped textures, named materials from an accompanying .mtl file — is intentionally dropped; only the shape survives, which is the correct and expected behavior for a format whose entire purpose is describing a solid for manufacturing.
Output is generated as binary STL by default, which is more compact than ASCII STL and is universally accepted by every modern slicer, though the underlying geometry is identical either way.
Need to go the other direction and get an editable OBJ back from an STL? Use STL to OBJ.