SNES dumps picked up a habit from copiers: a 512-byte header stuck on the front of the file. A headered image is often named .smc. A headerless image is often named .sfc. The names are conventions, not a guarantee, so I check the file size modulo 1024. A remainder of 512 is a common copier-header heuristic; compare the author’s required size and hash before removing bytes. Those 512 bytes change every checksum. A BPS built on a headerless file will say the source does not match if you feed it the copier version, even when the game bytes are the same.
The browser engine has a remove-header control for this. I use it only when the readme says the patch expects a headerless file and my dump has the extra 512. Removing it writes a different file. Adding it back later is a separate choice. Super Mario World hacks and a lot of modern SNES work standardized on BPS for the checksum. Older translations are still IPS, and IPS will apply to the wrong header state without complaining. That is the case where the header check is on you.
SMC versus SFC arguments online are really this header argument. I do not pick a side in the filename. I pick the file the patch hashed. Floating IPS is what many authors used to create the BPS. The browser applies it. For a Mario World project, match the header state and checksum named in that project’s release notes.
Emulators such as bsnes, Snes9x, and Mesen accept either layout once it matches the patch. Related pages: BPS, IPS, and the formats index if you are not sure which extension you downloaded.