{"id":391614,"date":"2026-11-05T16:35:31","date_gmt":"2026-11-05T16:35:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/winonweb-migrate\/"},"modified":"2026-11-05T17:34:23","modified_gmt":"2026-11-05T17:34:23","slug":"winonweb-migrate","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/winonweb-migrate\/","author":21190039,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"WinOnWeb Migrate","header_author":"WinOnWeb","header_description":"Move or back up a WordPress site with no size limits. Imports All-in-One and Duplicator archives, can undo an import.","assets_banners_color":"0b1120","last_updated":"2026-11-05 17:34:23","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.winonweb.dev\/en\/migrate","header_author_uri":"https:\/\/www.winonweb.dev\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":249,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.4.2":{"tag":"0.4.2","author":"alexlionheart","date":"2026-11-05 16:35:19","revision":3786376},"0.4.3":{"tag":"0.4.3","author":"alexlionheart","date":"2026-11-05 17:29:42","revision":3786474},"1.0.0":{"tag":"1.0.0","author":"alexlionheart","date":"2026-11-05 17:34:23","revision":3786477}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3786430,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3786430,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3786430,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3786430,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.4.2","0.4.3","1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Export: pick what goes into the archive, with live size estimates.","2":"Import check: source and destination, server check and options before anything changes.","3":"Progress of an import, resumable step by step.","4":"Backups list with download, restore and delete.","5":"Tools: find and replace leftover links after a migration."}},"plugin_section":[],"plugin_tags":[151,2814,4151,4155,152],"plugin_category":[59],"plugin_contributors":[290911],"plugin_business_model":[],"class_list":["post-391614","plugin","type-plugin","status-publish","hentry","plugin_tags-backup","plugin_tags-clone","plugin_tags-migrate","plugin_tags-migration","plugin_tags-restore","plugin_category-utilities-and-tools","plugin_contributors-alexlionheart","plugin_committers-alexlionheart"],"banners":{"banner":"https:\/\/ps.w.org\/winonweb-migrate\/assets\/banner-772x250.png?rev=3786430","banner_2x":"https:\/\/ps.w.org\/winonweb-migrate\/assets\/banner-1544x500.png?rev=3786430","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/winonweb-migrate\/assets\/icon-128x128.png?rev=3786430","icon_2x":"https:\/\/ps.w.org\/winonweb-migrate\/assets\/icon-256x256.png?rev=3786430","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>WinOnWeb Migrate packs a site into a single .wowm file and unpacks it on any other WordPress install: local to staging, staging to live, or from one host to another. There is no upload limit and nothing to buy.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>No size limits. Archives are built, uploaded and unpacked in small steps that resume after timeouts and dropped connections.<\/li>\n<li>Imports All-in-One WP Migration (.wpress) and Duplicator (.zip) archives.<\/li>\n<li>Safe import. The database is loaded into temporary tables and switched over in one step, so a failed import leaves the site as it was.<\/li>\n<li>Undo import. The previous database is kept for 7 days and can be restored with one click from the plugin, with <code>wp wowm undo<\/code> from the command line, or through WordPress recovery mode if a plugin or theme breaks the site.<\/li>\n<li>Site check before and after import: the plugin requests the home page, login and REST API and shows green\/red. If wp-admin shows a critical error right after the import, the previous database is put back at once; other errors trigger an automatic undo after 10 minutes unless you keep the import.<\/li>\n<li>Server check before import: write access, disk space, database server, max_allowed_packet, utf8mb4, PHP memory, plus an integrity check of the archive.<\/li>\n<li>Site URLs and paths are rewritten automatically, including serialized data (widgets, page builders, ACF) and JSON-escaped values.<\/li>\n<li>Leftover link finder: shows where an old address is still stored and replaces it everywhere.<\/li>\n<li>The host's object-cache.php, advanced-cache.php and db.php are not moved or overwritten by default.<\/li>\n<li>Caches, logs, other plugins' backups and leftover copies such as plugins-old are left out of archives.<\/li>\n<li>Choose what to export: database, media, themes, plugins, must-use plugins, other files, and your own exclusions.<\/li>\n<li>Scheduled backups with changes-only runs between full backups.<\/li>\n<li>Caches are cleared after an import (WP Rocket, W3 Total Cache, LiteSpeed Cache, WP Super Cache, Autoptimize, SiteGround Optimizer, object cache).<\/li>\n<li>WP-CLI: <code>wp wowm export<\/code>, <code>wp wowm import &lt;file&gt;<\/code>, <code>wp wowm list<\/code>, <code>wp wowm undo<\/code>, <code>wp wowm keep<\/code>.<\/li>\n<\/ul>\n\n<p>Need a hand? The <a href=\"https:\/\/www.winonweb.dev\/en\/migrate#service\">WinOnWeb<\/a> team can do the migration for you.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from Plugins &gt; Add New, or upload the zip under Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate it and open Migrate in the admin menu.<\/li>\n<li>On the old site, use Export to create an archive and download it.<\/li>\n<li>On the new site, open Import, drop the archive, review the server check and confirm.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20it%20really%20free%3F\"><h3>Is it really free?<\/h3><\/dt>\n<dd><p>Yes. There is no size limit, no paid extension and no trial.<\/p><\/dd>\n<dt id=\"can%20i%20import%20an%20archive%20made%20with%20all-in-one%20wp%20migration%20or%20duplicator%3F\"><h3>Can I import an archive made with All-in-One WP Migration or Duplicator?<\/h3><\/dt>\n<dd><p>Yes. Drop the .wpress file or the Duplicator .zip on the Import tab. Password-protected .wpress archives are not supported yet.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20an%20import%20fails%3F\"><h3>What happens if an import fails?<\/h3><\/dt>\n<dd><p>Until the last step the site keeps running on its own database. After the switch the previous database is kept for 7 days and \"Undo import\" brings it back. If wp-admin cannot open right after the import, the plugin undoes it by itself; <code>wp wowm undo<\/code> does the same from the command line. Files are covered by the backup the plugin offers to make before the import.<\/p><\/dd>\n<dt id=\"where%20are%20backups%20stored%3F\"><h3>Where are backups stored?<\/h3><\/dt>\n<dd><p>In wp-content\/wowm-backups: next to the content it backs up and outside the uploads folder, so a backup never ends up inside the next one. The folder is protected for Apache and IIS, every archive gets a random file name and nothing secret is written there, so it cannot be misused on nginx either.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multisite%3F\"><h3>Does it support multisite?<\/h3><\/dt>\n<dd><p>Not yet.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20anywhere%3F\"><h3>Does the plugin send data anywhere?<\/h3><\/dt>\n<dd><p>No. Archives stay on your server unless you download them. The plugin does not contact any external service.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First stable release.<\/li>\n<\/ul>\n\n<h4>0.4.3<\/h4>\n\n<ul>\n<li>New logo and colors in the plugin screen.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Files unpacked from an archive are staged as numbered files without an extension or folder structure and only get their real name when moved into place, so a PHP file from an archive is never reachable under its own name while an import runs.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>The standalone recover.php is gone. When the login page shows a critical error right after an import, the previous database is put back in the same step; <code>wp wowm undo<\/code> and <code>wp wowm keep<\/code> were added for the command line, and WordPress recovery mode covers a broken plugin or theme.<\/li>\n<li>Nothing secret is written to disk any more: the undo state lives in the options table and job files hold only a hash of the job secret.<\/li>\n<li>Plugins, must-use plugins, themes and uploads are located through WP_PLUGIN_DIR, WPMU_PLUGIN_DIR, get_theme_root() and wp_upload_dir(), so sites with a custom folder layout export and import correctly.<\/li>\n<li>The site is checked before the import too: a page that already failed is not counted as something the import broke.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Site check after every import: home page, login page and REST API are requested and must answer without a critical error. Result shown green\/red.<\/li>\n<li>Automatic undo: if the site shows a critical error after an import, the previous database is put back after 10 minutes unless you choose to keep the import (can be switched off per import).<\/li>\n<li>Emergency undo without WordPress: recover.php restores the previous database when wp-admin cannot load. The link is shown after the import and saved to wp-content\/wowm-backups\/RECOVERY.txt.<\/li>\n<li>Plugins whose files did not arrive, and plugins tied to the previous host, are deactivated after the import and listed.<\/li>\n<li>PHP extensions used by the source site are compared with this server before the import.<\/li>\n<li>Jobs keep running on the server when the tab is closed (WP-Cron fallback) and the page reconnects to them.<\/li>\n<li>An interrupted upload can be continued after a page reload by picking the same file.<\/li>\n<\/ul>\n\n<h4>0.3.4<\/h4>\n\n<ul>\n<li>Upload progress moves continuously while a piece is being sent, instead of jumping once per piece.<\/li>\n<li>Large files show an explanation up front (slow on shared hosting, still working, SFTP + Restore is faster for multi-GB archives).<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>When the host limits the upload size, a sticky note under the bar explains what is happening and that it is working, with a pointer to the SFTP + Restore route for very large files.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>On an HTTP 413 (request too large) the upload now shrinks the piece size immediately instead of retrying, and remembers a working size for next time.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Uploads no longer hang on hosts that hold or reject large requests: each piece times out, retries are shown, and the piece size shrinks automatically.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>All database access goes through $wpdb.<\/li>\n<li>Stricter input sanitizing and output escaping.<\/li>\n<li>Translator comments for every string with placeholders.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Help tab with a migration guide, FAQ and WP-CLI reference.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Import All-in-One (.wpress) and Duplicator (.zip) archives.<\/li>\n<li>Undo import.<\/li>\n<li>Server check and archive integrity check before import.<\/li>\n<li>Leftover link finder with replace.<\/li>\n<li>Changes-only backups, manual and scheduled.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>The safety backup before an import only covers what the import replaces.<\/li>\n<li>Size estimate measured across requests; backups and leftover copies are skipped.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Move or back up a WordPress site with no size limits. Imports All-in-One and Duplicator archives, can undo an import.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/391614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=391614"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/alexlionheart"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=391614"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=391614"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=391614"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=391614"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=391614"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=391614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}