Often, configuring a scratch org so that it’s ready to use as a development and testing environment isn’t a trivial process. It can require a combination of pushing source to a scratch org, seeding it with sample data, installing a package or two, and then performing manual configuration and setup directly in the scratch org.
And then, poof, it expires, and you have to start all over again.
Enter the scratch org snapshot! Cue the super hero music.
A scratch org snapshot captures the state of a scratch org so that you can use it as a starting point to create other scratch orgs.