As far as i know Ripple counter may require maximum decoding ckt.
A johnson counter divides the clk by the factor of 2N where N is no. Of ff required.
A ring counter can also be worked out be a simple shift register. And work synchronously.
A ripple counter however requires maximum propagation delay for counting therefore increasing the number of ckt for every count exceeded.