<!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="https://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="https://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="https://jmeter.apache.org/"><img class="logo" src="./images/logo.svg" alt="Apache JMeter"></a>
</div>
<div class="banner">
<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
<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="https://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="./usermanual/properties_reference.html">Properties 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="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Tutorials</div>
<ul>
<li>
<a href="./usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
</li>
<li>
<a href="./usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
</li>
<li>
<a href="./usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
</li>
<li>
<a href="./usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
</li>
<li>
<a href="./usermanual/jmeter_tutorial.html">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="https://www.apache.org/security/">Security</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="https://cwiki.apache.org/confluence/display/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="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
</li>
<li>
<a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a href="https://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">SHA-512</span> link downloads the sha512 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 5.2 (Requires Java 8+)</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-5.2.tgz">apache-jmeter-5.2.tgz</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-5.2.tgz.sha512">sha512</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-5.2.tgz.asc">pgp</a></td>
          
</tr>
          
<tr>
              
<td><a href="[preferred]/jmeter/binaries/apache-jmeter-5.2.zip">apache-jmeter-5.2.zip</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-5.2.zip.sha512">sha512</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/binaries/apache-jmeter-5.2.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-5.2_src.tgz">apache-jmeter-5.2_src.tgz</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-5.2_src.tgz.sha512">sha512</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-5.2_src.tgz.asc">pgp</a></td>
          
</tr>
          
<tr>
              
<td><a href="[preferred]/jmeter/source/apache-jmeter-5.2_src.zip">apache-jmeter-5.2_src.zip</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-5.2_src.zip.sha512">sha512</a></td>
              <td><a href="https://www.apache.org/dist/jmeter/source/apache-jmeter-5.2_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>
</ul>
</div>
<a href="#top" id="topButton">Go to top</a>
</div>
<div class="footer">
<div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2019
            , 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(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            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>
