"Destination Folder Already Exists" in WordPress: 4 Fixes (2026)
Disclosure: some links on this page are affiliate links. We may earn a commission at no extra cost to you. How we test and rate hosts.
"Destination folder already exists" means WordPress found a ghost. A folder with that plugin/theme name is already sitting in wp-content, and WordPress won't overwrite it. The fix is always the same: delete the leftover folder, retry the install. The only question is how you delete it safely.
Why the Folder Is There
Three scenarios create the orphan:
- -Failed install: the zip extracted, the folder got created, then the install died (timeout, upload limit, connection drop) - leaving a half-populated folder
- -Manual deletion: you deleted via FTP instead of wp-admin's Plugins > Delete, which removes the folder cleanly
- -Failed update: a mid-update crash left both the old folder and a temp folder behind
Fix 1: Check If the Plugin Is Still Active
Before deleting anything: wp-admin > Plugins > Installed Plugins. If the plugin is listed and active, deactivate it first - deleting the folder of an active plugin can white-screen the frontend. If it's listed as inactive or not listed at all, the folder is an orphan and safe to remove.
Fix 2: Delete the Folder via FTP
Connect via FTP (FileZilla, or your host's File Manager):
- 1.Navigate to
wp-content/plugins/(orwp-content/themes/for themes) - 2.Find the folder matching the plugin name exactly (e.g.,
woocommerce) - 3.Right-click > Delete (or rename to
woocommerce-oldif you want a safety copy first) - 4.Retry the install - it now extracts into a fresh folder
Fix 3: File Manager Instead of FTP
No FTP credentials handy? cPanel > File Manager (or hPanel's equivalent) does the same job in the browser. Navigate to the same path, select the folder, delete. Same result, no FTP client needed.
Fix 4: If It Keeps Recurring - Fix the Root Cause
This error repeating on the same plugin means installs keep dying mid-way. Check your actual PHP limits via Tools > Site Health > Info > Server:
- -
upload_max_filesizebelow your zip size = upload limit fix - -
max_execution_timeat 30s with slow disk = execution time fix
Fix the underlying limit and installs stop dying mid-extract - the error stops on its own.
The Manual Install Bypass
When the wp-admin uploader keeps failing, skip it: unzip the plugin/theme on your computer, upload the folder via FTP to wp-content/plugins/ (or themes), then activate in wp-admin. No extraction step on the server = no half-created folders, no size limits. This also works for premium plugins that don't live in the directory.
Uploads That Don't Die Halfway
Failed extracts usually trace back to tight server limits. Bluehost's defaults handle standard plugin/theme zips without mid-install deaths - and File Manager is one click away when you need to clean up manually. From $3.99/mo.
Get Reliable HostingRelated: "link you followed has expired" fix - HTTP error on uploads - 500 internal server error - stuck in maintenance mode.
What are you building?
Tell us about your project so we can match the perfect hosting plan.
Hosting Cost Calculator
See exactly how much you'll spend on hosting over time. Compare Bluehost vs popular alternatives and discover your potential savings.
Used to calculate transaction fees (Shopify charges 2% on sales)
Frequently Asked Questions
What causes 'Destination folder already exists'?
WordPress found a folder with that plugin/theme name already sitting in wp-content/plugins or wp-content/themes. It happens when a previous install died mid-upload, you deleted the plugin via FTP instead of wp-admin, or a failed update left the folder behind - WordPress refuses to overwrite it.
What's the fastest fix?
Delete the leftover folder. Via FTP or File Manager: go to wp-content/plugins (or themes), find the folder matching the plugin name, rename or delete it, then retry the install. If the plugin was active, deactivate it properly in wp-admin first.
Is it safe to delete the folder?
If the plugin is inactive in wp-admin, yes - the folder is an orphan and deleting it removes nothing functional. If the plugin still shows as active, deactivate it first via Plugins > Installed Plugins. Deleting an active plugin's folder can cause errors on the frontend.
Why does it keep happening on the same plugin?
Usually failed installs due to upload limits or timeouts - the zip extracts partway, the folder gets created, the install dies, and every retry hits the leftover folder. If it happens repeatedly, check your upload limits and max_execution_time.
Can I fix it without FTP?
Yes - cPanel/hPanel File Manager works identically (navigate to wp-content/plugins, delete the folder). Some hosts' file managers are even easier than FTP for this. There are also file manager plugins, but FTP is cleaner if you already have access.
Will deleting the folder lose my settings?
No - plugin settings live in the database (wp_options), not in the plugin folder. Deleting and reinstalling the plugin preserves your configuration in almost all cases. Exceptions are rare plugins that store data in their own folder.
Ready to launch?
Get Bluehost from $3.99/month with a free domain, free SSL, and 30-day money-back guarantee.
Related Articles
Bluehost vs Competitors: The Technical Deep Dive
We ran 47 benchmarks over 90 days. Here's the raw data on why Bluehost dominates.
Fix ERR_TOO_MANY_REDIRECTS in WordPress (2026): The 6 Real Causes
ERR_TOO_MANY_REDIRECTS means an infinite redirect loop. Match your Site URLs, fix Cloudflare SSL mode, reset .htaccess, kill plugin conflicts - step-by-step with code.
WordPress 403 Forbidden Error: 7 Fixes That Actually Work (2026)
403 means the server understood you but refuses to serve the page. Fix file permissions (755/644), regenerate .htaccess, kill security plugin blocks - in the right order.
Fix 502 Bad Gateway in WordPress (2026): Diagnose First, Then Fix
502 means the gateway got a bad response from your server - usually PHP timeouts, CDN issues, or overload. A 9-step diagnostic workflow from browser checks to server logs.
Fatal Error: Maximum Execution Time Exceeded - 6 Fixes (2026)
max_execution_time kills slow updates at 30-60s. Fix the culprit plugin/theme first, then raise the limit via wp-config, .htaccess or php.ini - with exact code.
HTTP Error Uploading Images in WordPress: 9 Fixes Ranked (2026)
The vague 'HTTP error' on image upload usually means memory limits or Imagick. Fix order: rename the file, bump memory, force GD library, check permissions - with code.