<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-15"><title>Apache JMeter
          -
          Download Apache JMeter</title><meta name="viewport" content="width=device-width, initial-scale=1"><link href="http://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css"><link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css"><link rel="stylesheet" type="text/css" href="./css/new-style.css"><link rel="apple-touch-icon-precomposed" href="./images/apple-touch-icon.png"><link rel="icon" href="./images/favicon.png"><meta name="msapplication-TileColor" content="#ffffff"><meta name="msapplication-TileImage" content="./images/mstile-144x144.png"><meta name="theme-color" content="#ffffff"></head><body role="document"><a href="#content" class="hidden">Main content</a><div class="header"><!--
            APACHE LOGO
          --><div><a href="http://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="./images/asf-logo.svg" alt="Logo ASF"></a></div><!--
              PROJECT LOGO
            --><div><a href="http://jmeter.apache.org/"><img class="logo" src="./images/logo.svg" alt="Apache JMeter"></a></div><div class="banner"><iframe src="http://www.apache.org/ads/bannerbar.html" style="border-width:0;" frameborder="0" scrolling="no"></iframe><div class="clear"></div></div></div><div class="nav"><ul class="menu"><li onClick="return true"><div class="menu-title">About</div><ul><li><a href="./index.html">Overview</a></li><li><a href="http://www.apache.org/licenses/">License</a></li></ul></li></ul><ul class="menu"><li onClick="return true"><div class="menu-title">Download</div><ul><li><a href="./download_jmeter.cgi">Download Releases</a></li><li><a href="./changes.html">Release Notes</a></li></ul></li></ul><ul class="menu"><li onClick="return true"><div class="menu-title">Documentation</div><ul><li><a href="./usermanual/get-started.html">Get Started</a></li><li><a href="./usermanual/index.html">User Manual</a></li><li><a href="./usermanual/best-practices.html">Best Practices</a></li><li><a href="./usermanual/component_reference.html">Component Reference</a></li><li><a href="./usermanual/functions.html">Functions Reference</a></li><li><a href="./changes_history.html">Change History</a></li><li><a href="./api/index.html">Javadocs</a></li><li><a href="./building.html">Building JMeter and Add-Ons</a></li><li><a href="http://wiki.apache.org/jmeter">JMeter Wiki</a></li><li><a href="http://wiki.apache.org/jmeter/JMeterFAQ">FAQ (Wiki)</a></li></ul></li></ul><ul class="menu"><li onClick="return true"><div class="menu-title">Tutorials (PDF format)</div><ul><li><a href="./usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed Testing</a></li><li><a href="./usermanual/jmeter_proxy_step_by_step.pdf">Recording Tests</a></li><li><a href="./usermanual/junitsampler_tutorial.pdf">JUnit Sampler</a></li><li><a href="./usermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a></li><li><a href="./extending/jmeter_tutorial.pdf">Extending JMeter</a></li></ul></li></ul><ul class="menu"><li onClick="return true"><div class="menu-title">Community</div><ul><li><a href="./issues.html">Issue Tracking</a></li><li><a href="./mail.html">Mailing Lists</a></li><li><a href="./svnindex.html">Source Repositories</a></li><li><a href="./building.html">Building and Contributing</a></li><li><a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a></li><li><a href="http://wiki.apache.org/jmeter/JMeterCommitters">Contributors</a></li></ul></li></ul><ul class="menu"><li onClick="return true"><div class="menu-title">Foundation</div><ul><li><a href="http://www.apache.org/">ASF</a></li><li><a href="http://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a></li><li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li></ul></li></ul></div><div class="main" id="content"><div class="social-media"><ul class="social-media-links"><li class="twitter"><a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a></li><li class="github"><a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a></li></ul></div><div class="section"><h1>Download Apache JMeter</h1>
      <p>
        We recommend you use a mirror to download our release
        builds, but you <strong>must</strong> <a href="http://www.apache.org/info/verification.html">verify the integrity</a> of
        the downloaded files using signatures downloaded from our main 
        distribution directories. Recent releases (48 hours) may not yet
        be available from all the mirrors.
      </p>

      <p>
        You are currently using <b>[preferred]</b>.  If you
        encounter a problem with this mirror, please select another
        mirror.  If all mirrors are failing, there are <i>backup</i>
        mirrors (at the end of the mirrors list) that should be
        available.
        <br>
        [if-any logo]<a href="[link]"><img align="right" src="[logo]" border="0"></a>[end]
      </p>

      <form action="[location]" method="get" id="SelectMirror">
        <p>
          Other mirrors: 
          <select name="Preferred">
          [if-any http]
            [for http]<option value="[http]">[http]</option>[end]
          [end]
          [if-any ftp]
            [for ftp]<option value="[ftp]">[ftp]</option>[end]
          [end]
          [if-any backup]
            [for backup]<option value="[backup]">[backup] (backup)</option>[end]
          [end]
          </select>
          <input type="submit" value="Change">
        </p>
      </form>

      <p>
        The <span class="code">KEYS</span> link links to the code signing keys used to sign the product.
        The <span class="code">PGP</span> link downloads the OpenPGP compatible signature from our main site. 
        The <span class="code">MD5</span> link downloads the md5 checksum from the main site.
        The <span class="code">SHA</span> link downloads the sha checksum from the main site.
        Please <a href="http://www.apache.org/info/verification.html">verify the integrity</a>
        of the downloaded file.
      </p>
      <p>
      For more information concerning Apache JMeter, see the <a href="http://jmeter.apache.org/">Apache JMeter</a> site. 
      </p>
      <p>
      <a href="https://www.apache.org/dist/jmeter/KEYS">KEYS</a>
      </p>
    </div><div class="section"><h1>Apache JMeter 3.0 (Requires Java 7 or later)</h1>
      <div class="subsection"><h2 id="binaries">Binaries<a class="sectionlink" href="#binaries" title="Link to here">&para;</a></h2>
        <table>
          <tr>
              <td><a href="[preferred]/jmeter/binaries/apache-jmeter-3.0.tgz">apache-jmeter-3.0.tgz</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-3.0.tgz.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-3.0.tgz.sha">sha</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-3.0.tgz.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/jmeter/binaries/apache-jmeter-3.0.zip">apache-jmeter-3.0.zip</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-3.0.zip.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-3.0.zip.sha">sha</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-3.0.zip.asc">pgp</a></td>
          </tr>
        </table>
      </div>
      <div class="subsection"><h2 id="source">Source<a class="sectionlink" href="#source" title="Link to here">&para;</a></h2>
        <table>
          <tr>
              <td><a href="[preferred]/jmeter/source/apache-jmeter-3.0_src.tgz">apache-jmeter-3.0_src.tgz</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-3.0_src.tgz.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-3.0_src.tgz.sha">sha</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-3.0_src.tgz.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/jmeter/source/apache-jmeter-3.0_src.zip">apache-jmeter-3.0_src.zip</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-3.0_src.zip.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-3.0_src.zip.sha">sha</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-3.0_src.zip.asc">pgp</a></td>
          </tr>
        </table>
      </div>
    </div><div class="section"><h1>Archives</h1>
        <p>
          Older releases can be obtained from the archives.
        </p>
        <ul>
          <li class="download"><a href="[preferred]/jmeter/">browse download area</a></li>
          <li><a href="https://archive.apache.org/dist/jmeter/">Apache JMeter archives&hellip;</a></li>
          <li><a href="https://archive.apache.org/dist/jakarta/jmeter/">Apache Jakarta JMeter archives&hellip;</a></li>
        </ul>
    </div><div class="section"><h1>Verification of downloads</h1>
    <p>
    It is essential that you verify the integrity of the downloaded files using the PGP signature. 
    Please read <a href="http://www.apache.org/info/verification.html">Verifying Apache Software Foundation Releases</a> for more information on why you should verify our releases.
    </p>
    </div><div class="share-links">
      Share this page:
      <ul><li class="fb"><a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a></li><li class="twitter"><a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a></li><li class="gplus"><a data-social-url="https://plus.google.com/share?url=" title="Share on Google+"><i class="fa fa-google-plus" aria-hidden="true"></i>share</a></li></ul></div></div><div class="footer"><div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2016
            , Apache Software Foundation
          </div><div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div></div><script>(function(){
            // fill in the current location into social links on this page.
            "use strict";
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script></body></html>