Kannik
Legend
"Know thy players." As a DM who a) enjoys playing strictly tactical games for fun, and b) runs games for various types of groups, that's been the key for me, to ensure I know the party and the players and to tailor the encounters for them. For those groups who are not into richly layered combats, with intricate tactics and with equally intricately crafted characters, I need to review the party's offensive and defensive capabilities, both from a raw character perspective while also further adjusting based on how well the players will employ them.
I also need to watch out for myself, for I know I have a tendency to "fear" making the encounter too easy and thus boring... which can lead me to ramp things up most unnecessarily.
I also tend to run quite a few premade adventures, so prior to the session I'll compare the opponent's stats to the party's abilities and adjust as needed to find that good balance. (For example, as a baseline I'll aim for the players hitting about 75% of the time, adjusting for 'tankier' or other types of opponents.)
Another trick I use is to ensure every opponent has an ability or two that is really flavourful and unusual (so that they stand out) and that presents a strong tactical advantage (whether that be damage or effects or positioning or whatever). I employ them towards the start of the encounter to bring that flavour to bear and to have the party react. If the characters are doing really well, I may unleash them again, but if the party is struggling I'll hold them off or do a lesser version of them.
And as others have mentioned, playing the opponents with respect to their narrative background is also important, ie, not all of them (unlike us the DM) may be perfect tacticians, or are thinking straight (or at all), or they may have other goals, or be weak in morale, or etc.
As a starting point it might be worthwhile to simply eliminate one or two of the opponents from the premade adventures you're running to see how that effects things. If it seems to right the balance, then it could be the mismatch between DM and player capabilities in the tactical arena (again, not a matter of right/wrong or good/bad, just preferences and experience). From there you could, if you want, start to find the ways to tweak the opponents so that the same number can be in the combat while still providing an appropriate challenge for the party.
I also need to watch out for myself, for I know I have a tendency to "fear" making the encounter too easy and thus boring... which can lead me to ramp things up most unnecessarily.

I also tend to run quite a few premade adventures, so prior to the session I'll compare the opponent's stats to the party's abilities and adjust as needed to find that good balance. (For example, as a baseline I'll aim for the players hitting about 75% of the time, adjusting for 'tankier' or other types of opponents.)
Another trick I use is to ensure every opponent has an ability or two that is really flavourful and unusual (so that they stand out) and that presents a strong tactical advantage (whether that be damage or effects or positioning or whatever). I employ them towards the start of the encounter to bring that flavour to bear and to have the party react. If the characters are doing really well, I may unleash them again, but if the party is struggling I'll hold them off or do a lesser version of them.
And as others have mentioned, playing the opponents with respect to their narrative background is also important, ie, not all of them (unlike us the DM) may be perfect tacticians, or are thinking straight (or at all), or they may have other goals, or be weak in morale, or etc.
As a starting point it might be worthwhile to simply eliminate one or two of the opponents from the premade adventures you're running to see how that effects things. If it seems to right the balance, then it could be the mismatch between DM and player capabilities in the tactical arena (again, not a matter of right/wrong or good/bad, just preferences and experience). From there you could, if you want, start to find the ways to tweak the opponents so that the same number can be in the combat while still providing an appropriate challenge for the party.
