Should I use DontDestroyOnLoad or prefab for player

I am making a 2D Platformer game (my first game). At the end of each level, a “Level Complete” screen appears, where the user can press a button to go to the next level. I use different scenes for each level. My question is, should I use DontDestroyOnLoad for the player when changing scenes or should I have a prefab for the player and a different player object in each scene?

Definitely create a prefab of the character. You will almost certainly need it at some point.

For example, switching with DontDestroyOnLoad might work when the player is starting on level 1, but what if they saved and started up the game on level 3? In that case you would want to instantiate a new player, but then maybe use DontDestroyOnLoad as they progress through levels.