There are three ways to reach an FTP server from a Mac, and two of them have significant limitations that are not obvious until you hit them. Here is what actually works in 2026, starting with the information you need before you begin.
What you need first
Four things, all of which your host provides:
- Host — either a name (
ftp.example.com) or an IP address. Some hosts use your domain directly. - Protocol and port — FTP (21), FTPS (21 explicit, 990 implicit) or SFTP (22). If you are not sure which, the differences are here — and the short answer is to prefer SFTP.
- Username and password — note that FTP accounts are frequently not your hosting control panel login. Many hosts make you create a separate FTP user.
- Starting directory, sometimes. Shared hosts often drop you in a home directory where the actual website lives under
public_html,httpdocsorwww.
Option 1: the Finder — read-only, and only for some servers
macOS can mount an FTP server through Go ▸ Connect to Server (⌘K):
ftp://ftp.example.com
You will be asked for credentials and the server appears in the Finder like a disk. And then you discover the catch: it is read-only. Apple removed write support for FTP volumes back in OS X Lion, and it has never returned. You can browse and copy files down. You cannot upload, rename, delete, or change permissions.
There is no ftps:// support at all, and sftp:// is not a scheme the Finder understands either. So for anything beyond looking at a server, the Finder is a dead end. Why the Finder can’t do FTP any more goes into the detail and the workarounds people try.
Option 2: the Terminal — capable, but SFTP only
macOS ships an OpenSSH client, so sftp works out of the box:
sftp deploy@example.com
sftp> cd /var/www/html
sftp> put index.html
sftp> get -r uploads
sftp> exit
This is genuinely useful and worth knowing. Its limits: there is no ftp command any more — Apple removed the plain FTP client in macOS High Sierra, so this only covers SFTP. And there is no transfer queue, no resume of a failed multi-gigabyte upload, no preview, no drag and drop, and no way to see both sides at once.
For a scripted deploy, the Terminal is right. For daily file work, it gets tiring quickly.
Option 3: a native client
A dedicated client is what covers the remaining ground: FTP and FTPS as well as SFTP, uploads as well as downloads, saved connections, and a queue that survives a dropped Wi-Fi connection.
Setting one up in Upstream:
- Open the Site Manager and create a new site.
- Enter host, protocol, port, username and password. Credentials go into the macOS Keychain, not into a plain-text file.
- Optionally set the remote starting path (
/var/www/html) and a local starting folder, so both panes open where you work. - Connect. On FTPS or SFTP you will be shown the server’s fingerprint on first use — check it, then trust it.
From there the two panes show local and remote side by side, and transfers go through a queue you can pause, reorder and resume.
Choosing the right protocol, quickly
If your host gives you SSH access of any kind, use SFTP: it is encrypted, it works through firewalls, and it supports key-based login. If it only offers FTP over TLS, use FTPS explicit on port 21. Use plain FTP only on a local network with a device that supports nothing else.
When the connection fails
The three failures that account for most cases:
It asks for the password again and again. The account is wrong, not the password. On shared hosting the FTP user is usually separate from the panel login. Check for a stray space pasted at the end of the username.
It logs in, then the folder never loads. This is the data connection, not your credentials — you need passive mode, or the server’s passive port range is blocked. Active vs passive FTP covers this in full.
It refuses the connection immediately. Wrong port, wrong protocol, or the service is not running. Trying FTPS against a plain-FTP port produces exactly this.
For anything else, the numeric reply code is precise — see the FTP error code reference.
Step by step
- Collect host, protocol, port, username and password from your hosting panel, and check whether the FTP account differs from your panel login.
- Pick the most secure protocol offered — SFTP if there is SSH, otherwise FTPS explicit, otherwise plain FTP on trusted networks only.
- Create a saved site rather than typing a quick connection — you will connect again, and saved credentials in the Keychain beat a text file.
- Set the remote path to your web root if you have one, so you do not navigate there every session.
- Verify the fingerprint on first connect and compare it against what your host published; accept it once and any future change will be flagged.
- Test with a small file both ways before moving anything important, to confirm read and write permissions are what you expect.
Questions people ask
Can I connect to an FTP server directly from the Finder?
You can mount one read-only through Go ▸ Connect to Server, but you cannot upload, rename or delete. Write support for FTP volumes was removed in OS X Lion and never came back.
Is there an FTP command in macOS Terminal?
No. Apple removed the plain ftp command in macOS High Sierra. The sftp command is still there and works well, but only speaks SFTP.
What is the default FTP port?
21 for the control connection. FTPS explicit also uses 21, FTPS implicit traditionally uses 990, and SFTP uses 22 because it runs over SSH.
Why does my Mac say the FTP server is not responding?
Usually a blocked port or the wrong protocol for that port. Confirm the port with your host, and try passive mode if you get as far as logging in.
Do I need to install anything for SFTP?
Not for the command line — macOS includes the OpenSSH client. For a graphical dual-pane workflow with a queue, you need a client application.