Why All-in-One WP Migration Shows an Upload Limit (And How to Fix It)

Yani I
Yani I Mar 19, 2026 · 9 min read
Why All-in-One WP Migration Shows an Upload Limit (And How to Fix It)

If you have ever tried to import a site with All-in-One WP Migration and seen a message like “Your file exceeds the 64MB upload limit set by your host,” you are not alone. This is the number one question we get.

Here is the short answer: the plugin does not set this limit. Your hosting provider does. The plugin shows your host’s PHP upload cap, and layers in front of PHP (web server, CDN, firewall) can block large uploads on top of that.

Where the Limit Actually Comes From

Every web server running PHP has configuration settings that control how large a file you can upload. The two PHP settings that matter are:

These are set by your hosting provider in the server’s PHP configuration. They apply to every PHP application on your server, not just WordPress and not just our plugin.

When All-in-One WP Migration shows you an upload limit, it is reporting WordPress’s own wp_max_upload_size() value: the smaller of upload_max_filesize and post_max_size. The plugin is not inventing a cap. It is telling you the PHP limit your host has configured.

One important detail: that number is PHP-only. Web-server, CDN, and firewall limits that sit in front of PHP (Nginx client_max_body_size, Cloudflare’s upload cap, mod_security, and similar) are not included in it. They can still reject a browser upload that is under the displayed number. More on that below.

How to Verify This Yourself

You do not have to take our word for it. Here are three ways to confirm the limit is coming from your server’s PHP configuration:

Method 1: Compare Site Health to the plugin display

Go to Tools → Site Health → Info → Server in your WordPress dashboard. Look for upload_max_filesize and post_max_size. The plugin displays the smaller of those two values, so the number on the Import screen should match the lower one.

Neither Site Health nor the plugin display shows limits outside PHP. If both say 512M and the upload still fails, an outer layer is blocking it; see the section on locked PHP and outer layers below.

Method 2: Optional confirm with phpinfo()

If you want a second look at the PHP values (or Site Health is unavailable), create a file called info.php in your WordPress root directory with this content:

<?php phpinfo(); ?>

Open it in your browser (yourdomain.com/info.php), search for upload_max_filesize and post_max_size. Delete the file when you are done. You do not need this step if Site Health already shows the values.

Method 3: Try it live

Visit the plugin directly on WordPress.org: All-in-One WP Migration Preview.

On this demo environment, you can import a file as large as 2GB. Same plugin, different server, different limit. The plugin does not restrict the file size.

How to Increase the PHP Limit

There are several ways to increase your server’s PHP upload limit. Which method works depends on your hosting provider. After any change, re-check Tools → Site Health → Info → Server and the number on the Import screen.

Method 1: .htaccess (Apache servers)

Add these lines to the .htaccess file in your WordPress root directory:

php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300

Method 2: .user.ini (LiteSpeed, Nginx, or when .htaccess does not work)

Create or edit a .user.ini file in your WordPress root directory:

upload_max_filesize = 512M
post_max_size = 512M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300

Method 3: php.ini

If you have access to your server’s php.ini file, add or update these lines:

upload_max_filesize = 512M
post_max_size = 512M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300

Do not try to raise upload_max_filesize or post_max_size with @ini_set() in wp-config.php. Those directives are PHP_INI_PERDIR — PHP will not change them at runtime, so the lines look like a fix and do nothing.

Method 4: Hosting control panel

Many hosting providers let you change PHP settings through their control panel:

Method 5: Contact your hosting provider

If none of the above methods work, your hosting provider may have locked these settings. Contact their support and ask them to increase upload_max_filesize and post_max_size to 512M (or higher, if your .wpress is larger).

If raising PHP worked, you do not need anything else for the size limit. That is the free path: the plugin imports whatever your server allows.

What if PHP is locked or the outer layers still block the upload?

Sometimes increasing upload_max_filesize and post_max_size is not enough, or your host will not let you change them at all. The browser upload can still be blocked by layers that never show up in the plugin display or in Site Health — even when the number on the Import screen looks big enough:

These are not PHP settings. They are restrictions enforced by your server’s infrastructure, and most hosting providers do not give you access to change them. You can set your PHP upload limit to 512MB, see 512MB on the Import screen, and still get blocked at 100MB because a firewall or CDN rule is silently rejecting the request.

That is what the Unlimited Extension is for. It is not a plugin-side paywall on file size — the free plugin has no hardcoded import cap. Unlimited uses chunked transfer so each request stays under host infrastructure limits the user often cannot change. No single request is large enough to trip the usual body-size caps.

It works on every hosting provider we have tested because the restrictions never see a large single-request upload.

If an upload reaches 100% and then hangs, that is a different failure mode — see What to do when a file upload gets stuck at 100% during import.

If you search for “All-in-One WP Migration upload limit,” you will find dozens of articles claiming the plugin has a built-in 256MB or 512MB limit. This is incorrect.

This myth started because an older version of the plugin had a constant called AI1WM_MAX_FILE_SIZE in the source code. Hundreds of tutorials were written about how to modify this constant. Those tutorials still rank in Google and still get read, even though the constant was removed years ago.

The current version of the plugin has no hardcoded file size limit. The number you see is your host’s PHP upload cap (the smaller of upload_max_filesize and post_max_size), reported so you know what a browser upload will hit before you try.

SourceClaimed LimitActual Limit
Duplicator.com512MBYour server’s PHP upload limit
WPBeginner256MBYour server’s PHP upload limit
Themeisle300MBYour server’s PHP upload limit
Various tutorials512MBYour server’s PHP upload limit

For a deeper look at how this misinformation spread, see our honest comparison of All-in-One WP Migration vs Duplicator.

Frequently Asked Questions

Does the free plugin have an import size limit?

No. The free plugin imports files of any size that your server allows. The limit you see is from your host’s PHP configuration, not a hardcoded cap in the plugin.

Why does the plugin show a limit at all?

Because PHP will reject a file larger than upload_max_filesize or post_max_size. The plugin shows you the smaller of the two (via WordPress’s wp_max_upload_size()) so you know what to expect before you try to upload. It is not creating the limit. It is reporting it.

Site Health shows a different number than the plugin. Which is wrong?

They should agree. Site Health lists both PHP values; the plugin shows the smaller of the two. If Site Health says 512M for both and the Import screen still says 64M, the new values have not taken effect — check for a cached admin page, an edit to the wrong file, or a host-level override, then re-check. Note that neither display includes web-server, CDN, or firewall limits; those never appear inside WordPress, which is why an upload can still fail below the displayed number.

Will the Unlimited Extension help if I already increased my PHP settings?

If you successfully increased your PHP settings and the import works, you do not need the Unlimited Extension. It is for cases where PHP is locked, or host infrastructure still blocks a single large browser upload after PHP is raised.

Can I upload the .wpress file over FTP/SFTP into wp-content/ai1wm-backups and restore it from the Backups screen instead?

Not with the free plugin. Restoring a .wpress file from the Backups screen is a Pro/Unlimited feature. The free plugin’s import path is the browser upload on the Import screen, which is why raising PHP is the free fix and the Unlimited Extension is the fix when PHP cannot be raised.

I increased the PHP settings but the limit did not change. Why?

Some possible reasons:

Contact your hosting provider’s support team. They can tell you which PHP settings are locked and whether they can increase them. If PHP cannot be raised, the Unlimited Extension bypasses the caps you cannot edit.

The plugin shows a big enough limit, but my upload still fails. Why?

The plugin display only reflects PHP. Web-server and edge limits (Nginx client_max_body_size, Apache LimitRequestBody, Cloudflare’s plan upload cap, mod_security, and similar) sit in front of PHP and are not visible anywhere in WordPress. If your file is under the displayed limit and the upload is still rejected, one of those layers is the blocker. Ask your host whether they can raise it; if they cannot, the Unlimited Extension sidesteps it with chunked transfer.