We consider the problem of constructing codes that can correct \(\delta\) deletions occurring in an arbitrary binary string of length \(n\) bits. Varshamov-Tenengolts (VT) codes are zero-error single deletion \((\delta=1)\) correcting codes, and have an asymptotically optimal redundancy. Finding similar codes for \(\delta \geq 2\) deletions is an open problem. We propose a new family of codes, that we call Guess & Check (GC) codes, that can correct, with high probability, up to \(\delta\) deletions occurring in a binary string. Moreover, we show that GC codes can also correct up to \(\delta\) insertions. GC codes are based on MDS codes and have an asymptotically optimal redundancy that is \(\Theta(\delta \log n)\). We provide deterministic polynomial time encoding and decoding schemes for these codes. We also describe the applications of GC codes to file synchronization.