Smol for WordPress site owners

Optimize Images for WordPress Without a Plugin on a Mac

Your WordPress images are slow because the files you upload are bigger than the space they fill. Smol resizes and compresses them on your Mac first, as WebP or JPEG, strips camera metadata, and gets them under your host’s upload limit, so you can optimize images for WordPress without a plugin and without uploading anything anywhere else.
  • Resize a folder of photos to your content width in one drop
  • Output WebP or JPEG at a quality you choose
  • Get files under your host’s upload limit before uploading
  • Camera metadata, including GPS, is stripped by default

$29 once per Mac · No subscription · Files never leave your Mac

Smol’s main window in dark and light appearance with an image, a PDF and a video queued and a Compress 3 Files button
By the Smol team9 min read

To optimize images for WordPress without a plugin, shrink them before they reach the Media Library: resize each photo to the widest width it will actually display, compress it as WebP or JPEG, and upload the result. That handles slow pages and upload errors together. The table maps each problem to the Smol setting.

What you are seeing in WordPress, why, and the Smol setting that fixes it
What you are seeingThe limit you hitThe Smol setting
Pages load slowly and the images are the heaviest partFiles far larger than their on-screen size; WordPress itself only rescales above 2560 pxCompress, maximum dimension at your content width (2000 as a start), quality 75
“Exceeds the maximum upload size for this site”The host’s limit, shown on the Media screen; PHP’s own default is 2MSame pass: resize first, then check the largest output against the limit
You want WebP but your camera or phone gives JPEG or HEICWordPress accepts WebP from 5.8 if the server supports itCompress with output format WebP (not Convert)
Hundreds of old uploads are heavyReplacing them one at a time is slowDrop the downloaded folder in as one batch

What is the best WordPress image size?

The best WordPress image size is the widest width the image displays at, not the width your camera produced. A 4000 px photo in an 800 px column carries 25 times the pixels of the space it fills, because the ratio is 5 on each side. Match the file to the layout.

WordPress rescales less than you might expect. Since version 5.3 it scales an upload down when either side passes 2560 pixels, keeps the original in the uploads folder, and exposes a big_image_size_threshold filter to change the number, according to the core team’s announcement. A 2400 px photo passes through untouched. WordPress then makes smaller copies for the thumbnail, medium and large sizes you can set under Settings, Media (the Media settings screen explains the fields), but those copies come from whatever you uploaded.

As a target, WordPress’s own image size and quality guide says large, high-quality images should be kept between 100K and 60K, and smaller ones nearer 30K and lower. That is an old rule of thumb, and a full-width hero will not fit it at 2000 px, but it shows the order of magnitude a page can afford.

Pixel width for common layouts

Start from the container. For a 1200 px content column, 2000 px covers a 1.5 times density screen with room to spare; for a 700 px blog column, 1400 px covers 2 times density. These are starting points of ours, not a WordPress rule. Check the result in your theme.

Why are my WordPress images slow?

WordPress images are slow when the files are oversized, in a heavy format, or loaded at the wrong time. The first two you fix before upload. The third is a template question: Google’s web.dev study of lazy loading reports that 84% of sites using browser-level image lazy loading run WordPress. In its lab test of a demo WordPress site, disabling lazy loading on archive pages cut desktop LCP from 2,029 ms to 1,759 ms.

  • Oversized pixels. Camera and phone files often carry far more pixels than a blog column can show.
  • Heavy format. PNG for photographs, or JPEG at very high quality, when WebP would do.
  • Wrong loading. The top image should load at once; lazy loading belongs below the fold. Your theme or an editor setting decides that, not the file.

If you manage sites for clients, the web agency workflow covers the same steps at volume, and blog image optimization covers post images. For measurements across a page, see our write-up on image optimization for Core Web Vitals and the web developer guide. For the file side, the numbers on the benchmark page show what a local pass saves.

What is the WordPress max upload size, and how do I stay under it?

The limit on your site comes from your host. It appears on the Media upload screen, which the Media Add New documentation describes as the maximum upload size “as set by your hosting provider”.

PHP’s built-in defaults are small: per the PHP manual, upload_max_filesize is 2M and post_max_size is 8M, and post_max_size must be larger than upload_max_filesize for big uploads to work. Your host may have changed both, so read your own number rather than assuming.

Limits that decide whether an upload works, each with its source
LimitFigureWhere it comes fromSource
WordPress scales images down above2560 px on either sideCore, adjustable by filterCore blog
PHP upload_max_filesize default2MPHP, then your hostPHP manual
PHP post_max_size default8MPHP, then your hostPHP manual
WebP uploads accepted fromWordPress 5.8Needs server supportCore blog
AVIF uploads accepted fromWordPress 6.5Needs server supportCore blog
Your site’s upload capShown on the Media screenYour hosting providerMedia screen docs

Resize before you compress, since pixels cost the most bytes. Smol sets quality and pixel size, not a file size, so it cannot promise a file lands under your cap. Run the batch, sort the output by size, and compare the largest file to the number on your Media screen.

Can I use WebP in WordPress, and what changes?

Yes. WordPress has accepted WebP uploads since version 5.8, provided your server supports it; the announcement warns that an unsupported server shows an error when you try to upload one.

The detail that matters: by default WordPress makes its smaller copies in the same type as the file you uploaded. Upload a JPEG and the thumbnails are JPEG. Upload a WebP and they are WebP. So the format you choose before upload is the format your visitors get, and doing the conversion on your Mac is how you get WebP on a stock install. AVIF follows the same logic from 6.5, again only where the host supports it (6.5 notes).

If your audience is wide and your theme is old, JPEG at 75 is the conservative choice. On 24 small test photos, compressing JPEG to JPEG at quality 75 made them 69.3% smaller, and compressing PNG to AVIF at quality 65 saved 92.1% (benchmark data). Those images are 768 × 512 film photographs, so treat the figures as a direction, not a promise for your camera files.

Which Smol settings should I use for WordPress?

Use Compress with output WebP or JPG, quality 75, and a maximum dimension equal to your content width. Smol resizes images to fit inside 2000 × 2000 pixels unless you change it, which already sits under WordPress’s 2560 px threshold.

Starting settings by image type (quality numbers are our starting points, not measured thresholds)
ImageOutput formatQualityMaximum dimension
Blog post photoWebP (JPG if your theme is old)75 (the default)1400 to 2000
Full-width heroWebP75, raise to 80 for smooth gradients2000, or up to 2560 if you need it
Product photo with fine detailWebP802000
Screenshot or graphic with textPNG or WebP; compare both75, check that text stays sharpActual display width
iPhone HEIC shotsJPG or WebP, using Compress752000
Photos with GPS you do not want publicAnyMetadata stripping is on by defaultVerify one output

Leave the resize mode on fit. The other modes can crop. One run makes one size, so if your theme needs a 400 px version and a 2000 px version of the same photo, those are two runs with renaming in between. WordPress builds its own thumbnails, so for most sites one run per batch is enough.

How do I optimize images for WordPress without a plugin, step by step?

  1. Collect the originals in one folder

    Smol writes copies with a _compressed suffix and does not overwrite originals by default.

  2. Drag the folder into Smol

    Folders are accepted, and a batch can mix file types.

  3. Choose Compress and set WebP or JPG at quality 75

    Then set the maximum dimension from the settings table, resize mode fit.

  4. Run it and read the per-file sizes

    Smol shows each file’s savings. Check the largest output against the upload limit on your Media screen.

  5. Upload through the Media Library

    Upload the compressed copies. WordPress then makes its thumbnail, medium and large versions from them.

  6. Add alt text and check the page

    Open the page in a private window and look at the network panel to confirm the image bytes dropped.

Smol’s completion screen after a batch: 128 files complete, 2.4 GB before, 310 MB after, 87% saved, 2 minutes 41 seconds elapsed
The completion screen after a batch: total size before and after, the share saved, and the time it took.

What about images already in my library?

Download the uploads folder by SFTP, run it through Smol as one batch, and keep a backup of the originals. By default the output gets a new name, so change the output naming in settings if your posts link to the old filenames. Upload through the Media screen so WordPress makes its own smaller copies. Test on a handful first. Smol’s watched folders suit a folder of fresh screenshots, not a library that is already optimized.

What do site owners use to shrink WordPress images today?

Free and built-in options come first, and several are good enough for a small site.

Ways to shrink WordPress images, compared
OptionCostWhere it runsGood forLimitation
Preview export on MacFree, built inYour MacA few photosOne at a time; manual quality slider
sips in TerminalFree, built inYour MacFast resizing in a scriptCommand line only; no batch progress or per-file savings view
Squoosh and similar web toolsFreeYour browserComparing formats by eyeManual, image by image; see the comparison for maintenance status
TinyPNG-style online compressorsCheck their pricingTheir serversQuick one-offsYour files are uploaded to a third party
A WordPress optimization pluginVariesYour serverAutomatic on uploadAdds the plugin you set out to avoid
SmolSolo $29 onceYour MacBatches, folders, WebP, strip metadataMac only; manual step before upload

If you want lossless-only shrinking with no quality change, see our ImageOptim comparison. For the broader web workflow, the compress images for web page covers the settings in more depth.

When is Smol the wrong tool for WordPress images?

Smol is a Mac app that works before upload. It is the wrong choice in these cases:

  • Many authors upload from many devices. A pre-upload step depends on each person doing it. A server-side tool or the Smol API fits better. If you build sites for clients, see the agency page.
  • You are not on a Mac. Smol runs on macOS 13 or later (Apple Silicon) or macOS 14 or later (Intel).
  • You need SVG. Smol does not handle SVG, which is common for logos.
  • You need pixel-identical, lossless optimization. Smol always re-encodes images; ImageOptim is the lossless route.
  • You need several responsive widths per image in one run. Smol makes one size per run. WordPress already builds its own set from your upload.

Frequently asked questions

How do I optimize images for WordPress without a plugin?

Resize and compress the images on your computer before you upload them. Set the width to the widest the image displays, save as WebP or JPEG at a moderate quality, and check the file is under your upload limit. In Smol, drag a folder in, choose Compress, set the format and maximum dimension, then upload the copies through the Media Library.

What is the best WordPress image size?

Match the width of the space the image fills, with some allowance for high-density screens. WordPress only scales an upload down automatically when a side passes 2560 pixels, so a 4000 pixel photo in an 800 pixel column goes through untouched. Smol’s default maximum of 2000 pixels is a workable ceiling for a typical content column.

What is the WordPress max upload size?

It is set by your hosting provider, and the Media upload screen shows it. PHP’s defaults are 2M for upload_max_filesize and 8M for post_max_size, and hosts often change them. Resize first, then compress, then compare your largest file with the number on your screen. Smol sets quality and pixels, not a byte target, so check the result.

Does WordPress support WebP?

Yes, since version 5.8, if your server supports it. An unsupported server shows an error on upload. WordPress makes its smaller copies in the same type as the upload, so a WebP stays WebP. In Smol, use Compress with output format WebP so your quality setting applies; Convert does not use it.

Why are my WordPress images slow even though I compressed them?

Compression is only part of it. Check pixel width, since a compressed 4000 pixel image is still large, and check whether your top image is lazy-loaded. In a web.dev lab test of a demo WordPress site, lazy loading on archive pages raised desktop LCP from 1,759 ms to 2,029 ms. Load the first image at once and lazy-load the rest.

Will compressing remove GPS data from my photos?

Smol strips image metadata by default, including EXIF, GPS, IPTC and XMP, and that includes copyright and contact fields. You can switch it off if you want to keep them. Check one output in Preview’s Inspector before you publish. Photos taken on a phone can carry location unless it is removed.

Keep reading

Smol for other teams