The hold time (th) is how long after a clock edge a flip flop's data input must stay steady.
Why it exists: the edge starts the capture, but the flip-flop's internal gates need a moment to lock the new value in. If D changes too soon after the edge, the new D can leak in and corrupt what was just captured.
Hold time pairs with setup time, the time D must be steady before the edge. Together they define a window around the edge: from (edge − tsu) to (edge + th), D must not change. Breaking it can cause a wrong value or metastability.
Hold time is the subtle one. A setup problem can be fixed by slowing the clock, but a hold problem cannot, because it depends on how quickly the next value arrives after the same edge, not on the clock period. If one flip-flop feeds another through very little logic, the new value can race through and arrive within the hold window. The timing topic's hold constraint checks for this.
Some flip-flops have a hold time of zero or even a negative value, meaning D may change right at the edge.