Experiencing slow uploads in WordPress? How to fix it fast

By Alexandru Bucsa Posted Category Guides and resources Topics Performance optimization, WordPress,

There are few things more frustrating than watching a simple file upload crawl to a halt in your WordPress dashboard. That spinning icon can feel like it’s mocking you, slowing down your workflow and killing your productivity. The good news? You’re not alone, and this is almost always a fixable problem.

Slow uploads are a symptom, not the disease. The root cause can range from something as simple as an unstable internet connection to a poorly configured server or a subtle plugin conflict. This guide is designed to be the only resource you’ll need to systematically diagnose the root cause and fix it for good.

Here at TeamUpdraft, the creators of performance-driven plugins like WP-Optimize, we’ve helped millions of users build faster, more reliable websites. We live and breathe WordPress performance, and we’re here to walk you through every step of the process.

Key takeaways: your quick-fix checklist

Section titled Key takeaways: your quick-fix checklist

If you’re short on time, here are the most common culprits and their solutions. Work through this list first, and you might solve your problem in minutes.

  • Check the obvious first: Is your local internet connection stable? Try uploading a different, smaller file to rule out a corrupted original or a network issue on your end.
  • Compress your images: Large, unoptimized images are the number one cause of slow uploads. Use a tool to compress them before you upload them to WordPress.
  • Temporarily disable plugins: A recent plugin addition or update could be the culprit. Use the free Health Check plugin to test for conflicts without affecting your site’s visitors.
  • Increase PHP memory limit: Your server might not be allocating enough memory for WordPress to process uploads efficiently. A quick edit to your wp-config.php file can often solve this. We would always recommend a memory limit of at least 512MB
  • Update everything: Make sure your WordPress core, theme, and all plugins are running their latest versions. Updates often include performance improvements and bug fixes that can resolve compatibility issues.
  • Using WordPress 6.8 or newer? A recent change in how WordPress processes images can cause significant delays after uploading. There’s a specific fix for this, which we cover in detail in Part 4 of this guide.

How to fix slow WordPress uploads (step by step)

Section titled How to fix slow WordPress uploads (step by step)

If the quick fixes didn’t work, it’s time to dig deeper. We’ve structured this guide as a logical funnel, starting with the simplest checks and moving toward more technical solutions. Follow these steps in order to find and fix your issue efficiently.

Before you start making changes to your WordPress site, it’s crucial to eliminate external factors. This is about isolating the problem to ensure you’re working on the right thing.

Is It you, or Is It the Site? First, let’s rule out issues on your end.

  1. Test your internet speed: Run a speed test to check your upload speed. A slow or unstable local connection will naturally lead to slow uploads to any server.
  2. Try a different network: If possible, connect to a different Wi-Fi network or use a mobile hotspot to see if the issue persists. This can help rule out problems with your router or internet service provider.
  3. Use a different browser: Browser extensions, especially ad blockers or security tools, can sometimes interfere with WordPress scripts. Try uploading your file using a different browser (like Chrome, Firefox, or Safari) or in an incognito/private window, which typically disables extensions. If the upload is fast, you’ve found the culprit: a problematic browser extension.

The golden rule: optimize images before you upload

Section titled The golden rule: optimize images before you upload

This is the single most important habit you can adopt for a faster WordPress site. When you upload an image, your server has to do a lot of work. It receives the file, and then WordPress processes it, creating multiple smaller versions (thumbnail, medium, large, etc.). The larger the original file, the more server resources (like CPU and RAM) are needed, which directly translates to longer processing times and slower uploads.

Many guides suggest using a plugin to optimize images after they are uploaded. While this is excellent for your website’s front-end speed, it doesn’t solve the initial slow upload problem. The initial transfer and processing of a massive file is the bottleneck.

The most effective workflow is a hybrid one: perform basic optimization before uploading to speed up the initial process, and then let a powerful plugin handle the rest automatically.

Mini-guide to pre-upload optimization

  • Resize your images: Never upload a 5000-pixel wide photo straight from your camera for a blog post that only needs a 1200-pixel wide image. Resize your images to a sensible dimension for their intended use. A good rule of thumb is to make them no more than 1.5 to 2 times the width of your site’s main content area. For most blogs, 1600px to 2000px wide is more than enough.
  • Compress for the web: Compression reduces file size with minimal impact on visual quality. You can use free online tools like TinyPNG or desktop software like GIMP to do this. The goal is “visually lossless” compression—the file is much smaller, but the human eye can’t spot the difference.
  • Use Next-Gen formats (WebP/AVIF): Modern image formats like WebP offer superior compression compared to traditional JPEGs and PNGs, resulting in significantly smaller file sizes. WordPress has supported WebP natively since version 5.8. Many optimization plugins can automatically convert your uploaded images to WebP and serve them to compatible browsers, providing a fallback to the original format for older browsers.

Step 2: Diagnosing your WordPress environment (The usual suspects)

Section titled Step 2: Diagnosing your WordPress environment (The usual suspects)

If you’ve ruled out local issues and optimized your files, the next place to look is within your WordPress installation itself.

The plugin & theme conflict test (your safest next step)

Section titled The plugin & theme conflict test (your safest next step)

Poorly coded or conflicting plugins are a very common cause of WordPress issues, including slow uploads. A plugin might be performing a heavy task during the upload process (like scanning the file for malware or adding a watermark), or a recent update may have introduced an incompatibility.

The best way to test for this is with the Health Check & Troubleshooting plugin. It allows you to create a “clean” WordPress session where all plugins are disabled and the theme is switched to a default one, but only for you. Your site visitors will see the normal site, making it safe to use on a live website.

  1. Backup First! Before you begin troubleshooting, it is essential to have a recent, reliable backup of your site. A simple mistake can cause big problems, and a backup is your safety net. Use a trusted plugin like UpdraftPlus to create a complete backup in just a few clicks.
  2. Install and activate the Health Check plugin from the WordPress repository.
  3. Navigate to Tools → Site Health in your dashboard and click the Troubleshooting tab.
  4. Click Enable Troubleshooting Mode. This will deactivate all plugins and switch you to a default theme for your session only.
Troubleshooting settings inside the Health Check plugin
  1. Now, try uploading a file. If it’s fast, you’ve confirmed the problem is either a plugin or your theme.
  2. Go to Plugins → Installed Plugins. You’ll see an option to enable each plugin one by one within troubleshooting mode.
  3. First, re-enable your theme. Test the upload again. If it’s slow, the issue is with your theme.
  4. If the theme is fine, re-enable your plugins one by one, testing the upload after each activation. When the slowness returns, the last plugin you activated is the culprit. You can then decide whether to find a replacement, contact the developer for a fix, or check for an update.
  5. Once you’re done, click Disable Troubleshooting Mode in the admin bar to return to normal.

Is your database dragging you down?

Section titled Is your database dragging you down?

Every action you take in WordPress, including uploading a file, involves your website’s database. When you upload an image, WordPress writes information about it—like its file name, dimensions, and alt text—into the database tables (wp_posts and wp_postmeta).

Over time, your database accumulates a lot of digital clutter: old post revisions, spam comments, data from uninstalled plugins, and temporary options called “transients”. This bloat forces the database to work harder and respond more slowly to queries. A slow, bloated database can therefore make your entire admin dashboard feel sluggish, and it can add precious seconds to the final step of the upload process when WordPress is trying to save the file’s metadata.

If your site has been running for a while, it’s likely carrying some database baggage. Cleaning this up is one of the most effective ways to speed up your entire admin dashboard, including media uploads. While you can do this manually with tools like phpMyAdmin, it’s risky for non-developers. A safer and much faster way is to use a dedicated plugin.

Give your WordPress site a performance boost

Keep your database lean and your site running at top speed with WP-Optimize, the powerful optimization plugin trusted by over 1 million users. Clean your database, remove old revisions, and optimize your tables in just a few clicks.

Step 3: Server and configuration deep dive (the technical fixes)

Section titled Step 3: Server and configuration deep dive (the technical fixes)

If your issue persists, it’s time to look at the foundation of your site: the server and its configuration. These problems often boil down to “resource starvation,” where WordPress simply doesn’t have enough power to do its job.

The type of hosting you use has a massive impact on performance. If you’re on a cheap shared hosting plan, your website is sharing server resources (CPU, RAM) with hundreds of other sites. If another site on that server gets a sudden traffic spike, it can consume all the available resources, leaving your site to struggle—this is known as the “noisy neighbor” effect.

Think of it this way:

  • Shared hosting is like an apartment building with shared utilities. When everyone showers at 8 AM, the water pressure drops for everyone.
  • A Virtual Private Server (VPS) is like a townhouse. You’re still in the same complex, but you have your own dedicated water line, so your pressure is always consistent.
  • Managed WordPress hosting is like that same townhouse, but with a concierge who ensures your plumbing is perfectly optimized for peak performance at all times.

Shared vs VPS vs managed WordPress hosting: key differences

Section titled Shared vs VPS vs managed WordPress hosting: key differences

This table breaks down the key differences:

Feature Shared Hosting VPS Hosting Managed WordPress Hosting
Performance Variable; affected by “noisy neighbors” Dedicated resources; consistent performance Highly optimized for WordPress; server-level caching
Control Low; limited by provider’s configuration High; full root access for custom configurations Medium; optimized environment, some restrictions for stability
Maintenance Handled by host User’s responsibility (updates, security) Handled by host (core/security updates, performance tuning)
Best For Beginners, low-traffic sites, tight budgets Developers, high-traffic sites needing custom software Users wanting maximum performance without server management

Giving WordPress more power (increasing PHP limits)

Section titled Giving WordPress more power (increasing PHP limits)

WordPress runs on a programming language called PHP, which has its own resource limits set at the server level. When you upload and process a large image, you can easily hit these limits, causing the upload to fail or time out. The key directives to check are:

  • upload_max_filesize: The maximum size for any single file you upload.
  • post_max_size: The maximum size of all data sent in a single request. This must be larger than upload_max_filesize.
  • memory_limit: The amount of RAM a single PHP script can use. Resizing images is memory-intensive.
  • max_execution_time: The maximum time in seconds a script can run before it’s terminated.

CRUCIAL: Before you edit a single line of code, create a full backup. A typo in a core configuration file can take your entire site offline. Use UpdraftPlus to secure a complete, restorable backup in minutes. It’s your one-click insurance policy.

First, check your current limits by going to Tools → Site Health → Info → Server in your WordPress dashboard. If the values seem low (e.g., memory_limit of 64M), you can try increasing them using one of the following methods.

Method 1: Edit wp-config.php (recommended)

This is the safest and most common way to increase the memory available specifically to WordPress.

  1. Connect to your site using an FTP client (like FileZilla) or your host’s File Manager.
  2. Locate the wp-config.php file in your site’s root directory.
  3. Download a copy of the file as a backup.
  4. Open the file and add the following line just before /* That's all, stop editing! Happy publishing. */:
define('WP_MEMORY_LIMIT', '512M');
  1. Save the file and upload it back to your server, overwriting the original.

Method 2: Edit .htaccess

If the first method doesn’t work, and your server runs on Apache, you can try adding directives to your .htaccess file.

  1. Find the .htaccess file in your root directory (you may need to show hidden files).
  2. Download a backup copy.
  3. Add these lines to the bottom of the file:
php_value upload_max_filesize 64M
php_value post_max_size 128M
php_value memory_limit 512M
php_value max_execution_time 900
  1. Save and re-upload the file.

If any of these methods cause an error, simply restore the backup version of the file you saved. If they don’t seem to have an effect, it means your hosting provider doesn’t allow you to override these settings, and you’ll need to contact their support to ask for an increase.

When all else fails, bypass the browser

Section titled When all else fails, bypass the browser

For exceptionally large files (like videos or high-resolution photo galleries), it’s often better to bypass the WordPress media uploader entirely. Using an FTP/SFTP client like FileZilla allows you to upload files directly to your wp-content/uploads folder, avoiding PHP and browser limitations.
This is also an excellent diagnostic tool. If an FTP upload is fast but the WordPress uploader is slow, you can be certain the problem lies within your WordPress/PHP environment and not with your network or server hardware.

Step 4: The expert-level fix for a very specific problem

Section titled Step 4: The expert-level fix for a very specific problem

If you’ve tried everything above and are still experiencing issues, you might be running into a very specific problem introduced in a recent version of WordPress. This is where most generic guides fall short.

Are You using WordPress 6.8+? The asynchronous upload bottleneck

Section titled Are You using WordPress 6.8+? The asynchronous upload bottleneck

In WordPress version 6.8, the core development team changed how image processing works.

Previously, when you uploaded an image, WordPress would create all the different sizes (thumbnail, medium, etc.) synchronously -meaning, it did it all at once before telling you the upload was complete.

Starting with 6.8, this process was moved to the background and made asynchronous. The system now accepts your file quickly and then adds the image resizing tasks to a queue managed by the “Action Scheduler”.

In theory, this should make the admin feel faster. In reality, it created an “illusion of slowness.” Your file uploads, but the necessary thumbnails aren’t generated for several minutes. When you try to insert the image into a post, it might not be available, or it might appear incorrectly. The upload isn’t actually slow, but the processing is delayed.

The root cause isn’t a lack of server resources; it’s a flawed prioritization logic. WordPress 6.8 assigned these critical image processing tasks a low priority (a value of 10), putting them in the same queue as non-urgent maintenance tasks like checking for plugin updates. This is why increasing your PHP memory limit won’t fix this specific problem.

The solution(s)

You have two ways to fix this and tell WordPress to prioritize your image uploads.

  1. The code fix (for developers): You can add a simple filter to your theme’s functions.php file or a custom plugin to change the priority. As noted by WordPress performance experts, this is a highly effective solution. Joost de Valk, founder of Yoast SEO, highlights that “overriding the default action priorities using WordPress filters” is a powerful way to improve media processing speeds.
add_filter( 'wp_async_task_priority', function( $priority, $hook ) {
    if ( strpos( $hook, 'wp_generate_attachment_metadata' )!== false ) {
        return 5; // A lower number means higher priority. Default is 10.
    }
    return $priority;
}, 10, 2 );
  1. The easy fix (for everyone): A much simpler, no-code solution is to use a free plugin designed specifically to address this issue. The Queue Optimizer plugin correctly re-prioritizes the image processing queue and optimizes the Action Scheduler to work through tasks more frequently. Simply install and activate it, and the problem should be resolved.

Conclusion & best practices for the future

Section titled Conclusion & best practices for the future

A slow WordPress site isn’t something you have to live with. By working through this guide, you’ve learned how to diagnose upload issues methodically: starting with your own computer, moving to the WordPress application, then the server, and finally checking for version-specific bugs.

To prevent slow uploads from happening again, adopt these proactive performance habits:

  • Always optimize images first: Make pre-upload resizing and compression a non-negotiable part of your content workflow.
  • Perform regular database maintenance: Use WP-Optimize to schedule weekly or monthly database cleanups. A lean database means a snappy admin dashboard.
  • Keep a lean plugin library: Audit your plugins quarterly. If you don’t use a plugin, deactivate and delete it to reduce potential conflicts and security risks.
  • Automate your backups: Peace of mind is priceless. Set up a regular, automated backup schedule with UpdraftPlus to a secure, remote location like Google Drive or Dropbox. This ensures you can always recover from any issue, planned or unplanned.
  • Stay updated: Always run the latest versions of WordPress, your theme, and your plugins—but always run a backup first!

By following these steps, you’ve not only fixed your slow upload problem but also gained a deeper understanding of how your site works. With the right tools and practices, you can ensure your WordPress experience is fast, efficient, and frustration-free.

Keep your WordPress site running fast and frustration-free

Slow uploads are just one sign your site needs a tune-up. WP-Optimize keeps your database clean and your site performing at its best, so you can stay focused on what matters.

Why are my uploads so slow in WordPress?

Slow uploads in WordPress are often caused by large image sizes, plugin conflicts, or limited server resources. Try compressing images, disabling plugins one by one, and checking your hosting plan’s PHP memory limit.

How do I speed up media uploads in WordPress?

To speed up media uploads in WordPress, resize and compress your images before uploading, increase your PHP memory limit, and optimize your database with a plugin like WP-Optimize. Upgrading to better hosting can also improve upload speeds.

Does WordPress 6.8 cause slow image uploads?

Yes, WordPress 6.8 introduced an asynchronous upload process that can delay image processing. The upload completes quickly, but image thumbnails may take time to generate. Installing the free Queue Optimizer plugin can resolve this issue.

How do I fix slow WordPress uploads after a site migration?

Slow uploads after migration can happen if file permissions, PHP settings, or server configurations differ between hosts. Check your file upload limits, verify correct folder permissions, and make sure your new server uses the latest PHP version.

How do I know if a plugin is causing slow uploads in WordPress?

Use the free Health Check & Troubleshooting plugin to temporarily disable all plugins for your session. Then, re-enable them one by one while testing uploads – this helps identify which plugin is causing the slowdown.

About the author

Picture of Alexandru Bucsa, the product manager for All-In-One Security

Alexandru Bucsa

Alex is our All-In-One Security Product Manager. With more than six years of WordPress experience, he listens closely to what users need and works hard to make AIOS even better. Drawing on his background in forensic investigations, Alex loves diving into problems to understand their causes and find practical fixes that truly help our community.

WP-Optimize

Get all our premium features. Lazy loading, pre-load key requests, Cloudfare integration. Optimize individual tables, delete unused images and more.

From just $49 for the year.

More stories

Our plugins

Try TeamUpdraft’s full suite of WordPress plugins.

  • UpdraftPlus

    Back up, restore and migrate your WordPress website with UpdraftPlus

  • WP-Optimize

    Speed up and optimize your WordPress website. Cache your site, clean the database and compress images

  • UpdraftCentral

    Centrally manage all your WordPress websites’ plugins, updates, backups, users, pages and posts from one location

  • Burst Statistics

    Privacy-friendly analytics for your WordPress site. Get insights without compromising your visitors’ privacy