Skip to content

Everything for WordPress, web development — and beyond

📂 Uploading files to WordPress via FTP: a complete guide

📂 Uploading files to WordPress via FTP: a complete guide

White screen. The admin panel won't load. The plugin you just activated took down the entire site. And hosting support responds once every three hours. Sound familiar?

FTP in moments like these is the only channel through which you can reach your site's files and bring it back to life. The catch is that WordPress site owners rarely access the server via FTP during peacetime. When disaster strikes, it's all panic and searching "how to connect to FTP" across three tabs.

In reality, connecting is easier than setting up email on your phone. Five minutes, and you're inside the server's file system with full control over every folder and every php file. No panic: here's the algorithm from installing the client to uploading files and emergency recovery.

💡 Quick overview:

  • Install FileZilla (a free FTP client for Windows, macOS, and Linux) or open the built-in File Manager in your hosting panel if you need a one-time operation.
  • Create an FTP account in cPanel (or equivalent): login, password, directory binding. Connection details appear immediately after creation.
  • Connect to the server: host (domain or IP), port 22 for SFTP. Find the public_html folder (the WordPress root) and drag files between your computer and the server.
  • If a media file uploaded via FTP doesn't appear in the WordPress library, register it through the Media Sync plugin or Add From Server Reloaded. Simply uploading a file to the uploads folder doesn't add it to the database.

Why WordPress site owners need FTP

FTP (File Transfer Protocol) is a network protocol for transferring files between a computer and a server. It appeared long before WordPress: RFC 959, describing the FTP specification, was released in 1985. Today the protocol is over 40 years old, but it's still built into every hosting service and every control panel as a basic transport.

Four scenarios where FTP is indispensable:

  • White screen of death (WSOD). You activated a plugin or theme, and the site stopped opening along with the admin panel. Connect via FTP to /wp-content/plugins/, rename the problematic extension's folder, and the site comes back to life in seconds.
  • Editing wp-config.php and.htaccess. An error in these files crashes the site without admin access. FTP is the only way to fix them directly.
  • Uploading large files. The WordPress web uploader hits a 2-8 MB limit (depending on hosting). FTP lets you transfer files of any size.
  • Manual installation of core, themes, and plugins. Upload fresh WordPress, a theme, or plugin directly, bypassing the admin panel (for example, when the built-in installer can't handle the zip archive size).

Important note: before any operations via FTP, make a backup of your site. If something goes wrong, you can roll back changes in a couple of clicks.

How to choose an FTP client

To connect to a server, you need a program called an FTP client. For Windows, macOS, and Linux, there are options, and most are free.

Client

Platforms

Free

SFTP

Features

FileZilla

Windows, macOS, Linux

Yes

Yes

The de facto standard: millions of users, FTP, SFTP and FTPS support, tabs, download queue, site manager

WinSCP

Windows

Yes

Yes

Tailored for SFTP and SCP, built-in text editor, folder synchronization

Cyberduck

Windows, macOS

Yes

Yes

Minimalist interface, integration with cloud storage (S3, Backblaze, Google Drive)

Transmit

macOS

No (from $34)

Yes

The benchmark client for Mac: synchronization, panic mode, 11 cloud integrations

For 99% of tasks, FileZilla is enough. It's free, works on all systems, and has a minimal learning curve. Download only from the official site; third-party repackagers often bundle adware.

An installation-free alternative is File Manager in cPanel (or its equivalent in your hosting panel: hPanel, ISPmanager, DirectAdmin). It's already on the server, opens in a browser, and is sufficient for one-time file uploads.

Step 1. Create an FTP account

Log into your hosting control panel. Find the "FTP Accounts" section. Click "Create," and the system will ask for three things:

  • Login. Come up with a name, for example mysite_admin. It will become part of the address: [email protected].
  • Password. Generate a strong one (20+ characters) and save it in a password manager. Don't use admin123; FTP accounts get brute-forced regularly.
  • Directory. Usually /public_html (the site root). If you leave the field empty, the account will have access to the entire file system of the account; for security, it's better to limit it to a specific folder.

After creation, you'll see the connection details: host, login, port. Copy them.

Creating an FTP account in the cPanel control panel

The host is usually your domain (for example, ftp.yoursite.com) or the server's IP address. If your hosting sent a welcome email, the FTP details are typically listed there.

Step 2. Connect via FileZilla

clipboard 2026 06 23T14 37 17

Open FileZilla and fill in the fields in the top panel:

  • Host: ftp.yoursite.com (or the server's IP address)
  • Username: login from step 1
  • Password: password from step 1
  • Port: 21 for FTP, 22 for SFTP (strongly recommended)

Click "Quickconnect." Logs will start scrolling in the status window at the bottom; the last line should be Status: Directory listing of "/" successful. You're connected.

The FileZilla interface is split into two halves: the left side shows your computer's files, the right side shows the server's file system. On the right, find the public_html folder (on some hosts it's called www or htdocs); this is the WordPress site root. Here you'll find wp-config.php and three key folders: wp-content, wp-admin, and wp-includes.

Step 3. Uploading files and access permissions

To upload a file from your computer to the server, drag it from the left FileZilla panel to the right. Or right-click the file and select "Upload." FileZilla shows progress and automatically resumes transfer if the connection drops.

Where to put what:

  • Pluginswp-content/plugins/plugin-name/
  • Themeswp-content/themes/theme-name/
  • Media files (images, PDFs)wp-content/uploads/year/month/, but WordPress won't see them in the media library without an additional step (see next section)
  • Files in rootwp-config.php, .htaccess, and robots.txt go in public_html/

After uploading, check access permissions (chmod): set 755 for folders, 644 for files. In FileZilla, this is done by right-clicking the file → "File permissions." Incorrect permissions are the most common cause of "broken" images and 403 errors on sites.

What to do if an uploaded file isn't visible in WordPress

You uploaded an image via FTP to the uploads folder, but it's not in the WordPress media library. This isn't a bug: WordPress registers files in the database only when uploaded through the admin panel. Simply placing a file in the folder isn't enough; you need a record in the wp_posts and wp_postmeta tables.

Three solutions, from simple to advanced:

First, the Media Sync plugin. Media Sync scans the uploads folder and adds unregistered files to the media library. It's free, with 40,000+ active installations and a 4.7 rating on WordPress.org. After installation, go to "Media → Media Sync," click "Scan," and select files for import. Suitable when you need to pull in dozens or hundreds of files at once.

Second, Add From Server Reloaded. Add From Server Reloaded adds an "Import from server" button to the media library. Unlike the classic Add From Server (not updated in 6 years), this version is actively maintained and compatible with WordPress 6.7+. Go to the media library, specify the path to the file on the server, and it gets registered. Convenient when you have few files and need precise import.

Third, WP-CLI. If you're comfortable with the terminal, the command wp media import <path-to-file> registers a file in the media library in one line. Suitable for automation and batch processing.

If you have the opposite problem (images uploaded through the admin panel aren't displaying on the site), check three things:

  • Access permissions. The uploads folder and all subfolders should have chmod 755, files should have 644. Incorrect permissions are the most common cause of invisible images.
  • Optimization plugin conflict. Temporarily disable Smush, ShortPixel, Imagify, or Jetpack Boost and check if the images appear. Sometimes aggressive optimization breaks file paths.
  • CDN cache. If you use Cloudflare, BunnyCDN, or StackPath, clear the cache and verify that settings aren't blocking direct requests to wp-content/uploads/.

Emergency site recovery via FTP

The most common FTP use case is emergency recovery. Here's a step-by-step algorithm for when your site stops opening:

  • Connect via FTP and first rename the /wp-content/plugins/ folder to /wp-content/plugins_disabled/. This will disable all plugins at once.
  • If the site works, the problem is in the plugins. Restore plugin folders one by one and check the site after each until you find the culprit.
  • Didn't help? Switch to a default theme. Rename the active theme's folder in /wp-content/themes/. WordPress will automatically switch to the default theme (Twenty Twenty-Six).
  • Still nothing? Check .htaccess. Download the file via FTP, delete all its contents, and upload the empty file back. Then go to admin → Settings → Permalinks → "Save Changes" (WordPress will recreate .htaccess).
  • Site still won't open after all this? Enable WP_DEBUG. Add these lines to wp-config.php:
1define('WP_DEBUG', true);
2define('WP_DEBUG_LOG', true);
3define('WP_DEBUG_DISPLAY', false);

Errors will be written to /wp-content/debug.log. Check the logs and look for the root cause.

This algorithm solves most WordPress emergencies without contacting hosting support and without panic.

⁉️🤔 Frequently asked questions

Which is safer, FTP or SFTP?

SFTP (SSH File Transfer Protocol) encrypts both the login with password and the transferred files. Regular FTP transmits everything in plain text, including the password. If your hosting supports SFTP, use only that. In FileZilla, switching is as simple as changing the port from 21 to 22.

Can I upload files without an FTP client at all?

Yes. Almost any hosting provides a File Manager right in the control panel: browser-based uploads, zero installations. For one-time tasks it's sufficient; File Manager requires no setup and is already authorized in your account. A more hardcore option is WP-CLI: the wp media import command uploads and registers a file in the media library in one line.

Why won't FileZilla connect, showing "Connection timed out" error?

Two likely causes. First: wrong port. FTP uses port 21, SFTP uses port 22. Try both. Second: hosting is blocking the connection by IP. Check in your hosting panel whether incoming FTP connections are blocked, and add your IP to the whitelist.

Can I upload a theme or plugin via FTP if the archive exceeds the hosting limit?

Yes, that's the whole point of FTP. The upload limit through the WordPress admin (usually 2-8 MB) doesn't apply to FTP. Unzip the archive on your computer and upload the theme or plugin folder to wp-content/themes/ or wp-content/plugins/ respectively. After that, the theme or plugin will appear in the admin panel.

Do I need to disable plugins before uploading files via FTP?

No. FTP works at the file system level and doesn't interact with WordPress directly. You can upload, delete, and edit files regardless of whether plugins are enabled or even if the site won't open at all; that's FTP's main advantage as an emergency channel.

How do I find my FTP credentials if I forgot them?

Log into your hosting control panel (cPanel, ISPmanager, DirectAdmin) and open the "FTP Accounts" section. All created accounts are listed there. If the password is lost, you can set a new one right there. As a last resort: FTP details are usually included in the welcome email from your hosting when the account was created.

Learning FTP in half an hour: worth it or not?

FTP hasn't gotten prettier in 40 years. The FileZilla interface looks like Windows XP, and the confusion with ports and chmod still frustrates beginners. But when your site is down and hosting support is silent, this clunky tool becomes the only working channel.

If you own a WordPress site, master three things: create an FTP account in your hosting panel, connect via FileZilla, and rename a plugin folder. It will take half an hour. And one day it will save you hours of panic and waiting.

Start right now: create a test FTP account, connect to the server via the FileZilla FTP client, and make sure you can see the public_html folder. Just to know the channel works.