diff --git a/docs/advanced_topics/customisation/rich_text_internals.rst b/docs/advanced_topics/customisation/rich_text_internals.rst
index 318f83720..8164b17b4 100644
--- a/docs/advanced_topics/customisation/rich_text_internals.rst
+++ b/docs/advanced_topics/customisation/rich_text_internals.rst
@@ -70,75 +70,132 @@ Any app within your project can define extensions to Wagtail's rich text handlin
# add new definitions to 'features' here
-Link rewrite handlers
----------------------
+Rewrite handlers
+----------------
-.. method:: FeatureRegistry.register_link_type(linktype, handler)
+Rewrite handlers are classes that know how to translate the content of rich text tags like ```` and ```` into front-end HTML. For example, the ``PageLinkHandler`` class knows how to convert the rich text tag ```` into the HTML tag ````.
-The ``register_link_type`` method allows you to define a function to be called when an ```` tag with a given ``linktype`` attribute is encountered. This function receives a dictionary of attributes from the original ```` tag, and returns a string to replace that opening tag (which must be a valid HTML ```` tag). The link element content and closing ```` tag is left unchanged.
+Rewrite handlers can also provide other useful information about rich text tags. For example, given an appropriate tag, ``PageLinkHandler`` can be used to extract which page is being referred to. This can be useful for downstream code that may want information about objects being referenced in rich text.
+
+You can create custom rewrite handlers to support your own new ``linktype`` and ``embedtype`` tags. New handlers must be Python classes that inherit from either ``wagtail.core.richtext.LinkHandler`` or ``wagtail.core.richtext.EmbedHandler``. Your new classes should override at least some of the following methods (listed here for ``LinkHandler``, although ``EmbedHandler`` has an identical signature):
+
+.. class:: LinkHandler
+
+ .. attribute:: identifier
+
+ Required. The ``identifier`` attribute is a string that indicates which rich text tags should be handled by this handler.
+
+ For example, ``PageLinkHandler.get_identifier`` returns the string ``"page"``, indicating that any rich text tags with ```` should be handled by it.
+
+ .. method:: expand_db_attributes(attrs)
+
+ Required. The ``expand_db_attributes`` method is expected to take a dictionary of attributes from a database rich text ```` tag (``