I am a web developer, and it matters a lot to me how fast the FTP clients I use work. I always look for ways to work faster and handle more tasks efficiently, and this is where the speed of your FTP clients matters.
If you are a web developer or for some other reasons need to handle a lot of files via S/FTP every day, some Mac FTP apps work faster by the way they are designed.
Speed matters, in all areas – remember to check out the WordPress Optimization checklist.
I work on Mac, and I use FTP/SFTP all day to download and upload files. I have tested several different FTP applications, and there is a massive difference in how fast they are.
When I talk about how fast they are, I do not think about how the interface is working.
I am talking about how fast they process uploads and downloads, there is a vast difference in how fast they handle that, and it has to do with the way they manage the transfer queue.
I will test my favorite three FTP apps, I still use them all, but when I need to transfer a lot of files, there is only one that I use.
I always make a complete backup of database and files before taking on any significant changes, or I download a copy to my local development setup.
TL; DR: I use several FTP clients – each for their purpose. Some are better at handling different kinds of servers, but mostly for downloading and uploading big sites, I go to CrossFTP.
First, let’s check out the competition.
Let’s take a look at how Transmit does transfers. Transmit is the most beautiful looking, but also the slowest client.
Let’s say we want to upload three folders. Each is containing a hundred files of different sizes and in various subfolders.
In Transmit each folder or item you drag drop gets in a queue. Each folder is treated individually. That means each folder will be opened, and file by file, folder by folder, the content of that folder will be uploaded.
This means Transmit does not know how much is actually in each folder until it gets to that subfolder, which skews all attempts at estimating how far along the upload process is.
Also, if the other folders in the upload are finished, there is no help for the other thread, that one is still going one by one.
Uploads take forever. WordPress installations that I move manually or significant updates I *never* use Transmit for.
Regarding transfer speed, FileZilla is faster. The implementation is not the most rapid approach, but still beats Transmit.
If you are uploading files, FileZilla reads the local content of all you are transferring and make a long queue, handled by x threads. You can customize how many threads you want to use in general and per site.
Downloading a bunch of folders, however, still takes some time. FileZilla allocates a single thread for crawling the folders and add to the queue. Having a separate thread for this means that the other threads sometimes stand idle, waiting for the crawling thread to add more files to the transfer list.
Faster, but still not the most efficient.
Let us take a look at how CrossFTP handles the transferring of files.
When you upload or download, the folders are added to the transfer queue as well. But instead of processing each item in the transfer queue by one thread at a time, the content of the folder just read and added to the global transfer list.
This is more efficient and allows for much faster processing.
All threads are always working, either downloading or uploading files or reading the content of a folder and adding to the list.
This is by far the fastest implementation, and CrossFTP is steady as a rock and handles small and big queues of 50.000+ files easily.
Now, if you are like me, the theory is one thing, but facts and numbers are better. So, I conducted a little experiment.
I took a local WordPress site, not too many files, but a decent amount of plugins and uploaded files in the media library.
In total, 163.1mb and 10.115 files
I uploaded the same site three times using the different FTP clients to the same server, one by one using the max amount of threads the server would let me use.
For all three tests, I just dragged the files and folders of the root to the FTP client and let it deal with the rest.
When using Transmit I would usually create some of the folders manually and then drag-drop them individually to speed up the process, but I did not do that for this test.
Transmit 1 hour 22 minutes.
FileZilla: 13 minutes and 50 seconds.
CrossFTP: 10 minutes and 25 seconds.
I was not surprised to see Transmit left behind in the dust by the other two, but I was surprised to see FileZilla was that close to CrossFTP. Still, almost 3 and half a minute longer than CrossFTP to complete, the winner is clear –
CrossFTP is the fastest – at least in this test scenario.
Speed is not all that matters
I still mix between the different FTP applications, and I am sure there are other applications out there. Some I have tried already and ditched, some I might not have heard about.
The fastest for transferring a bunch of folders so far for me is CrossFTP, let me know if you have a better suggestion 🙂
This article was all about how fast these three FTP clients transfer files, not how beautiful they are to work with. You should find the tool that you like best, personally I mix between Filezilla and CrossFTP these days 🙂
- ftp client for mac for large bulk transfer running out of memory