Start Free
Loading article…
WordPress Tips

How to Reduce WordPress Backup Size Without Backing Up Less

13 min read

If your backups take hours, fail halfway or fill your remote storage, you can almost always reduce WordPress backup size without backing up any less of what matters. Most oversized backups are carrying things that never needed to be there: old backup archives, cache files, log files and years of database clutter, plus a media library that could live somewhere safer.

This guide shows you how to find out what is actually inside your backups, what to exclude in UpdraftPlus, Duplicator and All-in-One WP Migration, how to clean the database, how offloading media changes the picture, and how to protect the files you move to the cloud. It ends with a worked example and a restore test, because a small backup is only useful if it restores.


Why WordPress Backups Balloon

A WordPress backup has two parts: the files (mostly wp-content) and the database. Either can grow far beyond what the site needs to run.

The usual suspects

CulpritWhere it livesWhy it grows
Media uploadswp-content/uploadsEvery image plus several thumbnail sizes, PDFs, audio and video
Old backupsFolders such as wp-content/updraft or wp-content/ai1wm-backupsLocal archives kept on the server, then backed up again by the next run
Cache filesOften wp-content/cachePage and minified asset caches that are rebuilt automatically
Log fileswp-content/debug.log and plugin log foldersDebug logs left switched on for months
Post revisionsDatabaseWordPress keeps every saved revision unless you limit it
TransientsDatabase options tableExpired temporary data that is not always cleaned up promptly
Spam and trashDatabaseSpam comments and trashed posts waiting to be emptied

The backup-inside-a-backup problem

The worst case is a backup plugin storing its archives inside wp-content, and another tool (or the host) backing up that folder. Each new backup then contains every previous backup. Size grows with every run, not with the site.

All-in-One WP Migration, for example, stores its backups in wp-content/ai1wm-backups, according to the ServMask user guide. If a second backup tool includes that folder, you are paying to store the same data twice.

Key point: the uploads folder is usually the largest single part of a WordPress backup, and old backup archives are usually the most wasteful. Tackle those two first.

Measure Before You Cut

Guessing leads to excluding the wrong things. Spend ten minutes measuring and you will know exactly where the space goes.

Measure the files over SSH

  • du -sh wp-content/* | sort -h ranks the top-level folders in wp-content by size.
  • du -sh wp-content/uploads/* | sort -h shows which years of uploads are largest.
  • find wp-content -name "*.zip" -size +50M finds large archives hiding in plugin folders.
  • find wp-content -name "*.log" -size +10M finds oversized log files.

Measure the database with WP-CLI

  • wp db size --human-readable shows the total database size.
  • wp db size --tables lists each table, so you can spot a bloated options, postmeta or plugin log table.

Both commands are documented in the WP-CLI db size reference. No SSH? Most hosts show folder sizes in their file manager, and phpMyAdmin shows table sizes.

Write it down

ItemSize todayNeeded in backup?Action
uploads…Yes, somewhereOffload or keep
Backup archive folders…NoExclude and move off-server
cache…NoExclude
Logs…NoExclude, rotate or delete
Database…YesClean, then keep

Files and Folders You Can Safely Exclude

Anything WordPress or a plugin can rebuild automatically does not belong in a backup. Anything you cannot recreate does.

Usually safe to exclude

  • Other backup archives: folders such as updraft, ai1wm-backups or any folder of .zip, .wpress or .tar archives.
  • Cache folders: page caches and minified CSS and JavaScript, typically under wp-content/cache.
  • Log files: debug.log and plugin log folders. WordPress writes the debug log to wp-content/debug.log by default when WP_DEBUG_LOG is on, per the WordPress debugging guide.
  • Upgrade leftovers: the wp-content/upgrade folder holds temporary files during updates.
  • Development folders: node_modules or .git folders accidentally deployed inside a theme.

Never exclude

  • The database.
  • wp-config.php, if your tool backs up the site root.
  • Custom themes and child themes you have edited.
  • Must-use plugins in wp-content/mu-plugins.
  • Media uploads, unless they are already stored and protected somewhere else.

Probably exclude, with care

Premium plugins and themes can be downloaded again, but only if your licence is active and you know the exact version. If you exclude them to save space, keep a list of versions and licence keys with your backups.

Shrink the Database

The database is usually smaller than the uploads folder, but it is backed up more often, so every megabyte counts. Clean it before you tune your backup plugin.

reduce WordPress backup size: Retention defaults worth knowing
Retention defaults worth knowing

Limit post revisions

WordPress keeps revisions indefinitely by default. The wp-config.php documentation shows how to cap them:

  • define( 'WP_POST_REVISIONS', 3 ); keeps only the last three revisions of each post.
  • define( 'WP_POST_REVISIONS', false ); turns revisions off entirely (not usually recommended).

This only limits future revisions. Existing ones stay until you delete them with a database cleanup plugin or WP-CLI.

With WP-CLI, wp post list --post_type=revision --format=count tells you how many revisions you have. If the number is large and you have a fresh backup, wp post delete $(wp post list --post_type=revision --format=ids) --force removes them in one go. Run it on staging first on a big site, because a very long list of IDs can be slow.

Clear expired transients

Transients are temporary cached values, stored in the options table unless an object cache is in use. The Transients API documentation notes they can be removed at any time, so deleting them is safe. With WP-CLI, wp transient delete --expired removes expired ones.

Empty spam and trash

  • Delete spam comments in bulk from the Comments screen.
  • WordPress empties trash after 30 days by default, set by EMPTY_TRASH_DAYS. A shorter value keeps the database leaner.

Check plugin tables

Security, analytics, redirect and form plugins often keep logs in their own tables. wp db size --tables will show them. Many have a setting to limit how long logs are kept; use it rather than deleting tables by hand.

Key point: always take a backup before cleaning the database, and test the site afterwards. Cleanup tools delete data permanently.

How to Exclude Folders in Popular Backup Plugins

Each backup plugin handles exclusions differently. These are the options documented by the vendors, checked September 2026.

UpdraftPlus

In UpdraftPlus settings, the Include in files backup section lets you untick whole groups, such as plugins, themes, uploads or other folders in wp-content. Each group has an exclusion box, and the UpdraftPlus exclusion FAQ documents these rules:

  • Separate entries with commas and no spaces.
  • Use a wildcard at the start or end, for example backup*.
  • Exclude by extension with ext:mp4,ext:zip, or by filename prefix with prefix:abc.
  • Place an empty file named .donotbackup in any folder to exclude it and its subfolders.
  • Developers can use the updraftplus_exclude_directory and updraftplus_exclude_file filters.

UpdraftPlus also lets you set how many backups to retain, so old archives are deleted automatically. Excluding a database table is possible too, but through a filter in a must-use plugin rather than a settings screen.

Duplicator

Duplicator Pro has file filters under Backups, Add New, then Filters. Its data migration guide says you can enter full folder paths, separated by semicolons, and suggests excluding large media to reduce backup size. It also recommends database-only backups on a frequent schedule alongside less frequent full backups.

All-in-One WP Migration

The export screen’s advanced options include Do not export spam comments, Do not export post revisions and Do not export media library. The ServMask guide notes that skipping spam and revisions should not affect a migration, while skipping the media library leads to an incomplete one unless media is stored elsewhere.

PluginExclude uploadsExclude by pattern or extensionSkip revisions or spam
UpdraftPlusUntick UploadsWildcards, ext:, prefix:, .donotbackupVia database cleanup, not the backup
Duplicator ProFolder path filterFolder paths and file filtersNot covered in the guide cited
All-in-One WP MigrationDo not export media libraryDo not include the selected filesYes, export options

Offload Media to Reduce WordPress Backup Size

Excluding caches and old archives trims the fat. Offloading media removes the biggest piece altogether, because your images and files move to object storage and no longer sit in wp-content/uploads.

reduce WordPress backup size: Offload media before excluding it
Offload media before excluding it

How offloading changes your backups

Without offloadingWith offloading and local copies removed
Every backup copies the whole media libraryBackups contain the database, themes and plugins
Backups grow with every uploadBackups grow slowly, with content and settings
Large archives time out on shared hostingSmaller archives finish faster
Remote backup storage fills quicklyRemote storage lasts much longer

A plugin such as OffloadX uploads new media automatically and rewrites URLs, and on Starter and above its bulk migrator moves your existing library. It works with Cloudflare R2, Amazon S3, Wasabi, Google Cloud, DigitalOcean Spaces, Bunny Storage and other S3-compatible services. Our guide to offloading WordPress media to Cloudflare R2 shows a full setup.

Order matters

  1. Take a full backup, including uploads, and keep it safely off-server.
  2. Offload and migrate media, then check the site thoroughly.
  3. Set up protection for the bucket (see the next section).
  4. Only then remove local media copies and exclude uploads from future backups.

Offloading also frees disk space and helps page speed when paired with a CDN. See how offloading media affects speed for the performance side.

Backing Up the Bucket Separately

Once media lives in a bucket, the bucket is your media backup’s source of truth. Cloud providers store data redundantly, but redundancy does not protect you from deleting or overwriting files by mistake. You still need a recovery plan.

Provider features that help

ProviderFeatureWhat it does
Amazon S3VersioningKeeps previous versions when objects are overwritten; deletes add a delete marker instead of removing data
Amazon S3ReplicationCopies new objects to another bucket; both buckets must have versioning enabled
Google Cloud StorageSoft deleteOn by default with 7-day retention, configurable from 7 to 90 days
Google Cloud StorageObject VersioningKeeps noncurrent versions until lifecycle rules remove them
Cloudflare R2Bucket locksPrevents deletion and overwriting for a set period or indefinitely

Sources: S3 Versioning, S3 replication requirements, GCS soft delete and R2 bucket locks.

Which of these features you get depends on where the media lives, so it is worth weighing them when you pick a provider. Our Cloudflare R2 vs Amazon S3 comparison covers the wider trade-offs.

Watch the costs

  • AWS says every stored version is billed as a full object, not a diff.
  • Google says soft-deleted objects keep accruing storage charges until their retention ends.
  • S3 live replication does not copy objects that existed before you set it up; AWS offers Batch Replication for those.
  • Add lifecycle rules so old versions expire instead of piling up.

An independent copy

For the strongest protection, copy the bucket to a second provider or account that your WordPress credentials cannot touch. A scheduled rclone copy job does this well. Be careful with rclone sync: the rclone documentation warns it deletes destination files missing from the source, and recommends testing with --dry-run first.

Key point: a copy that the same access key can delete is not a real backup. Keep at least one copy out of reach of the keys stored in WordPress.

A Before and After Example

Here is an illustrative example for a typical content site. The sizes are hypothetical, but the pattern is one you will recognise when you measure your own site.

reduce WordPress backup size: Size of each backup in our example
Size of each backup in our example
ComponentBeforeAfter cleanupAfter offloading
uploads18 GB18 GB0 GB (in bucket)
Old backup archives in wp-content9 GB0 GB0 GB
Cache folders1.2 GB0 GB0 GB
Logs0.8 GB0 GB0 GB
Themes and plugins0.6 GB0.6 GB0.6 GB
Database1.4 GB0.5 GB0.5 GB
Total per backup31 GB19.1 GB1.1 GB

What changed at each stage

  • Cleanup removed old archives, caches and logs from the backup, and trimmed revisions, transients and spam from the database. That cut about 12 GB.
  • Offloading moved 18 GB of media into a versioned bucket with its own protection. Each daily backup dropped to about 1 GB.
  • With 30 daily backups retained, remote backup storage fell from about 930 GB to about 33 GB in this example.

The media still has protection, but it happens once in the bucket rather than being copied into every daily archive.

Test Your Restores

A backup you have never restored is a hope, not a plan. After changing exclusions, test a restore, because it is easy to exclude something important by accident.

Restore test checklist

  1. Create a staging site or local copy that is not publicly indexed.
  2. Restore the latest backup using your plugin’s normal restore process.
  3. Log in, check the dashboard, and visit the home page, a post, a page and a product if you run a shop.
  4. Confirm images load from the bucket or CDN URLs.
  5. Check forms, menus and widgets.
  6. Restore one file from the bucket’s versioning, soft delete or copy to prove that path works too.
  7. Record how long the restore took.

How often to test

  • After any change to exclusions or backup settings.
  • After moving media to cloud storage.
  • At least every few months on important sites.

Common Problems and Fixes

ProblemLikely causeFix
Backup keeps growing every runOld backups stored in wp-content are includedExclude backup folders and move archives off-server
Backup times out on shared hostingUploads folder too large for PHP limitsOffload media, or split into database and files schedules
Restored site has no imagesUploads excluded without media stored elsewhereKeep uploads in backups until media is offloaded and protected
Database backup still large after cleanupPlugin log tables or autoloaded optionsCheck wp db size --tables and reduce plugin log retention
Exclusions ignored in UpdraftPlusSpaces between entriesUse commas only, with no spaces
Remote storage bill risingToo many backups retained, or versions never expireSet retention in the plugin and lifecycle rules on the bucket

If disk space is the real emergency, our guide to a WordPress site running out of disk space covers quick wins.

Frequently Asked Questions

What is the fastest way to reduce WordPress backup size?

Remove old backup archives from wp-content and exclude cache and log folders. That often cuts size immediately without any risk to your content.

Is it safe to exclude the uploads folder?

Only if your media is stored and protected somewhere else, such as an offloaded bucket with versioning or an independent copy. Otherwise, uploads must stay in your backups.

Why is my WordPress backup bigger than my site?

Usually because the backup includes earlier backup archives stored on the server, or large cache and log folders. Measure wp-content folder by folder to find the cause.

Does deleting post revisions make backups smaller?

Yes, a little, because revisions live in the database. Limit future revisions with WP_POST_REVISIONS and clean existing ones with a database tool, after taking a backup.

Can UpdraftPlus exclude specific file types?

Yes. Its documentation shows the ext: syntax, such as ext:mp4,ext:zip, and a UPDRAFTPLUS_EXCLUDE_EXTENSIONS constant for wp-config.php.

How do I back up offloaded media?

Use your provider’s versioning, soft delete, replication or bucket locks, and ideally keep a scheduled copy in a second account or provider that WordPress credentials cannot reach.

Should the database be backed up more often than files?

Usually, yes. Posts, orders and comments change daily, while themes and plugins change rarely. Duplicator’s guide suggests frequent database-only backups alongside less frequent full backups, which also keeps each run small.

How often should I test a restore?

After any change to what you back up, and at least every few months on important sites. Include one test of restoring a file from the bucket.

Conclusion

To reduce WordPress backup size, measure first, exclude what can be rebuilt, clean the database, and move media into protected object storage. Then prove it works with a restore test, so your smaller backups are also reliable ones.

See OffloadX Plans →

Backup plugin options and cloud provider features are based on vendor documentation checked September 2026. The before and after figures are an illustrative example, not measurements from a specific site.