{"id":13915,"date":"2020-04-15T11:20:16","date_gmt":"2020-04-15T09:20:16","guid":{"rendered":"https:\/\/daniel.haxx.se\/blog\/?p=13915"},"modified":"2026-04-15T12:36:15","modified_gmt":"2026-04-15T10:36:15","slug":"curl-is-not-removing-ftp","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2020\/04\/15\/curl-is-not-removing-ftp\/","title":{"rendered":"curl is not removing FTP"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/04\/Google_Chrome_icon_2011.png\" alt=\"\" class=\"wp-image-13925\" style=\"width:138px;height:138px\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/04\/Google_Chrome_icon_2011.png 512w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/04\/Google_Chrome_icon_2011-450x450.png 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/04\/Google_Chrome_icon_2011-200x200.png 200w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure>\n<\/div>\n\n\n<p>FTP is going out of style.<\/p>\n\n\n\n<p>The Chrome team has previously announced that they are <a href=\"https:\/\/developers.google.com\/web\/updates\/2019\/12\/chrome-80-deps-rems\">deprecating and removing support for FTP<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2018\/05\/512px-Firefox_Logo_2017.png\" alt=\"\" class=\"wp-image-11185\" style=\"width:135px;height:135px\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2018\/05\/512px-Firefox_Logo_2017.png 512w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2018\/05\/512px-Firefox_Logo_2017-200x200.png 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2018\/05\/512px-Firefox_Logo_2017-450x450.png 450w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure>\n<\/div>\n\n\n<p>Mozilla also announced their plan for <a href=\"https:\/\/blog.mozilla.org\/addons\/2020\/04\/13\/what-to-expect-for-the-upcoming-deprecation-of-ftp-in-firefox\/\">the deprecation of FTP in Firefox<\/a>.<\/p>\n\n\n\n<p>Both browsers have paused or conditioned their efforts to not take the final steps during the Covid-19 outbreak, but they will continue and the outcome is given: FTP support in browsers is going away. Soon.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">curl<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"789\" height=\"690\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol.png\" alt=\"\" class=\"wp-image-8943\" style=\"width:219px;height:191px\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol.png 789w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-200x175.png 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-450x394.png 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-768x672.png 768w\" sizes=\"auto, (max-width: 789px) 100vw, 789px\" \/><\/figure>\n<\/div>\n\n\n<p>curl supported both uploads and downloads with FTP already in its first release in March 1998. Which of course was many years before either of those browsers mentioned above even existed!<\/p>\n\n\n\n<p>In the curl project, we work super hard and tirelessly to maintain backwards compatibility and not break existing scripts and behaviors.<\/p>\n\n\n\n<p>For these reasons, <strong>curl will <em>not<\/em> drop FTP support<\/strong>. If you have legacy systems running FTP, curl will continue to have your back and perform as snappy and as reliably as ever.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FTP the protocol<\/h2>\n\n\n\n<p>FTP is a protocol that is quirky to use over the modern Internet mostly due to its use of two separate TCP connections. It is unencrypted in its default version and the secured version, FTPS, was never supported by browsers. Not to mention that the encrypted version has its own slew of issues when used through NATs etc.<\/p>\n\n\n\n<p>To put it short: FTP has its issues and quirks.<\/p>\n\n\n\n<p>FTP use in general is decreasing and that is also why the browsers feel that they can take this move: it will only negatively affect a very minuscule portion of their users.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Legacy<\/h2>\n\n\n\n<p>FTP is however still used in places. In the <a href=\"https:\/\/daniel.haxx.se\/blog\/2019\/06\/04\/curl-user-survey-2019-analysis\/\">2019 curl user survey<\/a>, <strong>more than 29%<\/strong> of the users said they&#8217;d use curl to transfer FTP within the last two years. There&#8217;s clearly a long tail of legacy FTP systems out there. Maybe not so much on the public Internet anymore &#8211; but in use nevertheless.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Alternative protocols?<\/h2>\n\n\n\n<p>SFTP <em>could<\/em> have become a viable replacement for FTP in these cases, but in practice we&#8217;ve moved into a world where HTTPS replaces everything where browsers are used.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Credits<\/h2>\n\n\n\n<p>Train image by <a href=\"https:\/\/pixabay.com\/users\/466654-466654\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=501638\">D Thory<\/a> from <a href=\"https:\/\/pixabay.com\/photos\/steam-train-locomotive-train-501638\/\">Pixabay<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>FTP is going out of style. The Chrome team has previously announced that they are deprecating and removing support for FTP. Mozilla also announced their plan for the deprecation of FTP in Firefox. Both browsers have paused or conditioned their efforts to not take the final steps during the Covid-19 outbreak, but they will continue &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2020\/04\/15\/curl-is-not-removing-ftp\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">curl is not removing FTP<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":13920,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,393,13],"tags":[292,33,86,233],"class_list":["post-13915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-curl","category-firefox-floss","category-net","tag-chrome","tag-curl-and-libcurl","tag-firefox","tag-ftp"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/13915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/comments?post=13915"}],"version-history":[{"count":19,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/13915\/revisions"}],"predecessor-version":[{"id":29652,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/13915\/revisions\/29652"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media\/13920"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=13915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=13915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=13915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}