Every FTP reply is a three-digit number followed by text. The text is written by whoever built the server and varies wildly; the number is standardised in RFC 959 and tells you what actually happened. Learning to read the digits turns a cryptic failure into a specific one.
How to read the three digits
First digit — the outcome:
| Meaning | |
|---|---|
1xx | Started, wait for a second reply |
2xx | Succeeded |
3xx | Accepted, but needs more information |
4xx | Temporary failure — retrying may work |
5xx | Permanent failure — retrying will not help |
The 4 versus 5 distinction is the useful one. A 4xx is worth an automatic retry; a 5xx means something must change first. Upstream’s queue treats them differently for exactly this reason — 4xx failures back off and retry, 5xx failures stop and report.
Second digit — the category: x0x syntax, x1x information, x2x connections, x3x authentication, x5x filesystem.
So 530 is authentication-permanent (login failed) and 425 is connection-temporary (data connection failed). Once that clicks, most codes decode themselves.
The codes you will actually meet
421 Service not available, closing control connection
The server hung up. Common causes, in order of likelihood: too many connections — either you exceeded the per-user limit by opening too many parallel transfers, or the server is globally full; an idle timeout after you left a session open; or the server restarting.
If it appears when you increase concurrency, that is your answer — lower the number of simultaneous transfers. Many shared hosts allow as few as 2 to 8 connections per account.
425 Can’t open data connection
The data connection could not be established. This is the active versus passive problem in its purest form: you are probably in active mode behind NAT, or the server’s passive port range is blocked by a firewall.
Switch to passive mode first. If you already are, the server’s passive configuration or the firewall in front of it is at fault.
426 Connection closed, transfer aborted
The data connection opened and then died mid-transfer. Usually a network interruption, an idle timeout on a slow transfer, or a firewall killing a long-lived connection. Resume the transfer — a client with resume support restarts from the byte offset rather than the beginning.
450 / 550 File unavailable
450 is temporary, 550 is permanent, and 550 is the single most common FTP error. It covers three quite different situations, which is why it is confusing:
- The file or directory does not exist — check the path, and remember that most servers are case-sensitive.
- You lack permission — the file exists but your account cannot read, write or delete it.
- The operation is not allowed — deleting a non-empty directory, or writing to a read-only area.
Read the accompanying text; unlike the code, it usually distinguishes “No such file or directory” from “Permission denied”.
530 Not logged in
Authentication failed. Beyond a genuinely wrong password:
- The FTP account is not your hosting panel login — many hosts require a separately created FTP user.
- A trailing space in the username, courtesy of copy and paste.
- The server requires TLS before accepting credentials, and you connected in plain FTP. The text often says “Must issue AUTH before login”.
- Your IP is blocked after too many failed attempts.
550 vs 553 on upload
553 Requested action not taken. File name not allowed is specifically about the name: characters the server rejects, or a filename policy. Where 550 on an upload usually means the target directory is not writable, 553 means the file could not be called that.
552 Exceeded storage allocation
You are out of disk quota. Straightforward, and worth checking before assuming a permissions problem — a full disk often surfaces as a mysterious mid-transfer failure.
227 Entering Passive Mode
Not an error, but the reply to read when diagnosing one. The six numbers are four address bytes and two port bytes, where the port is high × 256 + low. If the address is a private range while you connected to a public host, the server is misconfigured and that is why listings hang.
234 / 334 AUTH TLS
The successful handshake replies for explicit FTPS. Seeing them means TLS was negotiated before your password crossed the wire, which is what you want.
SFTP is different
SFTP does not use these codes at all — it is not FTP. Its errors are a short list of SSH status codes: 2 No such file, 3 Permission denied, 4 Failure, 8 Op unsupported. Cleaner, and there is no data connection to fail, which removes the entire 425/426 family.
Step by step
- Read the first digit — a 4 is worth retrying, a 5 needs a change.
- Read the second digit to find the area: 3 is authentication, 2 is the connection, 5 is the filesystem.
- Read the server’s text, which distinguishes cases the number cannot.
- Open the protocol log — the failing command matters as much as the reply. A 550 after
STORis a permissions problem; a 550 afterCWDis a wrong path. - Match it to the cause: 530 is credentials, 425/426 is the data connection, 550 is path or permissions, 421 is usually too many connections.
Questions people ask
What does FTP error 550 mean?
That the requested action was not taken because the file is unavailable. In practice: the path is wrong, the file does not exist, or your account lacks permission for that operation.
What does 530 mean when my password is definitely correct?
Most often that the FTP account differs from your control-panel account, or that the server requires an explicit TLS upgrade before it will accept a login.
Why do I get 421 during large uploads?
Usually a per-account connection limit or an idle timeout. Reduce the number of concurrent transfers; many shared hosts permit very few.
Is 226 an error?
No — 226 is the successful completion of a transfer, sent once the data connection closes cleanly. Seeing it is good news.
Why does the same operation give 450 sometimes and 550 others?
450 means the file is temporarily unavailable — often locked by another process — while 550 is permanent. A file being written by a server-side process can produce the first and then succeed on retry.