In a synchronous counter, all flip-flops receive the same clock signal simultaneously. The input of each flip-flop is determined by combinational logic. There is no ripple effect between flip-flops.
D0 = NOT Q0
D1 = Q1 XOR Q0
D2 = Q2 XOR (Q1 AND Q0)
In an asynchronous counter, only the first flip-flop receives the external clock. The output of one flip-flop acts as the clock input of the next flip-flop. This means the changes do not happen simultaneously.