If I have a stl file is there a good way to estimate how long it will take to print on a given printer? I know there are a lot of things that go into print speed, such as the speed of the printer, the size of the print, etc. I was wondering if anyone knows of perhaps an application that you could enter your printer's specifications and the stl that you want to print, and it could calculate the print time?
The duration of a print is affected by the print properties. Speed, nozzle diameter (or line width), layer height, amount of perimeters, infill percentage, combing, support structures to name a few important parameters.
So, the only way to tell how long the printer will be printing a certain STL is by loading the STL file into a slicer and slice the model with those settings. The most common free slicers are Ultimaker Cura, Slic3r and payed slicer Simplify3D. Alternatively, when you already have G-code files and do not have the STL anymore or don't want to slice it again (e.g. because you cannot remember which settings you used), you could upload your G-code here and it will calculate it approximately for you (as it does not know the dynamics of the printer).
Note that these times are approximations of the real time it takes to print the object as it integrates the tool path and speed to get the time. Sometimes these calculations are off as the actual printer may behave differently than projected by the slicer. From experience I can tell that the Ultimaker Cura slicer predicts fairly accurate print times for the Ultimaker 3, so they have tuned their slicer software to their machines. For your own build or other brands this may result in different/inaccurate print time estimations.