Yaws 1.98

Yaws is a HTTP high perfomance 1.1 webserver particularly well suited for dynamic-content webapplications. Two separate modes of operations are supported.



  • Standalone mode where Yaws runs as a regular webserver daemon. This is the default mode.


  • Embedded mode where Yaws runs as an embedded webserver in another erlang application.


Yaws is entirely written in Erlang furthermore it is a multithreaded webserver where one Erlang light weight process is used to handle each client.
The main advantages of yaws compared to other Web technologies are performance and elegance. The performance comes from the underlying Erlang system and its ability to handle concurrent processes in an efficent way. Its elegance comes from Erlang as well. Web applications dont have to be written in ugly adhoc languages.

User's rating:

  • Currently 2.62/5
  • 1
  • 2
  • 3
  • 4
  • 5
Enlarge the screenshot of Yaws
[ Enlarge Image ]
Download 3.8MB Yaws

Download Direct

(3.8MB, Extension: EXE)

Download alternate to Yaws solution

Look at the free or trial alternatives and similar apps to Yaws software by the tags. It's possible also to find substitutes for the most popular titles in the Net Servers Services category.

| Yaws | Webserver | Http |

History updates (Complete changelogs since the listing on this site)

1.98 [04-04-14]

Maintenance release with a long series of fixes mostly from Steve Vinoski./yaws
  • all.zip should not not include .yaws files, nor directories "protected" with an index file, nor directories protected by an auth directive. (Hans-Christian Esperer )
  • adjust to R14B change in gen_tcp:recv for {packet,http} mode Where we handle the return value of gen_tcp:recv while reading headers from the socket (such as with calls to yaws:do_recv), handle new R14B return values as well as existing return values for previous releases. (Steve)
  • for portability, use erlang:md5 rather than crypto md5 Since OpenSSL availability on Windows for working with the crypto module is apparently questionable, use the erlang:md5 function in place of the crypto md5 functions. (Steve)
  • websockets v76 update (Dominique Boucher)
  • several fcgi updates and bugfixes (Steve)
  • Add auth_skip_docroot server config variable (Christian Hennig)
  • Fix use_old_ssl=bool() for R14A (Joseph Wayne Norton)
  • add --umask option to yaws script (Steve)
  • Some yapp work, added a simple example (Mikael Karlsson)
  • performance enhancements (Steve)
  • add support for PHP FCGI applications (Hans-Christian Esperer)
  • fix cached process counter (Hans-Christian Esperer)
  • return part headers from yaws_multipart:read_multipart_form (Steve, based on a patch from Dilshod Temirkhodjaev.
  • patch for no-return-in-nonvoid-function error (Alexander Simonov)
  • two-mode.el now works with emacs 23 (Steve)
  • Allow "stream processes" to close the client socket (Steve)
  • Augment yaws man page with --erlarg argument quoting info (Steve)
  • Use gconf keepalive_timeout for connection lifetime (Brady McCary)
  • handle multi-word arguments for heart restart command (Steve)
  • Fix bug where yaws_api:parse_set_cookie tried to convert a record to lower case. (Anders Nygren)
  • patch by Sergey Shilov to set old_ssl for embedded mode
  • fix socket usage for FCGI authorization (bruno rijsman, steve vinoski)
  • work around an erlang:open_port bug for CGI QUERY_STRING env var (Steve)
  • Added a new configuration parameter called "keepalive_maxuses" which allows the yaws admin to close persistant connections after X number of uses. (Thomas O'Dowd )
  • improved embedded support (Steve)
  • Other versions : 1.96 1.94 1.91 1.90 1.89 1.88 1.87

    v1.96 [08-07-13]

    Maintenance release with a long series of fixes mostly from Steve Vinoski./yaws

  • all.zip should not not include .yaws files, nor directories "protected" with an index file, nor directories protected by an auth directive. (Hans-Christian Esperer )
  • adjust to R14B change in gen_tcp:recv for {packet,http} mode Where we handle the return value of gen_tcp:recv while reading headers from the socket (such as with calls to yaws:do_recv), handle new R14B return values as well as existing return values for previous releases. (Steve)
  • for portability, use erlang:md5 rather than crypto md5 Since OpenSSL availability on Windows for working with the crypto module is apparently questionable, use the erlang:md5 function in place of the crypto md5 functions. (Steve)
  • websockets v76 update (Dominique Boucher)
  • several fcgi updates and bugfixes (Steve)
  • Add auth_skip_docroot server config variable (Christian Hennig)
  • Fix use_old_ssl=bool() for R14A (Joseph Wayne Norton)
  • add --umask option to yaws script (Steve)
  • Some yapp work, added a simple example (Mikael Karlsson)
  • performance enhancements (Steve)
  • add support for PHP FCGI applications (Hans-Christian Esperer)
  • fix cached process counter (Hans-Christian Esperer)
  • return part headers from yaws_multipart:read_multipart_form (Steve, based on a patch from Dilshod Temirkhodjaev.
  • patch for no-return-in-nonvoid-function error (Alexander Simonov)
  • two-mode.el now works with emacs 23 (Steve)
  • Allow "stream processes" to close the client socket (Steve)
  • Augment yaws man page with --erlarg argument quoting info (Steve)
  • Use gconf keepalive_timeout for connection lifetime (Brady McCary)
  • handle multi-word arguments for heart restart command (Steve)
  • Fix bug where yaws_api:parse_set_cookie tried to convert a record to lower case. (Anders Nygren)
  • patch by Sergey Shilov to set old_ssl for embedded mode
  • fix socket usage for FCGI authorization (bruno rijsman, steve vinoski)
  • work around an erlang:open_port bug for CGI QUERY_STRING env var (Steve)
  • Added a new configuration parameter called "keepalive_maxuses" which allows the yaws admin to close persistant connections after X number of uses. (Thomas O'Dowd )
  • improved embedded support (Steve)

  • v1.94 [07-10-12]

    Maintenance release with a long series of fixes mostly from Steve Vinoski./yaws

  • all.zip should not not include .yaws files, nor directories "protected" with an index file, nor directories protected by an auth directive. (Hans-Christian Esperer )
  • adjust to R14B change in gen_tcp:recv for {packet,http} mode Where we handle the return value of gen_tcp:recv while reading headers from the socket (such as with calls to yaws:do_recv), handle new R14B return values as well as existing return values for previous releases. (Steve)
  • for portability, use erlang:md5 rather than crypto md5 Since OpenSSL availability on Windows for working with the crypto module is apparently questionable, use the erlang:md5 function in place of the crypto md5 functions. (Steve)
  • websockets v76 update (Dominique Boucher)
  • several fcgi updates and bugfixes (Steve)
  • Add auth_skip_docroot server config variable (Christian Hennig)
  • Fix use_old_ssl=bool() for R14A (Joseph Wayne Norton)
  • add --umask option to yaws script (Steve)
  • Some yapp work, added a simple example (Mikael Karlsson)
  • performance enhancements (Steve)
  • add support for PHP FCGI applications (Hans-Christian Esperer)
  • fix cached process counter (Hans-Christian Esperer)
  • return part headers from yaws_multipart:read_multipart_form (Steve, based on a patch from Dilshod Temirkhodjaev.
  • patch for no-return-in-nonvoid-function error (Alexander Simonov)
  • two-mode.el now works with emacs 23 (Steve)
  • Allow "stream processes" to close the client socket (Steve)
  • Augment yaws man page with --erlarg argument quoting info (Steve)
  • Use gconf keepalive_timeout for connection lifetime (Brady McCary)
  • handle multi-word arguments for heart restart command (Steve)
  • Fix bug where yaws_api:parse_set_cookie tried to convert a record to lower case. (Anders Nygren)
  • patch by Sergey Shilov to set old_ssl for embedded mode
  • fix socket usage for FCGI authorization (bruno rijsman, steve vinoski)
  • work around an erlang:open_port bug for CGI QUERY_STRING env var (Steve)
  • Added a new configuration parameter called "keepalive_maxuses" which allows the yaws admin to close persistant connections after X number of uses. (Thomas O'Dowd )
  • improved embedded support (Steve)

  • v1.91 [09-15-11]

    Maintenance release with a long series of fixes mostly from Steve Vinoski./yaws

  • all.zip should not not include .yaws files, nor directories "protected" with an index file, nor directories protected by an auth directive. (Hans-Christian Esperer )
  • adjust to R14B change in gen_tcp:recv for {packet,http} mode Where we handle the return value of gen_tcp:recv while reading headers from the socket (such as with calls to yaws:do_recv), handle new R14B return values as well as existing return values for previous releases. (Steve)
  • for portability, use erlang:md5 rather than crypto md5 Since OpenSSL availability on Windows for working with the crypto module is apparently questionable, use the erlang:md5 function in place of the crypto md5 functions. (Steve)
  • websockets v76 update (Dominique Boucher)
  • several fcgi updates and bugfixes (Steve)
  • Add auth_skip_docroot server config variable (Christian Hennig)
  • Fix use_old_ssl=bool() for R14A (Joseph Wayne Norton)
  • add --umask option to yaws script (Steve)
  • Some yapp work, added a simple example (Mikael Karlsson)
  • performance enhancements (Steve)
  • add support for PHP FCGI applications (Hans-Christian Esperer)
  • fix cached process counter (Hans-Christian Esperer)
  • return part headers from yaws_multipart:read_multipart_form (Steve, based on a patch from Dilshod Temirkhodjaev.
  • patch for no-return-in-nonvoid-function error (Alexander Simonov)
  • two-mode.el now works with emacs 23 (Steve)
  • Allow "stream processes" to close the client socket (Steve)
  • Augment yaws man page with --erlarg argument quoting info (Steve)
  • Use gconf keepalive_timeout for connection lifetime (Brady McCary)
  • handle multi-word arguments for heart restart command (Steve)
  • Fix bug where yaws_api:parse_set_cookie tried to convert a record to lower case. (Anders Nygren)
  • patch by Sergey Shilov to set old_ssl for embedded mode
  • fix socket usage for FCGI authorization (bruno rijsman, steve vinoski)
  • work around an erlang:open_port bug for CGI QUERY_STRING env var (Steve)
  • Added a new configuration parameter called "keepalive_maxuses" which allows the yaws admin to close persistant connections after X number of uses. (Thomas O'Dowd )
  • improved embedded support (Steve)

  • v1.90 [06-02-11]

    Maintenance release with a long series of fixes mostly from Steve Vinoski./yaws

  • all.zip should not not include .yaws files, nor directories "protected" with an index file, nor directories protected by an auth directive. (Hans-Christian Esperer )
  • adjust to R14B change in gen_tcp:recv for {packet,http} mode Where we handle the return value of gen_tcp:recv while reading headers from the socket (such as with calls to yaws:do_recv), handle new R14B return values as well as existing return values for previous releases. (Steve)
  • for portability, use erlang:md5 rather than crypto md5 Since OpenSSL availability on Windows for working with the crypto module is apparently questionable, use the erlang:md5 function in place of the crypto md5 functions. (Steve)
  • websockets v76 update (Dominique Boucher)
  • several fcgi updates and bugfixes (Steve)
  • Add auth_skip_docroot server config variable (Christian Hennig)
  • Fix use_old_ssl=bool() for R14A (Joseph Wayne Norton)
  • add --umask option to yaws script (Steve)
  • Some yapp work, added a simple example (Mikael Karlsson)
  • performance enhancements (Steve)
  • add support for PHP FCGI applications (Hans-Christian Esperer)
  • fix cached process counter (Hans-Christian Esperer)
  • return part headers from yaws_multipart:read_multipart_form (Steve, based on a patch from Dilshod Temirkhodjaev.
  • patch for no-return-in-nonvoid-function error (Alexander Simonov)
  • two-mode.el now works with emacs 23 (Steve)
  • Allow "stream processes" to close the client socket (Steve)
  • Augment yaws man page with --erlarg argument quoting info (Steve)
  • Use gconf keepalive_timeout for connection lifetime (Brady McCary)
  • handle multi-word arguments for heart restart command (Steve)
  • Fix bug where yaws_api:parse_set_cookie tried to convert a record to lower case. (Anders Nygren)
  • patch by Sergey Shilov to set old_ssl for embedded mode
  • fix socket usage for FCGI authorization (bruno rijsman, steve vinoski)
  • work around an erlang:open_port bug for CGI QUERY_STRING env var (Steve)
  • Added a new configuration parameter called "keepalive_maxuses" which allows the yaws admin to close persistant connections after X number of uses. (Thomas O'Dowd )
  • improved embedded support (Steve)

  • v1.89 [09-28-10]

    Maintenance release with a long series of fixes mostly from Steve Vinoski./yaws

  • all.zip should not not include .yaws files, nor directories "protected" with an index file, nor directories protected by an auth directive. (Hans-Christian Esperer )
  • adjust to R14B change in gen_tcp:recv for {packet,http} mode Where we handle the return value of gen_tcp:recv while reading headers from the socket (such as with calls to yaws:do_recv), handle new R14B return values as well as existing return values for previous releases. (Steve)
  • for portability, use erlang:md5 rather than crypto md5 Since OpenSSL availability on Windows for working with the crypto module is apparently questionable, use the erlang:md5 function in place of the crypto md5 functions. (Steve)
  • websockets v76 update (Dominique Boucher)
  • several fcgi updates and bugfixes (Steve)
  • Add auth_skip_docroot server config variable (Christian Hennig)
  • Fix use_old_ssl=bool() for R14A (Joseph Wayne Norton)
  • add --umask option to yaws script (Steve)
  • Some yapp work, added a simple example (Mikael Karlsson)
  • performance enhancements (Steve)
  • add support for PHP FCGI applications (Hans-Christian Esperer)
  • fix cached process counter (Hans-Christian Esperer)
  • return part headers from yaws_multipart:read_multipart_form (Steve, based on a patch from Dilshod Temirkhodjaev.
  • patch for no-return-in-nonvoid-function error (Alexander Simonov)
  • two-mode.el now works with emacs 23 (Steve)
  • Allow "stream processes" to close the client socket (Steve)
  • Augment yaws man page with --erlarg argument quoting info (Steve)
  • Use gconf keepalive_timeout for connection lifetime (Brady McCary)
  • handle multi-word arguments for heart restart command (Steve)
  • Fix bug where yaws_api:parse_set_cookie tried to convert a record to lower case. (Anders Nygren)
  • patch by Sergey Shilov to set old_ssl for embedded mode
  • fix socket usage for FCGI authorization (bruno rijsman, steve vinoski)
  • work around an erlang:open_port bug for CGI QUERY_STRING env var (Steve)
  • Added a new configuration parameter called "keepalive_maxuses" which allows the yaws admin to close persistant connections after X number of uses. (Thomas O'Dowd )
  • improved embedded support (Steve)

  • v1.88 [03-20-10]

    Highlights in this release are, new SSL implementation is now default, FCGI enhhancements and IPV6 support.

  • ssl support for websockets, patch by wde
  • Erroneous common log format entries, time should be surrounded by brackets (Klacke)
  • When executing yaws --hup the order of the hosts in a virthost group wans't maintained, thus breaking the feature of pick first virthost on nomatch (Klacke)
  • set nodelay on FCGI TCP connection, and avoid 0-length FCGI gen_tcp:recv (steve)
  • Set {nodelay,true} on the TCP connection to the FCGI server to improve performance of small requests. (steve)
  • The code receives packets from the FCGI server and for some cases was extracting length fields from some packets and then making further gen_tcp:recv calls based on those length values. The code was not checking for length values of 0 before calling recv, and passing 0 to recv means to return all available bytes. For both correctness and performance, the code must avoid the recv calls altogether when the length is 0. (steve)
  • convert error atoms into error strings for fcgi_worker_fail (steve)
  • IpV6 support
  • The default value for partial_post_size was nolimit, not a good default value and also erroneoulsy documented (Klacke)
  • An atempt at having utf8 characters in the host names for yaws servers. Probably not entirely correct, but it works. (Klacke)
  • Anders Dahlin found that yaws log code doesn't delete the gen_event handler it adds error logger when terminating, that means that restarting yaws leaves old processes hanging around
  • dialyzer work (Klacke)
  • Closed Issue #31, made parsing of yaws.conf more tight complaining on e.g allowd_scripts = [ yaws ]
  • fix for FastCGI/PHP Issue (http://github.com/klacke/yaws/issues#issue/30) (davide)
  • auth through .yaws_auth files has become broken, (Klacke)
  • allow caller to set Host header for SOAP requests (Steve)
  • added support for OTP new ssl implementation ,Also set it as default. It's possible through yaws.conf to use the old SSL. The new seems to work well though, I've tested with a wide set of browsers, and in general it seems to work (klacke)

  • v1.87 [02-14-10]

    websocket support (davide and wde)

  • conditional compile of websockets, only use if the chosen erl supports it (klacke/steve)
  • patch by Andrei Soroker to strip the port part in #redir_self records - this patch may break some code, users that use redir_self() and unconditionally strip off their optional port number are affected
  • support some extra status codes in code_to_phrase (steve)
  • drop spaces before parsing ints - patch by Colm Dougan
  • proper handling of "/" appmod with excluded paths (patch from wde)
  • Added new unit tests for appmods, with both / and non-/ tests. The / tests include exclude_paths testing. (steve)
  • patch from wde solving a problem with appmod exclude paths and verify_upgrade
  • yaws_server: fixed the test for whether to close the socket. The yaws:outh_get_doclose() doesn't return a boolean and it requires the outh dicionary entry to be set (sometimes it isn't). (davide)
  • do not pass the --id option if the default id is used (steve)

  • Average review rating :

    Useful independent reviews and opinions of the users

    Review YawsWrite a review « Be the first to post a review for Yaws download!

    Predicted future versions and notices:

    The doDownload.com constantly monitors the update of all programs, including information from the Yaws 1.98 changelog file, however sometimes it can happen that data are not complete or are outdated.We assume that author continue's to develop 1.99 version with further advanced features, and soon you will be informed. Equally important 2.0 upgrades of the program we will continue to monitor. Full Yaws description has been compared with the overall software database and our algorithm has found the following applications (are showed below).