What is the difference between STL and OBJ files and which one should I use?
STL is the de facto standard in consumer-grade 3D printing. It is a bare-bone format that describes the shape of the object by defining the coordinates of all the vertices of all triangles that a surface may be subdivided into.
This means that in STL any curved surface is represented with an approximation of many very small faces.
OBJ is also somewhat common, but it was originally developed for computer graphics, not manufacturing, and as such is capaple to store information like the texture images to be applied to the surface, which are of no use in the 3D printing world.
In terms of geometry description, OBJ is more capable than STL, as it can describe "real" curves, without the need to approximate them to a series of polygons. The benefit of this feature is however more theoretic than practical, as:
- most entry-level CAD software don't make use of that feature and create a STL-equivalent OBJ file (so, still with polygons)
- a typical STL model for 3D printing will have enough resolution to give the illusion of perfect curves (the same way a high-res screen gives the illusion of perfect curves, despite its pixels being arranged in a squared matrix),
- the slicer/printer's firmware may themselves approximate an accurate curve to a series of segments
Short said, I would suggest you use STL unless you have a specific reason not to.
If you would find yourself in need to accurately describe curves I would rather use the STEP file format, as that has been specifically created for manufacturing, rather than "borrowed" from computer graphics.
Two important points regarding TinkerCad: - The OBJ file format,...is also gaining traction in the 3D printing industry as the industry moves towards **full color printing**. - STEP also supports "Constructive Solid Geometry" which primarily how TinkerCad works. source: article on All3DP (thanks @tmartin )
@DavidLotts - Mmm... I think you misunderstood slightly either my answer either the article. :) "Constructive Solid Geometry" is how _all_ modern CAD software work and the sentence "the STEP file format has been specifically created for manufacturing" refers to that. OBJ support colour, but let me state it again: it has _not_ been designed for manufacturing and lack flexibility and features. For what I can see all people who have multi-material printers prefer the AMF format (which stands for "Additive Manufacturing Format", so specific for 3D printers).
@DavidLotts - Bottom-line. Feel free to use whatever you prefer, but when it comes to geometry description OBJ does not offer any substantial advantage over other formats that are much more established (like SLT), and when it comes to extra features (materials colours) it falls short over other designed-for-manufacturing standards (like AMF, STEP). :)
I agree with all your points! Mostly my comment was to add color since you did not mention it in your answer. The OP asked about STL or OBJ only. I don't know if Tinkercad can add texture/color information to OBJ -- but if you find a source, it might be a good addition to your already awesomely practical answer.