<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml"
  xml:lang="en" lang="en">
  <head>
    <title>Apache Traffic Server Downloads</title>
    <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file to you under the Apache License, Version 2.0 (the &quot;License&quot;); you may not use this file except in compliance with the License.  You may obtain a copy of the License at . https://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and limitations under the License. -->
    
    <!-- The 1140px Grid - https://cssgrid.net/ -->
    <!-- page_base =  -->
    <link rel="stylesheet" type="text/css" href="styles/1140.css" media="screen" />
    <link rel="stylesheet" type="text/css" href="styles/pygments_style.css" />
    <link rel="stylesheet" type="text/css" href="styles/styles.css" />
    <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Droid+Serif:regular,italic,bold" />
    <style type="text/css">
        .headerlink, .elementid-permalink {
            visibility: hidden;
          }
    </style>
    <!--css3-mediaqueries-js - https://code.google.com/p/css3-mediaqueries-js/ - Enables media queries in some unsupported browsers-->
    <script type="text/javascript" src="js/css3-mediaqueries.js"></script>
  </head>

  <body class="container">
    <!-- Header -->
    <div class="row" id="header">
      <div class="fourcol">
        <a href="/"><img class="logo" alt="Apache Traffic Server" src="/images/press/ts_logo_tm_380x73.png" /></a>
      </div>
      <div class="threecol">
        <a href="https://www.apache.org/"><img alt="The Apache Software Foundation" src="https://www.apache.org/images/feather-small.png" /></a>
      </div>
      <div class="fivecol right last" id="searchbox">
        
        <div id="header-sub">Apache Traffic Server Downloads </div>
      </div>
    </div>

    <!-- Navigation (next, previous, up, languages) -->
    <div class="row nav">
      
      <div class="ninecol">
        <a href="https://trafficserver.apache.org/">Home</a>
        <a href="/downloads">Downloads</a>
        <a href="https://docs.trafficserver.apache.org/en/latest/index.html">Documentation</a>
        <a href="https://cwiki.apache.org/confluence/display/TS/Apache+Traffic+Server">Wiki</a>
        <a href="https://github.com/apache/trafficserver/issues">Issues</a>
        <a href="/users.html">Customers</a>
        <a href="/acknowledgements.html">Acknowledgements</a>
        <a href="/press.html">Press kit</a>
        <a href="/assistance.html">Assistance</a>
      </div>
      <div class="threecol last right">
        <a href="https://apache.org/security/">Security</a>
        <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
        <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
      </div>
      
    </div>

    <div class="row content">
      <div class="twelvecol">
        <div id="content">
          <p>The latest stable release of Apache Traffic Server is v9.2.3, released on 2023-10-9.
In addition, we continue to support the v8.1.x LTS release train, currently v8.1.9,
which was released on 2023-10-09. We follow the <a href="http://semver.org">Semantic Versioning</a>
scheme. The goal is to release patch releases frequently, and minor releases as needed.
Within the major versions, all such patch and minor releases are all compatible.</p>
<p>When downloading from a mirror, please be sure to <a href="https://www.apache.org/info/verification.html">verify the hash and OpenPGP
compatible signature</a>.  To validate
the PGP signatures the <a href="https://www.apache.org/dist/trafficserver/KEYS">public keys from the release manager</a>
will be needed.  You can also
<a href="https://archive.apache.org/dist/trafficserver/">browse through all releases</a>
and hash signatures.</p>
<h1 id='current-v9x-release-924-924'>Current v9.x Release -- 9.2.4 <a href='#current-v9x-release-924-924' title='Permanent link to this' class='headerlink'>&para;</a></h1>
<p>Apache Traffic Server v9.2.4 was released on April 3rd, 2024.
 [<a href="https://www.apache.org/dist/trafficserver/trafficserver-9.2.4.tar.bz2.asc"><code>PGP</code></a>]
 [<a href="https://www.apache.org/dist/trafficserver/trafficserver-9.2.4.tar.bz2.sha512"><code>SHA512</code></a>]</p>
<p><a href="https://www.apache.org/dyn/closer.cgi/trafficserver/trafficserver-9.2.4.tar.bz2"
 class="download_ts">Traffic Server 9.2.4</a></p>
<p>v9.2.4 is our latest stable release. Additional details for this release are in the
<a href="https://raw.githubusercontent.com/apache/trafficserver/9.2.x/CHANGELOG-9.2.4">CHANGELOG</a>
and the the related <a href="https://github.com/apache/trafficserver/pulls?q=is:closed+is:pr+milestone:9.2.4">Github Issues and PRs</a>.</p>
<p>For details on the v9.x release, please see
<a href="https://docs.trafficserver.apache.org/en/9.2.x/release-notes/whats-new.en.html">9.2.x News</a>
(there's a new section specific to v9.2.x). There are also
details about <a href="https://docs.trafficserver.apache.org/en/9.2.x/release-notes/upgrading.en.html">upgrading to 9.x</a>.</p>
<h1 id='current-v8x-release-8110-8110'>Current v8.x Release -- 8.1.10 <a href='#current-v8x-release-8110-8110' title='Permanent link to this' class='headerlink'>&para;</a></h1>
<p>Apache Traffic Server v8.1.10 was released on April 3rd, 2024.
 [<a href="https://www.apache.org/dist/trafficserver/trafficserver-8.1.10.tar.bz2.asc"><code>PGP</code></a>]
 [<a href="https://www.apache.org/dist/trafficserver/trafficserver-8.1.10.tar.bz2.sha512"><code>SHA512</code></a>]</p>
<p><a href="https://www.apache.org/dyn/closer.cgi/trafficserver/trafficserver-8.1.10.tar.bz2"
 class="download_ts">Traffic Server 8.1.10</a></p>
<p>v8.1.10 is our latest stable release for the 8.x release. Additional details for this release are in the
<a href="https://raw.githubusercontent.com/apache/trafficserver/8.1.x/CHANGELOG-8.1.10">CHANGELOG</a>
and the the related <a href="https://github.com/apache/trafficserver/pulls?q=is:closed+is:pr+milestone:8.1.10">Github Issues and PRs</a>.</p>
<h1 id='archived-releases'>Archived Releases<a href='#archived-releases' title='Permanent link to this' class='headerlink'>&para;</a></h1>
<h2 id='apache-traffic-server-archive'><a href="https://archive.apache.org/dist/trafficserver/">Apache Traffic Server Archive</a><a href='#apache-traffic-server-archive' title='Permanent link to this' class='headerlink'>&para;</a></h2>
<!-- test -->
        </div>
      </div>
      <div class="fourcol last">
        
        
      </div>
    </div>

    <div id="footer" class="row">
    <div class="tencol">
      Copyright  &copy; 2019
      <a href="https://www.apache.org/">The Apache Software Foundation</a>.
      Licensed under
      the <a href="https://www.apache.org/licenses/">Apache License</a>,
      Version 2.0. Apache Traffic Server, Apache,
      the Apache Traffic Server logo, and the Apache feather logo are
      trademarks of The Apache Software Foundation.
      </div>
      <div class="twocol right last">
      <span id="apache_logo">
        <a href="https://www.apache.org/"><img alt="The Apache Software Foundation" src="https://www.apache.org/images/feather-small.png" /></a>
      </span>
      </div>
    </div>

  </body>
</html>
