This document describes the Rabin-Karp string matching algorithm. It proposes using hashing to improve on the naive string matching algorithm. The Rabin-Karp algorithm calculates a hash of the pattern string and compares it to the hash of successive substring slices of the text. If the hashes match, it does a character-by-character comparison. This allows it to avoid unnecessary comparisons and achieves an average runtime of O(m+n), improving on the naive algorithm. It also discusses how to mitigate hash collisions.