FTP (File Transfer Protocol) lets you upload and download files to hosting. Through cPanel you can create separate FTP accounts for different directories — useful for developers and designers who should not get full access to the whole account.
Creating an FTP account in cPanel
- Log in to cPanel (usually
yourdomain.com/cpanel) - Open the Files → FTP Accounts section
- Fill in the form:
- Login — the username (for example,
developer) - Password — at least 12 characters, use a generator
- Directory — the folder to grant access to (for example,
/public_html/mysite) - Quota — a space limit (or "Unlimited")
- Login — the username (for example,
- Click Create FTP Account
Connecting via FileZilla
Download the free FileZilla client from the project's official site. Connection settings:
| Parameter | Value |
|---|---|
| Host | ftp.yourdomain.com |
| User | developer@yourdomain.com |
| Password | your password |
| Port | 21 (FTP) or 22 (SFTP) |
Common connection error
The most common error on first connection is an incorrectly entered login: in cPanel the FTP login usually includes the whole domain, not just the username:
Response: 530 Login authentication failed
Error: Critical error: Could not connect to server
The fix is to enter the login in full as developer@yourdomain.com, not just developer. The second common problem is that files do not transfer even though the connection is established:
Status: Connected
Command: LIST
Error: 425 Unable to build data connection: Operation not permitted
This is a conflict between FTP's active/passive mode and a firewall on the client or provider side. The fix is to open Settings → Connection → FTP → Transfer Mode in FileZilla and select Passive mode instead of active.
FTP or SFTP
| Criterion | FTP | SFTP |
|---|---|---|
| Port | 21 | 22 |
| Encryption | None (password sent in the clear) | Yes, all traffic is encrypted |
| Firewall traversal | Often needs passive mode configuration | A single port, usually already open for SSH |
| Key-based authorization | Not supported | Supported |
| Recommendation | Only for legacy clients | Default for new connections |
On the server side, plain FTP in passive mode uses not only port 21 but also a range of extra ports for the data transfer (usually configured by the administrator as the "Passive Ports Range" in WHM). If the hosting restricts outbound connections with a client-side firewall more tightly than that range is open, the 425 error keeps happening even with passive mode enabled — the only reliable fix then is switching to SFTP, which uses the same single port 22 for both commands and data.
Managing FTP accounts
In cPanel → FTP Accounts you can:
- Change the password — the Change Password button
- Change the quota — the Change Quota button
- Delete the account — the Delete button
- Open the FTP session manager (view active connections)
Restricting access by directory
An FTP account created with the directory /public_html/mysite physically cannot see the rest of the account's file system — trying to go up with cd .. hits that user's own "root", even though other folders physically exist higher up on disk:
mysite/ ← root for FTP user developer
├── index.php
└── assets/
../otherdomain/ ← exists physically, but developer cannot see it
This is built-in cPanel isolation (chroot), not a separate setting — it is always active for additional FTP accounts, but it does not apply to the main FTP account with full access. If a quota is set on the FTP account and it is exhausted, uploading new files stops with a "550 Disk quota exceeded" error — this is a limit on that specific FTP user, not the plan's overall quota, and it is raised separately through the same account creation form.
When FTP does not fit
- You need version control and a history of file changes — FTP just overwrites a file, with no diff and no way to roll back, so a Git deploy is needed instead
- Development happens on a public Wi-Fi network — plain FTP sends the password in the clear and it is easy to intercept, so SFTP or a VPN is mandatory here
- You need to sync a large number of small files regularly — FTP is slower than rsync over SSH because it has no delta copying
- You need automatic deployment on a push to the repository — FTP has no hooks or CI/CD integration, so SSH access or Git Version Control in cPanel is needed instead
Verifying the result
# Quick connection check from the terminal
ftp ftp.yourdomain.com
# Enter login developer@yourdomain.com and the password
# If you see the ftp> prompt, the connection works
Never use the main FTP account (with full access) to hand off to a client or contractor — create a separate account with a restricted directory. More on file permissions after upload is in the article SSH access on cPanel hosting.