diff --git a/CHANGES.md b/CHANGES.md
index b512d9ff3f4a352e789730e043f1d9d5f9cc2a9d..284bdf835c176f74baa5b6a6764ec62188181f6e 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,9 @@
+Synapse 1.39.0 (2021-07-29)
+===========================
+
+No significant changes.
+
+
 Synapse 1.39.0rc3 (2021-07-28)
 ==============================
 
diff --git a/debian/changelog b/debian/changelog
index 4944e5571413404fb278c3a9f2dd22a150af5373..c8e6fa15fe227c5ceab0b190364a6411a7f5e467 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+matrix-synapse-py3 (1.39.0) stable; urgency=medium
+
+  * New synapse release 1.39.0.
+
+ -- Synapse Packaging team <packages@matrix.org>  Thu, 29 Jul 2021 09:59:00 +0100
+
 matrix-synapse-py3 (1.39.0~rc3) stable; urgency=medium
 
   * New synapse release 1.39.0~rc3.
diff --git a/synapse/__init__.py b/synapse/__init__.py
index c9a445c8fe47969742d6f1b52e7400c8398fdff3..5da6c924fcecc32091e5a9f30a6ed57a6efaf00e 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -47,7 +47,7 @@ try:
 except ImportError:
     pass
 
-__version__ = "1.39.0rc3"
+__version__ = "1.39.0"
 
 if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)):
     # We import here so that we don't have to install a bunch of deps when