Simple automated backups of your WordPress-powered website.
Active Installations:
Last Updated:
Apr 24, 2024
WordPress Version:
3.9 or higher
Tested up to:

Free Support for BackupWordPress Fans

We are committed to open source and WordPress and will provide free support for all BackupWordPress fans. Our team will be available to assist you with any queries or issues you may have.

Backup to Cloud Storage

Protect your website against server-wide risks by backing up to cloud storage. While we no longer sell or support paid add-ons, we recommend UpdraftPlus WordPress Backups, which offers similar features for free. Compare the two options to make an informed choice.

Easy and Comprehensive Site Backup

BackUpWordPress allows you to effortlessly backup your entire site, including the database and all files. It's easy to use and can be scheduled according to your preferences. Try it now to see how simple it is!

Fast and Versatile Backups

Our plugin uses zip and mysqldump for faster backups, making it ideal for low memory and shared host environments. It is compatible with both Linux and Windows Server and offers options to exclude specific files and folders from backups. Additionally, we provide good support if you need assistance.

3.14 / 2024-04-22

  • Fixed security vulnerability through directory traversal while authenticated as admin

3.13 / 2022-02-23

  • Security fix for heartbeat
  • Correct spelling of Human Made
  • PHP 8.0 compatibility

3.12 / 2022-01-27

  • Updated to WP 5.9

3.11 / 2021-03-08

  • Updated to WP 5.7

3.10 / 2019-06-12

  • Fixed whitelist-html

3.9 / 2019-06-10

  • Readme update

3.8 / 2018-11-01

  • GNU Wording change

3.7.2 / 2018-10-29

  • Check remove intercomm links

3.7.1 / 2018-09-11

  • Fixed admin notices

3.7 / 2018-08-30

  • Updated readme to reflect ownership changes
  • Stripped out support and premium links

3.6.4 / 2016-06-02

  • Various improvements to exclusion handling.
  • i18n improvements.
  • Misc. UI improvements. / 2016-12-14

  • Fix issue where low disk space caused the admin interface to be unavailable
  • Fix issue where admin notices were causing databases and error logs to fill up
  • Improves file size calculations
  • Improves remaining disk space calculations
  • Improves file exclusion methods
  • Misc admin interface improvements
  • Misc code quality improvements and bug fixes

3.6.2 / 2016-08-02

  • Improves admin performance.
  • Improves security in internationalised strings.

3.6.1 / 2016-04-26

  • Bug fixes/improvements in disk space calculation
  • Misc bug fixes

3.6.0 / 2016-03-31

  • Fix a bug caused by using a function incompatible with min PHP version requirements
  • Misc code quality improvements and bug fixes
  • Fix bugs in the code responsible for admin notices
  • Display disk space info
  • Uninstall cleanup
  • Introduce a dedicated extensions page

3.5 / 2016-03-10

  • Reduce duplication and improve code readability when echoing filesizes
  • Improve how filesizes are handled in the Your Site list
  • Switch to storing site size data in a file, large sites could cause database errors when saving the option
  • Re-remove the PHP User and Group Requirements
  • Check that the backup file exists before attempting to check it’s contents
  • Only call getPerms on readable files to ensure we avoid a fatal error
  • Ensure error are correctly check in verify_backup
  • Use Symfony Process instead of shell_exec for all our system calls
  • More unit tests
  • Update dependencies
  • Detect disabled functions defined in php.ini, now accounts for different separators.

3.4.5 / 2016-02-23

  • Fix fatal error on upgrade

3.4.4 / 2016-02-23

  • Ensure temporary files are correctly cleaned up before and after running a backup.
  • Avoid killing site if plugin is active on PHP 52
  • Allow custom secure key using filter
  • Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups.


  • Fixes a bug which caused the root path to the WordPress install to be miscalulated in certain setups.


  • Fix a bug where backups were not downloadable when WordPress installed in a subdirectory


  • Remove the usage of shell_exec in two of our warning messages, fixes a PHP Warning on systems with it disabled.
  • Improve how we handle open_basedir restrictions, fixes a PHP Warning on some systems. Adds unit tests to cover open_basedir handling.
  • Show an error message if neither mysqldump nor PDO:mysql are available. Database backups won’t work without at least one of them.
  • Improve our upgrade code for users upgrading from pre version 2.0. Fixes a possible fatal error and ensures backups and backup settings are correctly brought forward.


  • Fix a possible PHP Warning in the Schedule Sentence.

3.4 / 2016/01/20

  • Introduces a major re-factor of the underlying backups engine, many bugs fixed and much improved unit test coverage.
  • Vastly improved Windows Server support.
  • We no longer write errors and warnings to files on disk.
  • Update to the latest version of symfony/finder.
  • Update to the latest version of ifsnop/mysqldump-php.

3.3.4 / 2015-12-10

  • Fixes styling issues with WordPress 4.4

3.3.3 / 2015-11-13

  • Fix broken Intercom support window
  • Fixes Typos in i18n strings
  • Backups finish faster
  • Fix an issue that caused the site size to report as twice as large as it should
  • Adds PHP mysqldump fallback lib (ifsnop/mysqldump-php)

3.3.2 / 2015-10-15

  • Misc improvements

3.3.1 / 2015-10-12

  • Fix false positive error message.
  • Fix broken download links

3.3.0 / 2015-10-09

  • Dropped support for PclZip
  • Fixed duplicate cron schedule interval names ( props ucavus )
  • Corrected some typos, grammar and punctuation ( props ucavus )
  • Fixed a bug in the WP CLI command ( props duritong )
  • Better message for wp-cron related errors
  • Replace ‘bi-weekly’ with less confusing wording
  • Fixed a few errors misc reported by code quality tool
  • Total site size display now subtracts excludes
  • Many general improvements and bug fixes

3.2.7 / 2015-07-27

  • Pass schedule type instead of schedule id as context for the calculated sizes, it’s more useful
  • Simply output arrays rather than trying to be too clever about it
  • Start tracking PDO availability through Intercom
  • Catch database and files shell_exec warnings
  • Test under PHP 5.6 in Travis
  • Use the new [email protected] email address everywhere
  • Clarify how people request access to Slack and GlotPress
  • Rewrite our contributing guidelines to be more comprehensive
  • Add instructions to
  • Revert plugin name as it doesn’t make a diff in search results
  • Always return an integer

3.2.6 / 2015-06-09

  • Fixes admin page slug for multisite

3.2.5 / 2015-04-29

  • Fixes an issue when evaluating expression with empty
  • Fixes a fatal error on PHP 5.3
  • Displays other notices
  • Updates stable tag
  • Adds some escaping and sanitizing
  • Defines plugins dir for different environments
  • Adds tests for activation and deactivation hooks
  • Adds a debugging function for tests
  • Symlinks plugin into tests dir
  • Splits out deactivation code into separate functions
  • Fixes activation and deactivation hooks not being fired
  • Exclude backups folder from size calculation
  • Fixes a misplaced parenthesis
  • Fixes how error messages are bubbled up
  • get home path should return defined value
  • Removes redundant exclude statement as CVS folders are excluded by default
  • Adds a flag parameter to allow get_files to return all files including default excludes

3.2.4 / 2015-04-01

  • Fixes default exclude pattern that was too greedy.

3.2.3 / 2015-04-01

  • Fixes issue where files where ‘cache’ files were excluded by default.
  • Updates brazilian portuguese translations.
  • Fixes the issue with the ‘no thanks’ button in the Support modal and misc JS improvements. props SiamKreative.

3.2.2 / 2015-03-25

  • Fixes error in manual backups, caused by incorrect plugin version number in class, which is used for the JS script version.

3.2.1 / 2015-03-25

  • Check if shell_exec is available before running command
  • Only validate day of month if this is the schedule type
  • Make FS optional and fix the DB connect method
  • (issue-770) Exclude the folder, not the wildcard
  • (issue-751) Rename plugin

3.2 / 2015-03-16

  • (issue-698) skip mySql bug
  • Use shell_exec
  • Remove use statement
  • Revert to using shell_exec
  • Remove Process
  • (cool-runnings-757) Add back session_write_close
  • (issue-479) Hide hours and minutes for hourly backups
  • (backupception) Only load if main site on multisite
  • (all-paths-lead-to-rome) Set plugin path to main plugin file to avoid relative paths
  • (socket-to-me-one-more-time) Fix paths
  • Use socket if available
  • Display errors
  • Put the db dump in the archive first – fixes issue with large archive
  • Dont wait for response
  • Run schedule as a Backdrop task
  • Pass array directly to function
  • (issue-759) Fix require paths
  • check PHP version before anything else
  • Move plugin class to own file
  • Skip mysql bug error
  • Delete all BWP options
  • Start the process
  • Return and check WP_Error
  • (what-time-is-backup) Extract hours and minutes from the date as an array for display
  • Change plugin description if multisite
  • Use wp_get_sites
  • Add a comment
  • We check for this on plugin instantiation
  • Revert to clearing schedule and rescheduling
  • Delete schedules and leftover options from subsites
  • Ensure plugin only runs on main site
  • Fix Too Many Schedules
  • Use Symfony Process
  • (fix-incorrect-type-error) File is an SPL object so get path
  • Set root as default param
  • Delete backdrop transient
  • Force directory sizes recalculation
  • Define VCS abbr
  • Hide exclude patterns from Excludes list.
  • Check if user can connect
  • Test that the mysqldump command works
  • Add a couple of mysql versions
  • Automatically exclude VCS folders
  • Calculate Root size correctly
  • Get default rules from backup object
  • Do not auto ignore dot files
  • Count excluded
  • Do not count excluded
  • If its the root then return its size directly
  • Fix typo in transient names
  • Set and return class property instead
  • List default excludes as such
  • Require symfony finder
  • Clear transients on deactivate
  • Get list of files with Finder
  • Load composer packages
  • These are alredy filtered
  • Add some default excludes
  • Use absolute path for excludes added via UI
  • Fix tests
  • Fix conditional
  • Fix syntax error in travis YML
  • Run codesniffer only on pull requests
  • Update tested WP versions
  • Change min WP version required to match travis CI
  • Fix readme changelog placement
  • Add condtion for Cron and Ajax
  • Fix deactivate logic
  • Fixes recursive exclusion of files

3.1.4 / 2015-02-24

  • (upgrade-options) Bump version
  • strtolower is redundant
  • Upgrade routine – renames service settings to avoid backslashes.
  • Use the Service name as the setting name
  • Clear settings for schedule settings
  • Fixes bug in displaying settings error notices
  • Update version number
  • Merge pull request #726 from humanmade/fix-fatal-error-missing-class-addons
  • Leave bare minimum to avoid fatal error
  • remove old main plugin class

3.1.3 / 2015-02-04

  • Keep deprecated classes in a deprecated.php file to avoid Fatal Error in addons during upgrade.

3.1.2 / 2015-02-03

  • (simplify-bwp-file-timestamp) Simplify the file name timestamp
  • Fix class file name
  • (fixup-setup-class) Add missing transients to uninstall routine
  • switch Travis notifications to Slack instead of Hipchat
  • Do not delete backups on uninstall
  • wrap in parenthesis
  • Fix include paths after moving uninstall to own file herpderp
  • Update BackUp class include
  • Add all cases to switch
  • Pass scanned files sizes through conform_dir()
  • Fix some classes and requires
  • (origin/issue-684, issue-684) Fix namespaces
  • Remove unnecessary wildcard from regex
  • (crazy-refactor) Remove some duplication
  • Formatting
  • Fix Class name
  • Blank line
  • Uses a DirectoryIterator to delete files
  • Remove tests for now
  • Fix stable tag number
  • Revert to using uninstall.php
  • Add tests for uninstall and deactivate
  • Remove double lie break
  • Remove double line break
  • Remove phpdocumentor
  • We still need to require some scripts…
  • We dont need to check for this constant in the hook callback
  • Use get_col to directly have an array of schedule option names
  • Remove namespacing
  • Remove debugging
  • Make the uninstall, activation and deactivation hooks work
  • (change-singleton-implementation) Change the singleton implementation to not use the static() function
  • path argument interfers with wp-cli path argument.
  • Fix some scrutinizer issues, mostly major ones
  • Consistent default name for database dumps
  • Major 5.3 re-factoring fun
  • Minor code formatting
  • else if should be elseif
  • Update the WP_CLI command to fix some issues
  • Add support for copying and updating an existing backups

3.1.0 / 2015-01-13

  • Correct $response1 variable
  • (origin/issue-652, issue-652) Suppress warnings from filesystem functions
  • Remove debugging function
  • (origin/issue-475, issue-475) Fix a French string
  • Format the intercom data better
  • Load Intercom in the admin footer
  • Fix some HTML issues
  • Add a function that returns a given option value
  • Return Unknown if no average exists or invalid
  • Add a start parameter to function
  • Pass in the start time as a parameter
  • Make strings translatable
  • Escape values
  • Adds a function to track backup duration and another to display it
  • Adds Average Backup Duration Info
  • Improve display of arrays
  • Fixes open_basedir warnings
  • Replace spaces with tabs for indentation
  • (wp-cron-test-improvements) Improve the reliability of the wp-cron test
  • Pop in the directory sizes
  • Adapt heartbeat pulse
  • Update Javascript
  • Update constant name
  • Load the default translations so that activation error message is in user language
  • Fix a few translatable strings
  • Update French translations
  • Re-uglify Intercom js
  • Use provided callback argument to determine current screen
  • remove deprecated code
  • Only show notices on BWP admin page
  • Fix class name
  • Make function public for now
  • Get an instance of BWP to load functions
  • Fix conditional
  • Show admin notice if fails to meet requirements
  • Remove unneeded function
  • Fix references
  • Refactor main class after addition of the Setup class
  • Introduce a setup class
  • Determine if we need to run a cleanup routine
  • Introduce a custom hook for addons
  • Refactor main plugin file into a singleton class
  • Bring activation and deactivation into main plugin class
  • css changes to fix support button alignment
  • Fixes issue preventing backups from running without JS
  • Remove back compat memory limit define
  • Refactor HMBKP_Notices to support non-persistant notices
  • Minor refactor for PHP minimum requirements notice
  • Clear previous backup notices when running a new backup
  • Fix issues with custom paths
  • Improved singleton pattern
  • Display errors in network admin
  • Change to text input so multiple email address are supported
  • Removes HTML tag from string
  • Account for new schedule
  • Make upsell sentence translatable
  • fix return type
  • Return true if transient exists
  • Check if constant is defined
  • Request the site size via heartbeat send
  • Pass site size through heartbeat
  • Only calculate if necessary

3.0.4 / 2014-12-10

  • Simplify the backup count display
  • Enqueue scripts properly
  • Change how we check directory_sizes
  • Add BackUpWordPress test case class
  • Move class to separate file
  • Group help tab display functions
  • Update POT file
  • Make strings ready for translation

3.0.3 / 2014-12-06

  • Add French translations
  • Update textdomain
  • Fix deleted function
  • Use HM_Backup function to determine if shell_exec is enabled
  • Check if file is readable first
  • Fix how we kick off Task
  • Remove unused var
  • Call recursive filescanner on admin page load
  • Update package.json
  • Update the POT file task params
  • Replace hmbkp with backupwordpress as textdomain
  • Exclude folders
  • Add Grunt task options
  • Remove hard line returns
  • Display placeholder if exec fails
  • Add 30 second time diff allowance
  • we do this in travis.yml
  • Regenerate github account info
  • Update command to reflect function rename
  • Update tests to reflect function name change
  • Rename function
  • Filter tests to run
  • Fix group flags
  • Calculate site size on page load

3.0.2 / 2014-12-02

  • Bump version
  • Add parenthesis to require_once
  • Remove disk space info
  • Attempt to fix build
  • define WP_TESTS_DIR
  • Make sure current_action fnction is loaded
  • Remove extra slashes and semicolons
  • Remove the custom webhook service
  • Better default WP_TESTS_DIR
  • move trailingslash calls out of the loop for performance
  • Minor code cleanup
  • Correct path for hm-backup so it’s tests are run
  • add composer.lock
  • Use scrutinizer code coverage
  • add badge
  • Use up to date commands for coverage
  • Add code rating
  • Don’t test 5.2
  • Update
  • excluded_dirs is deprecated
  • Update scrutinizer config
  • Add composer config and dev dependencies
  • Make PHPUnit generate an XML for coveralls
  • Add scrutinizer config
  • Ignore vendor dir
  • Add a link to Help page
  • Move to activation hook
  • Bump up required WP version
  • Escape all the things
  • Save errors to a notices option
  • Reload page on errors
  • Remove script
  • Remove unneeded class
  • Check PHP version on plugins loaded
  • Check PHP version on activate
  • Update readme
  • Set required version to 5.3.2
  • Update tests
  • Allow for a 30 second delta in asserting schedule time
  • Use the new build env on Travis
  • Restrict plugin to be network only
  • Fix admin URL logic
  • Formatting
  • Update readme changelog

3.0.1 / 2014-11-20

  • remove uneeded images
  • latest hm-backup / fixes a serious bug in backups.
  • Typos in v 3.0 changelog
  • Specify POT filename in grunt task
  • Update POT file
  • Markdown readme
  • Regenerate readme
  • Add plugin headers

3.0 / 2014-11-14

  • Refactor the recursive filesize scanner
  • correct text domain
  • Remove unneede statements
  • reload the excludes filelist in the correct place when someone excludes a file
  • Latest backdrop
  • Regenerate minified CSS
  • Regenerate minified JS
  • Fix cancel backup action
  • WordPress Coding Standards
  • Exit early if incompatible version of WordPress
  • Update translations
  • Update changelog

3.0.0-beta / 2014-09-08

  • Load minified CSS
  • Formatting
  • Biweekly wording
  • Add missing period
  • use nonce_url instead of manually adding the nonce query param
  • close the settings form when done
  • Design changes as per ticket
  • Start tracking langauge in server info
  • Right align the primary button in the enable support modal
  • Re-factor the directory filesize code to use a single array instead of thoussands of transients
  • Remove the warning that would show if you were using anything other than the latest stable, it’s no longer needed now that the FAQ is local
  • switch to using a single transient to store directory filesize data
  • Add an anchor link
  • Add error message
  • Rename function
  • Prefix GET params
  • Update exclude rule action
  • Adds function for building admin action urls
  • fix vertical scroll
  • Adds some functions to manage settings form submission errors
  • Rename nonce and action
  • fetch errors to display
  • Form submission handling for BWP and add-ons settings
  • Use a new function that persists form submission errors to a transient
  • None check
  • Pass the nonce around in the ajax request
  • Enable support action links
  • Check nonces
  • Modify action URLs to use the admin_post hook
  • Remove unneeded code
  • New line at end
  • Use admin_post hook
  • Display schedule start time in local timezone
  • Add an action hook that gives access to consumers to the backup progress
    • Update translatable strings POT file
    • Bump version
    • Update min WP version and tested up to
    • accidently used dash instead of underscore
    • namespaced option and added option to uninstall.php
    • basic show/hide of premium upsell
    • Fix incorrect transient expiry
    • Show the spinner in the tab if a schedule other than the current is running
    • Snip snip
    • Bring back the some javascript enhancements
    • Switch to the PHP 5.2 compatible version of Backdrop
    • Finish up support
    • Brace up single line if’s and foreach’s
    • Only load minified scripts and styles if WP_DEBUG isn’t on
    • Load the minified css and js files by default
    • Remove the combined css files as we only have one now. Stop loading colorbox.
    • Remove colorbox
    • Improvements
    • More improvements
    • Don’t die when directly running a backup on page load
    • Re-factor the backup filesize calculation
    • make capability filterable
    • use core capabilities instead of custom
    • Switch to Backdrop
    • Fix typo in prefix
    • Hook function onto admin_post
    • Update delete link
    • Bookmark current admin page for redirect
    • Add custom capabilities and role
    • Exclude BackUpWP by default
    • Ignore the build folder
    • Add more build excludes
    • minify JS
    • generate markdown readme
    • minify css
    • combine css
    • regenerate readme
    • Make links consistent for the grunt task
    • Convert URLS to markdown
    • Update lang files
    • Add colorbox as bower dependency
    • remove colorbox folder
    • Remove colorbox submodule
    • Change how we include FAQ
    • Add readme partials
    • Add package.json
    • Add Gruntfile
    • Add bower.json
    • JSHint rules
    • remove from ignore
    • Update ignore list
    • Add bower config
    • Add FAQ strings
    • Return the cached directory size early if we have it
    • Re-factor the file browser scanner
    • correct sprintf usage
    • Handle saving service forms
    • Codeing standards
    • Move the error check outside of the foreach
    • Remove uneeded $is_tab_visible
    • Only show excludes for backups which include files
    • Show destinations in the list of schedule links
    • WordPress standard modal for enabling support
    • Remove extra slash in include path
    • Add a heading to the settings form
    • More work on excludes
    • Another todo
    • Add some todos
    • Don’t include the parent directory in a browsable list
    • More work on Excludes
    • Switch to only storing 3 backups by default
    • More work on redesign
    • commented out enable support button till we figure out what to do with it
    • made tabs responsive below 639px
    • More work on redesign
    • Add more default excludes
    • Correctly highlight the tab for the first schedule
    • Switch to tabs instead of subsubsub
    • First bash at a redesign settings UX


  • Reverts a change to how the home path is calculated as it caused issues on installs where wp-config.php was stored outside of web root. Props to @mikelittle for the bug report.


  • Bump minimum WP requirement to 3.7.3, the latest security release on the 3.7 branch.
  • Fix an issues that could cause schedule times to fail to account for timezone differences.
  • Add a nonce check to the schedule settings.
  • Fix a possible JS warning when removing an exclude rule.
  • Our unit tests now run in PHP 5.2 again.


  • It’s now possible to choose the time and day that your schedule will run on.
  • Introduces several new unit tests around schedule timings.
  • Fixes a bug that could cause the hourly schedule to run constantly.
  • Improved the layout of the Constants help panel.
  • If the backup root directory is unreadable then the plugin will no longer function.
  • Update the backups table match the standard WordPress table styles.
  • Improved styling for the settings dialogue.
  • Improved styling for the Server Info help tab.
  • /s/back ups/backups.
  • Remove Deprecated call to screen_icon.
  • Updated French translation.
  • Update the WP CLI command to use the new method for registering command.
  • Reload the schedules when re-setting up the default schedules so they show up straight away.
  • s/dpesnt’t/doesn’t.
  • Only show the estimated total schedule size when editing an existing schedule.
  • Stop stripping 0 from the minutes on hourly backups so that backups at 10 (& 20, etc.) past the hour correctly show.
  • Disable buttons whilst ajax requests are running.
  • Move spinners outside the buttons as they didn’t look very good inside.
  • Improve the detection of the home path on multisite installs which have WordPress in a subdirectory.
  • Track the time that the running backup is started and display how long a backup has been running for.
  • Fix an issue that meant it wasn’t possible to run multiple manual backups at the same time.
  • Many other minor improvements.


  • BackUpWordPress now requires WordPress 3.7.1 as a minimum.
  • Remove some old back-compat code that was required because we supported older WP versions.
  • It’s now possible to change the email address that notification emails are sent from using the hmbkp_from_email filter.
  • The spinner is now retina!
  • Close the PHP Session before starting the backup process to work around the 1 request per session issue. Backup status will now work on sites which happen to call session_start.
  • Pass max_execution_time and the BackUpWordPress Plugin version back to support. * Include the users real name in support requests
  • Stop passing $_SERVER with support requests as it can contain things like .htaccess passwords on some server configurations.
  • Improve the display of the server info in the enable support popup.
  • New screenshots
  • Use wp_safe_redirect for internal redirects.
  • Use wp_is_writable instead of is_writable.


  • In WordPress Multisite the backups admin page is now located in Network admin instead of the wp-admin of the main site.
  • Fixed an issue with the new intercom support integration that could cause loading the backups page to timeout
  • Fixed 3 stray PHP warnings.
  • BackUpWordPress will now always be loaded before any BackUpWordPress Extensions.
  • Fixed an issue that could cause a long modal (excludes) to show underneath the WP admin bar.


  • Add missing colorbox images


  • Support for new premium extensions for storing backups in a variety of online services.
  • Exclude the WP DB Manager backups and WP Super Cache cache directories by default.
  • We now use Intercom to offer support directly from within the plugin, opt-in of course.
  • More i18n fixes / improvements.
  • We no longer show download links if your backups directory isn’t web accessible.
  • Fix a bug that caused the plugin activation and deactivation hooks from firing.
  • Correctly handle MYSQL TIMESTAMP columns in database dumps.
  • mysqldump and zip are now correctly recognised on SmartOS.
  • Schedule names are now translatable.
  • Avoid having to re-calculate the filesize when a schedules type is set.
  • Compatibility with WordPress 3.8


  • Correct version number.


  • Fix a PHP strict error.
  • Save and close as separate buttons.
  • Fix bug that caused multiple notification emails.
  • Fixes typo in database option name.
  • Updated translations.
  • Improve PHP docblocks.
  • Make schedules class a singleton.
  • Exclude popular backup plugin folders by default.
  • Exclude version control folders by default.
  • Fix broken localisation.
  • Use wp_safe_redirect instead of wp_redirect for internal form submissions


  • Replace Fancybox with Colorbox as Fancybox 2 isn’t GPL compatible.
  • Use the correct HMBKP_ATTACHMENT_MAX_FILESIZE constant consistently in the help section.
  • Correct filename for some mis-named translation files.
  • Show the total estimated disk space a schedule could take up (max backups * estimated site size).
  • Fix a typo (your -> you’re).
  • Use the new time Constants and define backwords compatible ones for > than 3.5.
  • Play nice with custom cron intervals.
  • Main plugin file is now backupwordpress.php for consistency.
  • Add Paul De Wouters (pauldewouters) as a contributor, welcome Paul!
  • Don’t remove non-backup files from custom backup paths.
  • Fix a regression where setting a custom path which didn’t exist could cause you to lose existing backups.
  • When moving paths only move backup files.
  • Make some untranslatable strings translatable.
  • Don’t allow a single schedule to run in multiple threads at once, should finally fix edge case issues where some load balancer / proxies were causing multiple backups per run.
  • Only highlight the HMBKP_SCHEDULE_TIME constant in help if it’s not the default value.
  • Remove help text for deprecated HMBKP_EMAIL.
  • Default to allways specificing --single-transaction when using mysqldump to backup the database, can be disabled by setting the HMBKP_MYSQLDUMP_SINGLE_TRANSACTION to false.
  • Silence a PHP Warning if mysql_pconnect has been disabled.
  • Ensure dot directories . & .. are always skipped when looping the filesystem.
  • Work around a warning in the latest version of MySQL when using the -p flag with mysqldunmp.
  • Fix issues on IIS that could cause the root directory to be incorrectly calculated.
  • Fix an issue on IIS that could cause the download backup url to be incorrect.
  • Fix an issue on IIS that could mean your existing backups are lost when moving backup directory.
  • Avoid a PHP FATAL ERROR if the mysql_set_charset doesn’t exist.
  • All unit tests now pass under IIS on Windows.
  • Prefix the backup directory with backupwordpress- so that it’s easier to identify.
  • Re-calculate the backup directory name on plugin update and move backups.
  • Fix some issues with how HMBKP_SECURE_KEY was generated.


  • Fix a fatal error on PHP 5.2, sorry! (again.)


  • Fix a parse error, sorry!


  • Fix a fatal error when uninstalling.
  • Updated translations for Brazilian, French, Danish, Spanish, Czech, Slovakian, Polish, Italian, German, Latvian, Hebrew, Chinese & Dutch.
  • Fix a possible notice when using the plugin on a server without internet access.
  • Don’t show the wp-cron error message when WP_USE_ALTERNATE_CRON is defined as true.
  • Ability to override the max attachment size for email notifications using the new HMBKP_ATTACHMENT_MAX_FILESIZE constant.
  • Nonce some ajax request.
  • Silence warnings created if is_executable, escapeshellcmd or escapeshellarg are disabled.
  • Handle situations where the mysql port is set to something wierd.
  • Fallback to mysql_connect on system that disable mysql_pconnect.
  • You can now force the --single-transaction param when using mysqldump by defining HMBKP_MYSQLDUMP_SINGLE_TRANSACTION.
  • Unit tests for HM_Backup::is_safe_mode_available().
  • Silence possible PHP Warnings when unlinking files.


  • Stop storing a list of unreadable files in the backup warnings as it’s too memory intensive.
  • Revert the custom RecursiveDirectoryIterator as it caused an infinite loop on some servers.
  • Show all errors and warnings in the popup shown when a manual backup completes.
  • Write the .backup_error …

Perfect for me

By bsimrell on May 24, 2024

I like simple, straight forward, and reliable. This plugin is it, in spades. I was so happy to learn that a new owner took it up after a brief but worrying hiatus. Well worth the effort. Thank you!

Straight forward and simple

By ryancornelius on May 9, 2024

Everything it says on the tin. Nice and easy.

Simply on point!

By samreciter on April 22, 2024

In my opinion the best backup plugin of them all. Simple but powerful. Does exactly what it says - and nothing more. Very stable for years now. Can recommend!

Best free backup plugin with exlude options

By Dominik Kozmáli (dominokozmali) on April 20, 2024

I've been looking for two days for a plugin that would allow me to back up a larger page (over 2GB) even with the option to exclude specific folders.

And I found this amazing back up plugin.

Thank you, it works great. It backs up the entire site even with files that other backup plugins do not back up.

Big thumbs up and I hope to motivate the author to update the plugin to the latest version of wordpress 6.5.2 (even though it works great on my wp version 6.4.4. - although it should only be compatible up to version 5.9.9 :)).

Thanks to the author for creating this amazing, simple and super functional backup plugin! :)

Professional and not bloated

By chrhtm on February 27, 2024

i love the clean, professional and WP styled User Interface. Although it can not save backups to any cloud storage, scheduled backups are possible and email notification is good enough to track the backups and store them locally first and transfer (some) to the cloud later.

Perfect light weight solution that works!

By nampara17 on January 30, 2024

If you are looking for a perfect solution to schedule and / or backup your WordPress installation on a regular basis - this is it. It's lightweight, does the job and allows you to have a schedule. The perfect solution to everyday problems :)

perfect WP-backup tool

By boddhid on January 1, 2024

This tool ist just perfect in its simplicity, regular backups of your WP installation and/or database. I used it for over 6 years now, and it saved me many headaches, where to find yesterday's backup. Can only recommend.

It's been a while since first install. No problems at all. Feel unsafe without

By arendon1 on August 29, 2023

This plugin is development from the heart. Well executed, no friction at all when needed.

Used since 10 years !

By pjmarquet on August 25, 2023

Je l'utilise depuis 10 ans. Backup au format sql standard. Permet de restaurer via PhpMyAdmin ou mysql !


By KEVIN DINEEN (kdineen) on June 25, 2023

Been working for several years and saved my butt many times. Thank you!

Try other plugins too!

Total Upkeep – WordPress Backup Plugin plus Restore & Migrate by BoldGrid

Automated backups, remote backup to Amazon S3 and Google Drive, stop website crashes before they happen and more. Total Upkeep is the backup solution …

Try Demo

MainWP Child – Securely Connects Sites to the MainWP WordPress Manager Dashboard

Securely connects Unlimited WordPress sites to your MainWP Dashboard, allowing you to control them from a single screen

Try Demo


Softaculous provides a single-login centralized panel where you can manage tons of your WordPress websites efficiently, unitedly as well as singularly …

Try Demo

Try BackUpWordPress With InstaWP

Request demo

Wondering how to integrate InstaWP with your current workflow? Ask us for a demo.

Contact Sales

Reach out to us to explore how InstaWP can benefit your business.