Three changes cost nothing and usually outperform installing anything.
Compress before uploading. WordPress generates a copy at every registered size from whatever you give it, so one oversized original becomes a dozen oversized derivatives. Around 2000 pixels on the longest edge at quality 80 is right for almost every theme.
Audit your registered image sizes. A default install creates a few; a theme with a page builder can register a dozen, each generated for every upload. Most are never used. Removing them shrinks your uploads directory and speeds up every future upload.
Check what is actually served. Open a page in the browser's network panel and sort by size. It is common to find a CSS background image or a slider bypassing WordPress's responsive sizing entirely — no plugin will fix that.
Do these and a plugin has an easy job. Skip them and it has an impossible one.