Sign up ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

I am keen to know the difference between curl and wget. Both are used to get files and documents but what the key difference between them.

Why are there two different programs?

share|improve this question
Main difference is that wget is used to download things while curl is used to test communication by using a specific protocol. –  Pithikos Aug 15 '14 at 13:29
An interesting fact about wget: > Wget can be typed in using only the left hand on a qwerty keyboard! –  habeebperwad Sep 26 at 9:50

3 Answers 3

up vote 62 down vote accepted

The main differences are:

  • wget's major strong side compared to curl is its ability to download recursively.
  • wget is command line only. There's no lib or anything, but curl features and is powered by libcurl.
  • curl builds and runs on more platforms than wget.
  • wget is part of the GNU project and all copyrights are assigned to FSF. The curl project is entirely stand-alone and independent with no organization parenting at all
  • curl offers upload and sending capabilities. wget only offers plain HTTP POST support.

You can see more details at the following link:

curl vs Wget

share|improve this answer
Thanks, this is exactly what I've been wondering about for a few hours. I used wget to do a recursive spider on a site, seems stalled on a page that has eleventy bazillion links on it. The reality is it's running at 100% CPU on one core. Was hoping that there was something better that does that newfangled multicore thing I've been hearing about. –  Brian Topping Jun 7 at 10:13
One of the things wget does that is left out of this answer is http mirroring (or 'spidering') ability. curl is very good at what it does, but it alone is not intended to be used to mirror a web site. –  jsbillings Sep 26 at 12:38

Actually, the major difference is that curl includes a library (libcurl), and that library is widely used by other applications. wget is standalone.

share|improve this answer

In a few words:

  • wget is a tool to download files from servers
  • curl is a tool that let's you exchange requests/responses with a server


Wget solely let's you download files from an HTTP/HTTPS or FTP server. You give it a link and it automatically downloads the file where the link points to. It builds the request automatically.


Curl in contrast to wget let's you build the request as you wish. This gives a lot of freedom to the user and makes an amazing debugging tool. Add to that the other key difference between the two; the plethora of protocols supported. Curl supports FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, Telnet, DICT, LDAP, LDAPS, IMAP, POP3, SMTP, RTSP and URI. Combine these two key points and you have an amazing tool to test protocols, test server configuration, etc.

As many say, you can download a file with curl. That however is only useful if you happen to want to downlaod a file from a server that uses a protocol that wget doesn't support.

share|improve this answer
Actually wget also follows the redirect then saves the response unlike curl. Both can achieve the opposite to the default behaviour wget -qO - or curl > index.html –  Matt Aug 15 '14 at 17:46
@mtm curl > index.html is not using an inbuilt functionality though. Anyway the main distinction is the purpose each tool was made for. There is not denying that tools evolve and many times deviate from their initial trajectory. –  Pithikos Aug 16 '14 at 10:24
@mtm curl -o index.html would use curl's internals instead of shell output redirection with >. –  Petrus Repo Jan 15 at 11:35

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.