How to Increase WordPress Max Upload Size (5 Easy Methods)

If you’ve ever tried to upload a large PDF, video, or image to WordPress and seen “file exceeds the maximum upload size for this site”, your hosting environment has a cap on how big a single file can be. WordPress doesn’t set this limit itself; it’s enforced by PHP and the web server, and WordPress just shows you whatever number it’s been given.

This guide covers 5 ways to increase the WordPress max upload size, ranked from “no code, easiest” to “edit the server config, definitely works”. One of them will work on your hosting setup.


First, Check Your Current Upload Size Limit

Two quick ways to see your current limit:

  • Media uploader: go to Media -> Add New. WordPress shows the limit right under the upload area (“Maximum upload file size: 64 MB” or whatever your value is).
  • Site Health screen (more detailed): Tools -> Site Health -> Info, then expand the Server section. You’ll see upload_max_filesize, post_max_size, and memory_limit all in one place. These are the three PHP values that determine the real ceiling.
WordPress Media uploader showing the current maximum file upload size

The effective upload limit is the smallest of those three values. So if upload_max_filesize is 256MB but post_max_size is 64MB, your real limit is 64MB. Fixing the upload size usually means raising all three.


Method 1: Use Your Host’s Control Panel

The least technical option. Most hosting control panels (cPanel, Plesk, the dashboards from Bluehost, SiteGround, Hostinger, Kinsta, WP Engine) include a “Select PHP Version” or “PHP Settings” tool that lets you bump upload_max_filesize, post_max_size, and memory_limit with a dropdown.

If your host has this UI, it’s the right place to start. The change applies site-wide, survives WordPress updates and theme switches, and you don’t need SFTP. On managed WordPress hosts the limit is often already generous (Kinsta defaults to 128MB, WP Engine to 50MB, etc.), so check there before trying anything else.

If your host doesn’t expose those settings (some shared plans hide them), one of the next four methods will. Open a support ticket as a backup, since most hosts will raise the limit for you in a few minutes.


Method 2: Use a Plugin (No Code)

If you can’t access the host panel and aren’t comfortable editing files, the Tuxedo Big File Uploads plugin gives you a UI to raise the upload size from inside wp-admin:

Install + activate from Plugins -> Add New (search for “Tuxedo”), then go to Settings -> Big File Uploads:

Tuxedo Big File Uploads settings page
Tuxedo Big File Uploads settings

Set the max to whatever you actually need: 256MB for video, 32MB for typical PDFs. Leaving it unlimited is a security risk, so cap it.

The plugin works around the PHP limits by chunking large files into smaller upload requests. That makes it the right pick when your host’s hard cap is below what you need.


Method 3: Edit wp-config.php

WordPress’s own memory limit (separate from the PHP-level memory_limit) caps how much RAM a single page request can use. If your uploads are failing with a memory error rather than a size error, raising this helps. Add these two lines to wp-config.php above /* That's all, stop editing! */:

define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

The first line raises the front-end limit. The second raises the admin-side limit (which is what processes file uploads). Save the file and reload the upload screen.

Note that wp-config.php only controls the WordPress-level memory cap. PHP-level limits (upload_max_filesize, post_max_size) are set by the server config and need one of the next methods.


Method 4: Edit .htaccess (Apache / LiteSpeed Hosts)

If your host runs Apache or LiteSpeed (most cPanel-based shared hosts do), you can raise the PHP limits via your .htaccess file. Add these four lines outside the # BEGIN WordPress / # END WordPress block:

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

The four directives:

  • upload_max_filesize: the cap on a single uploaded file.
  • post_max_size: the cap on the entire POST request (must be larger than upload_max_filesize).
  • memory_limit: how much RAM PHP can use per request.
  • max_execution_time: max seconds a PHP script can run. Large uploads need more time.

If you get a 500 error after saving, your host has disabled php_value directives in .htaccess (some shared hosts do). Remove the lines and try Method 5 instead. If your host runs Nginx, .htaccess is ignored entirely; use Method 5 or 6.


Method 5: Edit php.ini

The most direct fix. php.ini is PHP’s main config file. Edit it and you change PHP’s behavior for the whole server. The location depends on your hosting setup. Check Site Health -> Info -> Server for “Loaded Configuration File” if you’re not sure.

The lines to update:

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

You’ll need to restart PHP-FPM (or Apache/Nginx) after editing for the changes to take effect. Most managed hosts do this automatically when you change values via their PHP settings UI; on a VPS or dedicated server you’ll run something like sudo systemctl restart php8.3-fpm.

If you don’t have access to php.ini directly (typical on shared hosting), some hosts let you create a .user.ini file in your WordPress root with the same directives. The plugin and host panel methods are easier on those setups.


Bonus: functions.php (Won’t Always Work)

You can try raising the limit from your theme’s functions.php file using ini_set():

@ini_set( 'upload_max_filesize', '256M' );
@ini_set( 'post_max_size', '256M' );
@ini_set( 'memory_limit', '512M' );
@ini_set( 'max_execution_time', '300' );
@ini_set( 'max_input_time', '300' );

This is the method most older tutorials show first. It works on some hosts and silently fails on others. upload_max_filesize in particular often can’t be changed at runtime via ini_set(); it’s a “PHP_INI_PERDIR” directive that has to be set in php.ini or .htaccess. Try it as a last resort if Methods 1-5 are blocked.

The other reason to skip this method: functions.php is theme-specific. Switch themes and your upload limit reverts. Methods 3, 4, and 5 survive theme switches.


Which Method Should You Use?

Ranked by what’s most likely to work without trial and error:

  • Managed WordPress host (Kinsta, WP Engine, Rocket.net, Pressable): use the host panel (Method 1) or open a ticket. Limits are usually generous, and editing files yourself can conflict with the platform.
  • Shared host with cPanel: use cPanel’s “Select PHP Version” / “MultiPHP INI Editor” (Method 1), then fall back to .htaccess (Method 4) if that’s not enough.
  • VPS or dedicated server: edit php.ini directly (Method 5) and restart PHP-FPM.
  • Can’t access any of the above: install Tuxedo Big File Uploads (Method 2). It chunks the upload to bypass the server limit.

Frequently Asked Questions

Why does WordPress have an upload limit at all?

It doesn’t, technically. The limit is enforced by PHP (upload_max_filesize, post_max_size) and the web server. WordPress just reads what those values are and shows them in the admin. Hosts set conservative defaults to protect their infrastructure from accidental large uploads, runaway scripts, and abuse.

What’s the difference between upload_max_filesize and post_max_size?

upload_max_filesize caps a single file. post_max_size caps the entire POST request, which can include multiple files plus form data. post_max_size must be larger than upload_max_filesize, otherwise the request fails before WordPress sees the file. Set them equal (or set post_max_size slightly larger) to avoid that.

My host says they raised the limit but the WordPress admin still shows the old number.

Either PHP-FPM hasn’t been restarted (the change isn’t live yet) or you’re hitting a different limit. Check Tools -> Site Health -> Info -> Server. If the new value shows there but WordPress still complains, the cap is coming from memory_limit or max_execution_time instead. Raise those too.

Should I just set the upload limit to 1GB and forget about it?

No. A larger upload limit means more memory used per request, longer-running uploads, and more risk of timeouts on visitors with slow connections. Raise the limit to what you actually need for a single file (256MB for typical video, 32MB for PDFs, 16MB for images) plus a small buffer. For multi-GB files, look at chunked-upload tools or upload directly to S3 / Cloudflare R2 / Bunny Storage and reference the file from WordPress.

Will any of this break my site?

The .htaccess method is the most likely to cause issues. If your host has disabled php_value directives, the lines produce a 500 error and the site goes down until you remove them. The fix is fast (delete the lines via SFTP). The wp-config.php and php.ini methods are very safe; the worst case is that the new limits don’t take effect.


Wrapping Up

Increasing the WordPress upload limit is almost always a 5-minute fix once you know which lever to pull. Start with your host’s panel (Method 1), fall back to .htaccess or php.ini if you have access, and reach for the Tuxedo Big File Uploads plugin if all else fails.

For the broader “where does this config live” picture, our pillars on wp-config.php, .htaccess, and functions.php cover what each file is for. If a config edit takes the site down, our white screen of death guide walks through recovery.

If you’re stuck after trying all five, your host’s support team can usually raise the limit for you in a few minutes. Let me know in the comments what worked (or didn’t).

Picture of Andy Feliciotti

Andy Feliciotti

Andy has been a full time WordPress developer for over 15 years. Through his years of experience has built 100s of sites and learned plenty of tricks along the way. Found this article helpful? Buy Me A Coffee

4 Responses

  1. yeah! this plugin is awesome , When I didn’t know about it, faced this problem many times and after searching a bunch of blog and YouTube channel I found this plugin. Thanks for the article.

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Tips Monthly
Get the latest from SmartWP to your inbox.