diff --git a/changelog.d/10302.doc b/changelog.d/10302.doc
new file mode 100644
index 0000000000000000000000000000000000000000..7386817de75c13fbac1585bb825616cde23e405f
--- /dev/null
+++ b/changelog.d/10302.doc
@@ -0,0 +1 @@
+Fix link pointing at the wrong section in the modules documentation page.
diff --git a/docs/modules.md b/docs/modules.md
index 3a9fab61b8c3b13bc34ebc16e1b681a753c3ca91..bec1c06d15f4beba79ab27c53a06a0ff47820f00 100644
--- a/docs/modules.md
+++ b/docs/modules.md
@@ -194,7 +194,7 @@ In order to port a module that uses Synapse's old module interface, its author n
 
 * ensure the module's callbacks are all asynchronous.
 * register their callbacks using one or more of the `register_[...]_callbacks` methods
-  from the `ModuleApi` class in the module's `__init__` method (see [this section](#registering-a-web-resource)
+  from the `ModuleApi` class in the module's `__init__` method (see [this section](#registering-a-callback)
   for more info).
 
 Additionally, if the module is packaged with an additional web resource, the module