diff --git a/datasette/utils/__init__.py b/datasette/utils/__init__.py
index c339113c37..160c1f7a6b 100644
--- a/datasette/utils/__init__.py
+++ b/datasette/utils/__init__.py
@@ -1094,3 +1094,4 @@ async def derive_named_parameters(db, sql):
 def add_cors_headers(headers):
     headers["Access-Control-Allow-Origin"] = "*"
     headers["Access-Control-Allow-Headers"] = "Authorization"
+    headers["Access-Control-Expose-Headers"] = "Link"
diff --git a/datasette/views/base.py b/datasette/views/base.py
index a9953dfd3b..cd03514b69 100644
--- a/datasette/views/base.py
+++ b/datasette/views/base.py
@@ -137,10 +137,18 @@ async def render(self, templates, request, context=None):
                 ],
             },
         }
+        # Hacky cheat to add extra headers
+        headers = {}
+        if "_extra_headers" in context:
+            headers.update(context["_extra_headers"])
         return Response.html(
             await self.ds.render_template(
-                template, template_context, request=request, view_name=self.name
-            )
+                template,
+                template_context,
+                request=request,
+                view_name=self.name,
+            ),
+            headers=headers,
         )
 
     @classmethod
diff --git a/datasette/views/table.py b/datasette/views/table.py
index 1960f455c6..074373bcf3 100644
--- a/datasette/views/table.py
+++ b/datasette/views/table.py
@@ -17,6 +17,7 @@
     is_url,
     path_from_row_pks,
     path_with_added_args,
+    path_with_format,
     path_with_removed_args,
     path_with_replaced_args,
     to_css_class,
@@ -958,6 +959,13 @@ async def table_actions():
                 "metadata": metadata,
                 "view_definition": await db.get_view_definition(table),
                 "table_definition": await db.get_table_definition(table),
+                "_extra_headers": {
+                    "Link": '{}; rel="alternate"; type="application/json+datasette"'.format(
+                        self.ds.absolute_url(
+                            request, path_with_format(request=request, format="json")
+                        ),
+                    )
+                },
             }
 
         return (