Siege Home


Siege is an http load testing and benchmarking utility. It was designed to let web developers measure their code under duress, to see how it will stand up to load on the internet. Siege supports basic authentication, cookies, HTTP, HTTPS and FTP protocols. It lets its user hit a server with a configurable number of simulated clients. Those clients place the server “under siege.”


Siege was written on GNU/Linux and has been successfully ported to AIX, BSD, HP-UX and Solaris. It should compile on most System V UNIX variants and on most newer BSD systems. Because Siege relies on POSIX.1b features not supported by Microsoft, it will not run on Windows. Of course you can use Siege to test a Windows server.


SIEGE-3.1.4 – This release fixes issues with HTTP PROXY authentication.

SIEGE-3.1.3 – This release fixes a documentation typo and includes several minor fixes. (When you see releases like this, you know a Linux distributor was on our ass about something…)

SIEGE-3.1.2 – This release adds support for Server Name Indication. It also includes several bug fixes associated with HTTP authentication.

SIEGE-3.1.0 – This release adds support for more than 1024 concurrent users. (Please don’t use that many unless you know what you’re doing). It also adds delay granularity. You can now select set delays to hundreds of a second like this: –delay=0.001 or -d 0.001

SIEGE-3.0.9 – This release is intended to bring siege into the 21st Century. It fixes lots of compiler warnings which are thrown by more recent versions of gcc. While it contains no sexy new features, you should probably upgrade to this version.

SIEGE-3.0.8 – This release adds the port number to a redirect URL on the condition that request is made to a non-standard port. It also adds the location of the log file on logging errors. This should make it easier for users to correct their problem. “Oh, look, it’s trying to log to a location that doesn’t exist.”

SIEGE-3.0.7 This release fixes a bug introduced in siege-3.0.6. Rather than strictly adhere to the RFC, siege will construct an absolute URL from a relative one. While this is convenient it missed a usecase. Siege-3.0.6 barfs on Location: http://localhost  All siege 3.0.6 users should upgrade to 3.0.7.

SIEGE-3.0.6 With this release, siege changes the way it handles –reps=once. It now divides a urls.txt file evenly among all its users, and each URL in the file is hit exactly once. This release also includes several fixes and a documentation update.

SIEGE-3.0.5 This release addresses another inconsistency between the HTTP standard and practice. While RFC 2616 allows a port designation in the Host header, it confuses too many implementations for Siege to continue to send it. This version also fixes several significant bugs. All Siege users should update to this version.

SIEGE-3.0.4 Although RFC 2616 specifies that Location directives must contain an absolute URI, most Web clients normalize relative URIs. This release adds conventional compliance with relative URI handling. Ironically, it also includes a new default user-agent so that field is in compliance with RFC 2616.

SIEGE-3.0.3 This release features one prominent new feature, URL escaping. Reserved characters are %-encoded as per RFC 3986. This release also features numerous bugfixes such as improved variable evaluation in the urls.txt file, dynamic Accept-Encoding, improved siegerc parsing, and several memory fixes.

SIEGE-3.0.0 This is the first major siege release in over a decade. Significant portions were rewritten in order to add support for additional protocols. This release adds limited support for FTP. You can get and put files to a server. FTP is invoked automatically based on the URL scheme, i.e.,  ftp://

SIEGE-BETA – Developers should submit patches that are diff’d against the latest beta.

“This is an excellent application that does something expensive suites don’t. ie. It does what the users expects it to do, and does it simply.”
— Sgt. Scrub

  • James Scollard

    I am working with siege using the ubuntu bombardment executable to run massive scale http tests. We spawn say 10,000 instances on private subnets, run an nmap scan on each instance to discover the other hosts in their local private net, and have them siege one another with bombardment in a scaling test plan. The results are then pushed to the master node in .csv format and now I have to do something with them. my project is here:

    do you have any suggestions on work that is alredy being done with presenting siege/bombardment output as a web page graph? I am currently working on this setup:


  • swapna narla

    Hi there.. Can any one tell me is it possible to perform stress test with Siege tool. If yes, can give me sample code.
    1. How can I randomly increase the load to find break point ?
    2. Can I add any code snippet/options to stop the test as long as I errors started or when error rate reaches to any specific percentage?
    3. Also, can I have any option to provide connection and number of requests associated with each connection. In my load test, I should maintain such that each TCP connection should maintain 40 connections? Is it possible to achieve this with Siege ?
    Your help would be highly appreciable.


  • André Lademann

    Hi, at first I have to say: it’s a great tool. Do you have an idea how to integrate this in continues integration tools like Jenkins? It needs a report in XML format.

  • haifahrul

    it is available for windows?

  • Renato Kalugdan

    does siege perform recursive downloads of an index page w/ multiple PNG files?