Techniques are provided for dynamic snapshot scheduling. In an example, a dynamic snapshot scheduler can analyze historical data about storage system resources. The dynamic snapshot scheduler can use this historical data to predict how the storage system resources will be used in the future. Based on this prediction, the dynamic snapshot scheduler can schedule snapshot activities for one or more times that are relatively unlikely to experience system resource contention. The dynamic snapshot scheduler can then initiate snapshot activities at those scheduled times.