1. A method comprising the steps of: receiving a hash level indicating a particular depth in a first document and a second document, wherein: the first document comprises a first plurality of nodes, wherein one or more nodes of the first plurality of nodes are at a depth that is greater than the particular depth; and the second document comprises a second plurality of nodes, wherein one or more nodes of the second plurality of nodes are at a depth that is greater than the particular depth; based on the hash level, identifying a first subset, of the first plurality of nodes, that do not include any nodes, in the first plurality of nodes, that are at a depth that is greater than the particular depth, wherein the first subset includes at least two nodes that are at the same depth; based on the hash level, identifying a second subset, of the second plurality of nodes, that do not include any nodes, in the second plurality of nodes, that are at a depth that is greater than the particular depth, wherein the second subset includes at least two nodes that are at the same depth; for each node included in the first and second subsets, computing a hash value based on said each node and one or more descendants of said each node; performing a plurality of comparisons between hash values of different nodes that are only in the first and second subsets; based on the plurality of comparisons, generating an edit script; wherein the method is performed by one or more computing devices.