FTP Reply Codes Reference

All FTP three-digit reply codes with category and description.

Searchable FTP reply code reference from RFC 959. Look up any three-digit code, decode what its first and second digits mean, and read the plain-English description and category.

How are FTP reply codes structured?

Every FTP reply is three digits. The first digit is the completion status: 1 preliminary, 2 success, 3 intermediate, 4 transient failure, 5 permanent failure. The second digit is the functional group such as syntax, information, connections, authentication or file system. The third digit gives a finer-grained meaning within that group.

The FTP Reply Codes Reference is a searchable lookup for the three-digit reply codes an FTP server returns on its control connection. Whether you are reading a client log, scripting an automated transfer, or debugging a stuck passive-mode connection, this tool decodes any code from 110 to 553 with its category and a plain-English description.

How it works

FTP, defined in RFC 959, answers every command with a three-digit code whose digits each carry meaning:

First digit — completion status
  1yz  Positive preliminary  (action started, expect another reply)
  2yz  Positive completion   (action succeeded)
  3yz  Positive intermediate (need more input, e.g. PASS after USER)
  4yz  Transient negative    (temporary failure, retry later)
  5yz  Permanent negative    (hard failure, do not retry)

Second digit — functional group
  x0z  Syntax        x1z  Information   x2z  Connections
  x3z  Auth/account  x5z  File system

So 530 is a permanent (5) authentication (3) failure, while 227 is a successful (2) connection (2) reply. The tool keeps the full table in your browser and filters by number, text or message.

Example and tips

A typical download walks 220 (greeting) → 331 (need password) → 230 (logged in) → 227 (passive mode) → 150 (opening data connection) → 226 (transfer complete). When a transfer hangs after 227 or 150, the data connection — not the login — is the problem: check NAT, firewall and whether the client should prefer EPSV (229) over classic PASV (227). Treat 4xx codes as worth retrying and 5xx codes as final.