It’s up to you. There are trade offs.
I don’t charge for cancellations, no shows, or lessons that I close early due to the student being too tired, or ill to learn.
The downside is that I regularly have unused, unpaid time spots I can’t always fill. I used to bump up the number of slots I’d like to teach. On occasion nobody would cancel and my working day was a little longer than I’d like it to be. So now I take a money hit than an extra time working hit.
The upside is I have a long list students on the waiting list for a spot on my regular schedule. So if a student cancels regularly, last minute or otherwise, I can drop them and open the time slot to the next on the list. It’s created a sense of scarcity, so parents don’t tend to cancel unless they really have to. I’m generally flexible, so if a family is going through a hard time I’ll keep the slot for them and absorb the cost. I find that helps when the roles are reversed and I’m the one who needs understanding when life rain happens.
I know people who operate the other way around, with strict no show/late cancellation policies and they are far happier with that set up than they would be with mine.
Work out which trade offs suit you better and go with a clearly defined system that won’t leave you feeling out of sorts. We are all different and the system which creates a sunnier landscape for you personally to work within is the one you should pick. Because it has to work for you in the long term, not just for the here and now.