Both the tool and the library do Internet transfers for resources specified as
    URLs using Internet protocols.

    It could be important to also consider that curl and libcurl try to avoid
    handling the actual data that is transferred. It has, for example, no knowledge
    about HTML or anything else of the content that is popular to transfer over
    HTTP, but it knows all about how to transfer such data over HTTP.

    Both products are frequently used not only to drive thousands or millions of
    scripts and applications for an Internet connected world, but they are also
    widely used for server testing, protocol fiddling and trying out new things.

    The library is used in every imaginable sort of embedded device where Internet
    transfers are needed: car infotainment, televisions, Blu-Ray players, set-top
    boxes, printers, routers, game systems, etc.

    Following that style of what Unix command-line tools worked, it was also never
    any question about that it should support multiple URLs on the command line.

    The command-line tool is designed to work perfectly from scripts or other
    automatic means. It doesn’t feature any other GUI or UI other than mere text
    in and text out.

    The library

    While the command-line tool came first, the network engine was ripped out and
    converted into a library during the year 2000 and the concepts we still have
    today were introduced with libcurl 7.1 in August 2000. Since then, the command
    line tool has been a thin layer of logic to make a tool around the
    library that does all the heavy lifting.

    libcurl is written in traditional and conservative C. Where other languages
    are preferred, people have created libcurl bindings for them.