Can't reduce size of compiled firmware less than 16.3MB

I've recently bought a second-hand TP-Link Archer C7 v2 for a friend as their ISP router can't handle DNAT and SNAT firewall so I recommended them OpenWrt as it has lots of other benefits too. This router has all the requirements needed to run a basic OpenWrt router and I've successfully installed the official OpenWrt image and works perfectly fine.

I'm now trying to compile my own firmware like I do with my Linksys router routers for it but as this device only has a 16MB flash partition I'm seriously struggling create a firmware image less than 16.3MB.

I've tried everything to reduce the image including this and each time the resulting factory .bin file is 16.3MB.

Any ideas?

The stock openwrt images are about the same size....
It might be the image have to fill the whole flash space, for it to write properly.

Windows reports them as 15.6MB. What actually happens if I flash a larger image than the flash partition is?

I've taken the config.buildinfo file found here, renamed it to .config and tried compiling the image so that it's exactly the same but I currently get errors.

That's not a good idea ,)

If you want to play it safe, use the stable image provided by openwrt.

http://downloads.openwrt.org/releases/19.07.6/targets/ath79/generic/

All v2 factory images are 15872.0 KB, yours should be too.

If all goes well, OpenWrt checks the image sizes. It will not produce any images if their size exceeds the maximum size specified. That means you virtually cannot flash an image that's too big for your flash. So as long as OpenWrt produces images, I wouldn't worry about them being too big.

The only thing that could happen is that you flash an image that's so big that there's not enough flash left to create the writeable partition that keeps your settings (and extra packages if you choose to install them after flashing the firmware). In that case you'll need to strip packages from your image.