what is the difference between Smoke testing and Sanity testing

smoke testing is done to make sure if the build we received from the development team is testable or not.

it is done at build level.

sanity testing is done during the release phase to check for the main functionalities of the application without going deeper.

It is also called as a subset of Regression testing.

It is done at the release level.