Next-Level Code. Nexuvibe Style ...

Hrs
Min
Sec
Step-by-Step Setup Guide & Quick Start

The 15-Minute Setup: Offloading
Your First 10,000 Images to FTP

Every guide about WordPress media offloading tells you why to do it. This one tells you exactly how, step by step, with the specific settings, the exact fields to fill in, and what to check at each stage. By the time you finish reading, you will have everything you need to go from zero to fully offloaded today.

12 min read
Updated 2026
Practical How-To Guide
15-minute WordPress FTP media offload setup guide showing step by step how to offload 10000 images from hosting to FTP storage with CDN delivery

Every piece of content about WordPress media offloading covers the same ground: why your hosting server should not store image files, why S3 egress fees are expensive, why CDN delivery improves LCP scores. All of that is true and worth understanding. But at some point you have read enough analysis and you want to actually do the thing. You want to open the WordPress dashboard, install the plugin, connect it to a storage server, and watch your uploads directory empty out.

This guide is that guide. It covers the complete setup from start to finish: choosing and setting up your FTP storage server, choosing your CDN, installing and configuring WP FTP Media, running the bulk sync of your existing library, and verifying that everything is working correctly. The active configuration steps take roughly 15 minutes. The bulk sync of an existing library runs in the background and takes as long as it takes depending on library size and connection speed.

By the end of this guide, your WordPress media library will be on an FTP server, your images will be served via CDN, your hosting server’s uploads directory will be empty, and new uploads will automatically follow the same path. The entire ongoing cost will be a few dollars per month. Let us walk through it.

What you will have after completing this guide
A dedicated FTP storage server holding all your WordPress media files.
A CDN delivering your images from edge nodes close to your visitors.
Your existing media library fully transferred to FTP with local copies removed.
All new WordPress media uploads automatically routing to FTP going forward.
Your hosting server’s uploads directory empty, with no storage pressure regardless of future catalog growth.
Faster page load times and improved LCP scores from CDN edge delivery.

Before you begin: what you need

The complete setup requires three things: a WordPress site with admin access, a dedicated FTP or SFTP storage server, and a CDN account. The WordPress site you already have. The FTP server and CDN account take five to ten minutes to set up. Here is exactly what to get and where to get it.

FTP storage server options

For most WordPress sites, any of these providers works well. Sign up, choose a storage plan that gives you at least twice your current uploads directory size (to accommodate future growth), and note the connection credentials you receive: FTP/SFTP hostname, username, and password.

Hetzner Storage Box
100GB for $3.81/mo
1TB for $6.00/mo
Best value

IONOS HiDrive
100GB for $4/mo
2TB for $9/mo
Easy setup

Contabo Storage
250GB for $3.99/mo
1TB for $9.99/mo
High capacity

CDN options

Your CDN will pull files from your FTP server and deliver them to visitors from edge nodes worldwide. Create an account, set up a pull zone with your FTP server’s web-accessible URL as the origin, and note the CDN subdomain or custom domain you receive. This becomes your CDN base URL in the plugin settings.

BunnyCDN
$0.01/GB delivery
Global edge network
Recommended

Cloudflare
Free plan available
Zero egress with R2
If already using CF

KeyCDN
$0.04/GB delivery
Simple setup
Alternative

Time estimate before starting
FTP server signup and credential receipt: 5–10 minutes. CDN account setup and pull zone configuration: 5–10 minutes. Plugin installation and configuration: 10–15 minutes. Total active setup time: 20–35 minutes. The bulk sync of your existing library runs unattended in the background and is not included in this estimate.

Phase 1: Set up your FTP storage server (5–10 minutes)

1
Sign up for a storage provider and choose a plan

Go to your chosen provider (Hetzner, IONOS, or Contabo) and sign up for a storage plan. Choose a plan that provides at least twice your current uploads directory size. If your uploads directory is 8GB, choose a 20GB or larger plan. The extra headroom accounts for future library growth.

2
Note your FTP credentials

After setup, you will receive three pieces of information: the FTP hostname (e.g., u123456.your-storagebox.de or similar), a username, and a password. Write these down or save them in your password manager. You will enter these into the plugin shortly. Also note whether the provider supports SFTP (encrypted transfer) in addition to FTP — SFTP is preferred for security.

🔗For e-commerce stores, the ability to offload WooCommerce product images via FTP can drastically reduce server load and improve page load speeds. →

3
Confirm the server has a web-accessible URL (for CDN origin)

For your CDN to pull files from your FTP server, the server needs to be accessible via HTTP or HTTPS, not just via FTP protocol. Most storage providers give you a web URL alongside the FTP credentials. For Hetzner storage boxes, this looks like https://u123456.your-storagebox.de/. Confirm you have this URL before proceeding to CDN setup.

Phase 2: Set up your CDN (5–10 minutes)

4
Create a BunnyCDN account and add a pull zone

Sign up at BunnyCDN, add a pull zone, and set the Origin URL to your FTP server’s web-accessible URL (the HTTPS URL from Step 3). BunnyCDN will create a CDN hostname for your pull zone, which looks like your-zone-name.b-cdn.net. This CDN hostname is your CDN base URL. Alternatively, you can configure a custom subdomain like cdn.yourdomain.com pointing at the BunnyCDN hostname via a CNAME DNS record, which is recommended for production sites.

5
Note your CDN base URL

Your CDN base URL is what will replace the domain in your WordPress image URLs. It will be either your-zone-name.b-cdn.net or cdn.yourdomain.com if you set up a custom subdomain. Example: if your current image URL is https://yoursite.com/wp-content/uploads/2024/product.jpg, after offloading and setting the CDN base URL to cdn.yourdomain.com, it will become https://cdn.yourdomain.com/wp-content/uploads/2024/product.jpg. Write down or copy this URL exactly as you will enter it in the plugin.

Phase 3: Install and configure WP FTP Media (10–15 minutes)

6
Install WP FTP Media on your WordPress site

Purchase and download WP FTP Media from NEXU WP. In your WordPress admin, go to Plugins → Add New → Upload Plugin, select the downloaded zip file, and click Install Now. Activate the plugin. A new menu item will appear in your WordPress admin sidebar.

7
Configure the Connection tab

Navigate to the WP FTP Media settings panel and open the Connection tab. Fill in these fields exactly:

Protocol: SFTP (preferred) or FTP
Host: Your FTP server hostname (e.g., u123456.your-storagebox.de)
Port: 22 for SFTP, 21 for FTP (check your provider’s documentation)
Username: Your FTP username
Password: Your FTP password
Remote Root Path: / or a subdirectory if you want to organize files (e.g., /wordpress/)

8
Test the connection

Click the Test Connection button. The plugin will attempt to connect to your FTP server and verify write access. If the test succeeds, you will see a success confirmation. If it fails, double-check the hostname, port, username, and password. Common issues: incorrect port number (try 22 for SFTP or 21 for plain FTP), password copied with a trailing space, or firewall blocking the connection from your hosting server’s IP.

🔗By offloading media files to an external server, you can dramatically speed up WordPress site migration without waiting hours for image transfers. →

9
Configure the URL tab

Open the URL tab in the plugin settings. This is where you configure CDN delivery.

Enable URL Rewriting: Turn this on
CDN Base URL: Enter your CDN domain exactly (e.g., https://cdn.yourdomain.com or https://your-zone.b-cdn.net)
Rewrite Scope: Enable all contexts — post content, widget output, theme images, WooCommerce images if applicable

Do not save yet. You will save after configuring the Upload tab in the next step.

10
Configure the Upload tab

Open the Upload tab and configure automatic upload behavior for new media.

Auto Upload on New Media: Enable this
Allowed File Extensions: Leave default (jpg, jpeg, png, gif, webp, svg, pdf) or customize as needed
Delete Local Copy After Upload: Leave this OFF for now — you will enable it after verifying the bulk sync worked correctly
Save all settings before proceeding


WP FTP Media upload tab settings showing auto upload configuration and local file deletion option for WordPress FTP media offload quick start setup

Upload settings in WP FTP Media – WordPress auto FTP upload configuration plugin for setting up automatic media routing in first-time offload setup — enable auto upload and configure file types before running the bulk sync.

Phase 4: Run the bulk sync (unattended background time)

11
Navigate to the Sync tab and start the transfer

Open the Sync tab. You will see your library scanned to show how many files are eligible for transfer. Choose Browser Mode for parallel transfers (faster, but requires keeping the browser tab open) or Background Mode (slower per file, but runs without a browser tab). For a library of 10,000 images, Browser Mode with parallel uploads is recommended as it completes significantly faster.

12
Monitor the transfer progress

The progress view shows files transferred, files remaining, and any errors. A library of 10,000 images runs at approximately 100–400 files per minute depending on server speed and connection quality. Rough time estimates:

1,000 files
3–10 min

10,000 files
25–100 min

50,000 files
2–8 hours


WP FTP Media browser mode sync showing parallel transfer progress for offloading 10000 WordPress images to FTP storage in first time setup

Browser mode sync in WP FTP Media – WordPress first-time media offload sync plugin showing parallel transfer progress for 10000 image library migration to FTP — this is what you watch during the bulk transfer. Files counter increases in real time.

Phase 5: Verify and finalize (10 minutes)

13
Verify images are loading from the CDN

Once the sync completes, visit several pages of your site — the homepage, a product page if you have WooCommerce, and a post with images. Right-click on any image and select “Open image in new tab” or use your browser’s developer tools (Network tab, filter by Images) to check the URL of each image. All image URLs should now show your CDN domain (e.g., cdn.yourdomain.com) rather than your hosting domain. If you see CDN URLs, the setup is working.

14
Enable local file deletion

Once you have confirmed images are loading correctly from the CDN, go back to the Upload tab in the plugin settings and enable “Delete Local Copy After Upload.” Save. This setting applies to new uploads going forward. To remove the local copies of already-synced files, you can use the cleanup function if available, or delete the contents of your wp-content/uploads directory manually after confirming everything is on the FTP server.

🔗Offloading images to an FTP server not only reduces server load but can also dramatically improve WordPress Core Web Vitals scores by accelerating page delivery. →

15
Verify the Monitor tab shows a healthy status

Open the Monitor tab in the plugin. This screen shows the current connection status, system requirements check, and any warnings. All indicators should show green or passing status. If you see any warnings here, address them before relying on the automatic upload feature for new media. The Monitor tab is your ongoing health check screen, worth revisiting after any server changes.


WP FTP Media monitor tab showing green health indicators after successful first-time FTP media offload setup confirming system is working correctly

Post-setup health check in WP FTP Media – WordPress FTP offload completion verification plugin showing system health after first-time 10000 image library migration — all green here means your setup is complete and working correctly.

WordPress site frontend loading images from CDN after successful FTP offload setup showing images displaying correctly with CDN URLs

Live site result in WP FTP Media – WordPress FTP media offload result showing live CDN image delivery after completing the first-time 15-minute setup — your site looks exactly the same to visitors while every image now loads from the CDN edge.

Troubleshooting the most common setup issues

Most first-time setups complete without issues. When problems do occur, they almost always fall into one of these categories.

Connection test fails

Check the port number first. SFTP uses port 22, FTP uses port 21. Some providers use non-standard ports — check your provider’s documentation. Second, verify the hostname does not have a trailing slash or extra spaces. Third, confirm that your hosting server’s outbound connections to the FTP server’s port are not blocked by a firewall. Contact your hosting provider if this is unclear.

Images show broken after enabling URL rewriting

This means the CDN is not finding the files at the expected path. Verify that the files were actually transferred to the FTP server before enabling URL rewriting. Open an FTP client (like FileZilla) and browse to your FTP server to confirm files exist at the paths matching the CDN URL structure. Also verify the CDN pull zone origin URL is correctly pointing at your FTP server’s web-accessible URL.

Sync stops partway through

Browser mode sync requires keeping the browser tab open. If the tab is closed or the browser sleeps, the sync pauses. Re-open the sync tab and resume from where it stopped — the plugin tracks which files have already been transferred and continues from the last completed file, not from the beginning. For very large libraries, Background Mode avoids this issue.

How to undo the setup if needed

Disable URL rewriting in the plugin settings. If local file deletion was enabled, re-sync from the FTP server back to your hosting server using an FTP client. Deactivate the plugin. Your site reverts to serving images from the hosting server. The database was never modified, so no database changes are needed to revert. This is the reversibility guarantee of the output-based rewriting approach.

🔗Even with tools like ShortPixel or Imagify, understanding WordPress image optimization limitations reveals why offloading media to FTP remains essential for performance. →

What happens automatically from this point forward

Once the setup is complete and the bulk sync has finished, the workflow requires nothing further from you. Every new image uploaded through the WordPress Media Library is automatically transferred to your FTP server and deleted locally after transfer (if you enabled local deletion). Every page render rewrites image URLs to your CDN domain. Your hosting server’s uploads directory stays empty indefinitely.

Storage warnings from your hosting provider stop arriving. Backup jobs complete in minutes rather than hours. Site migrations take fifteen minutes rather than several hours. LCP scores improve as image requests are served from CDN edge nodes close to your visitors. All of these benefits are now running automatically in the background, from a configuration that took less time to set up than reading this guide.

If you want to verify that the system is continuing to work correctly after the initial setup, a quick check of the Monitor tab once a month is sufficient. According to WordPress’s plugin development documentation, well-built plugins are designed to run invisibly once configured correctly. That is exactly how this workflow is designed: configure once, benefit permanently.

15-Minute Setup · Permanent Results · Zero Ongoing Effort

You have everything you need to go from zero to fully offloaded today

WP FTP Media provides the connection, sync, URL rewriting, and automation that makes the 15-minute setup possible. FTP storage, CDN delivery, automatic uploads, and no database changes. Configure once and your WordPress media is offloaded permanently.

WP FTP Media – WordPress FTP media offload plugin for complete 15-minute setup of image library migration to FTP storage with CDN delivery

WP FTP Media by NEXU WP
WordPress plugin · 15-Minute Setup · FTP & SFTP · CDN Delivery


Get WP FTP Media

Picture of Mahdi Jabinpour

Mahdi Jabinpour

As a sales-driven developer and the founder of NexuWP, Mahdi focuses on building WordPress solutions that don't just work—they convert. From AI-powered bulk translation engines to high-efficiency media offloading, he helps business owners automate the "grind" so they can focus on global growth. He is a pioneer in integrating advanced LLMs into the WordPress workflow.

RELATED POSTS

RELATED POSTS

3 Reviews
Sandra Hernandez 2 months ago

So I followed the guide and had everything up and running in about 20 minutes not the 15 they mentioned, but pretty close. the FTP part was straightforward, though the CDN setup had me second guessing myself a couple times. All good now, though! new uploads are going right to FTP like they're supposed to, and my uploads folder is actually staying empty for once. too soon to tell if it's faster, but so far it's doing exactly what it promised.

Mansour jabinpour 2 months ago

The CDN setup can be a bit tricky at first, but once it's running, it really does handle things the way it should.

Sandra Thomas 3 months ago

Hey everyone! I picked up this guide because I was drowning in podcast episode images (10,000+ files no joke) and that "15 minute setup" promise totally sold me. But man, the FTP part was way more complicated than I expected. Turns out you actually need an FTP server ready to go first, which I didn't have, and getting one set up took forever. Then the bulk sync? Took a full 12 hours on my decent internet not exactly the "set it and forget it" speed I was hoping for.

mehdiadmin 3 months ago

You're absolutely right we should have specified that the 15 minute estimate is just for the plugin setup, not server configuration or syncing. I'll make sure we clarify this in the next update.

Jessica Jackson 3 months ago

Finally a guide that just tells you what to do instead of explaining why. I followed the steps exactly and got my whole media library offloaded in under 20 minutes no fluff, no upsells, just clear instructions that actually work.

Mansour jabinpour 3 months ago

That's exactly what we aimed for no filler, just results.

Please log in to leave a review.