curl-loader is an open-source software performance testing tool written in the C programming language. Features curl-loader is capable of simulating application behavior of hundreds of thousands of HTTP/HTTPS and FTP/FTPS clients, each with its own source IP-address. In contrast to other tools, curl-loader is using real C-written client protocol stacks, namely, HTTP and FTP stacks of libcurl and TLS/SSL of openssl, and simulates user behavior with support for login and authentication flavors. The major features are: Running up to 2500-100,000 and more virtual loading clients, all from a single curl-loader process. Actual number of virtual clients may be several times higher being limited mainly by memory. Each virtual client loads traffic from its "personal" source IP-address, or from the "common" IP-address shared by all clients, or from the IP-addresses shared by some clients where a limited set of shared IP-addresses can be used by a batch of clients. Rampup of the virtual clients number at loading start in either automatic or manual mode; IPv4 and IPv6 addresses and URIs; HTTP 1.1. GET, POST, PUT, DELETE, HEAD including file upload operations; HTTP user authentication login with POST or GET+POST methods. Unique configurable username and password for each virtual client as well as configurable posted string (post-forms) are the options. Another option is loading of users with credentials from a tokens text file; HTTP POST/GET forms with up to 16 tokens filled from a tokens text file; HTTP user logoff with POST, GET+POST, or GET (cookies); POST logoff with configurable posted string (post-forms); HTTP multipart form data POST-ing as in RFC1867; HTTP Web and Proxy Authentication (HTTP 401 and 407 responses) with Basic, Digest (RFC2617) and NTLM; HTTP 3xx redirections with unlimited number of redirections; HTTP cookies and DNS caches; FTP passive and active, FTP upload; Full customization of client request HTTP/FTP headers ; Transfer limit rate for each client download or upload operation on a per url bases; URL fetching probability; TCP connections reuse or re-establishment on a per URL bases; Unlimited configurable number of URLs. Mixing of HTTP, HTTPS, FTP and FTPS urls in a single batch (test plan) configuration; Connection establishment timers for each URL; URL completion timers monitoring and enforcement for each client; Inter/after URL "sleeping" timers, including random timers taken from a configurable interval; Logfile with tracing activities for each virtual client; Logging of responses (headers and bodies) to files; Pre-cooked batch configuration (test plan) examples; Load