We present two types of algorithms that practically solve S-unit and Mordell equations. The first type builds on Cremona's algorithm, and the second one combines explicit height bounds with enumeration algorithms. In particular we refine de Weger's sieve for S-unit equations and solve a large class of such. Additionally our new results on Mordell's equation implies an improved version of a theorem of Coates on the difference of coprime squares and cubes. Our results and algorithms crucially rely on a method of Faltings (Arakelov, Parsin, Szpiro) combined with the Shimura-Taniyama conjecture, and they do not use the theory of logarithmic forms.