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.