diff --git a/app/controllers/well_known/host_meta_controller.rb b/app/controllers/well_known/host_meta_controller.rb
index 201da9fbc3b..6dee587baf4 100644
--- a/app/controllers/well_known/host_meta_controller.rb
+++ b/app/controllers/well_known/host_meta_controller.rb
@@ -7,7 +7,23 @@ module WellKnown
     def show
       @webfinger_template = "#{webfinger_url}?resource={uri}"
       expires_in 3.days, public: true
-      render content_type: 'application/xrd+xml', formats: [:xml]
+
+      respond_to do |format|
+        format.any do
+          render content_type: 'application/xrd+xml', formats: [:xml]
+        end
+
+        format.json do
+          render json: {
+            links: [
+              {
+                rel: 'lrdd',
+                template: @webfinger_template,
+              },
+            ],
+          }
+        end
+      end
     end
   end
 end
diff --git a/config/routes.rb b/config/routes.rb
index 890102955c6..83170fba0f3 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -67,7 +67,7 @@ Rails.application.routes.draw do
   scope path: '.well-known' do
     scope module: :well_known do
       get 'oauth-authorization-server', to: 'oauth_metadata#show', as: :oauth_metadata, defaults: { format: 'json' }
-      get 'host-meta', to: 'host_meta#show', as: :host_meta, defaults: { format: 'xml' }
+      get 'host-meta', to: 'host_meta#show', as: :host_meta
       get 'nodeinfo', to: 'node_info#index', as: :nodeinfo, defaults: { format: 'json' }
       get 'webfinger', to: 'webfinger#show', as: :webfinger
     end
diff --git a/spec/requests/well_known/host_meta_spec.rb b/spec/requests/well_known/host_meta_spec.rb
index 09f17baa894..726911dda19 100644
--- a/spec/requests/well_known/host_meta_spec.rb
+++ b/spec/requests/well_known/host_meta_spec.rb
@@ -9,19 +9,39 @@ RSpec.describe 'The /.well-known/host-meta request' do
     expect(response)
       .to have_http_status(200)
       .and have_attributes(
-        media_type: 'application/xrd+xml',
-        body: host_meta_xml_template
+        media_type: 'application/xrd+xml'
+      )
+
+    doc = Nokogiri::XML(response.parsed_body)
+    expect(doc.at_xpath('/xrd:XRD/xrd:Link[@rel="lrdd"]/@template', 'xrd' => 'http://docs.oasis-open.org/ns/xri/xrd-1.0').value)
+      .to eq 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}'
+  end
+
+  it 'returns http success with valid JSON response with .json extension' do
+    get '/.well-known/host-meta.json'
+
+    expect(response)
+      .to have_http_status(200)
+      .and have_attributes(
+        media_type: 'application/json'
+      )
+
+    expect(response.parsed_body)
+      .to include(
+        links: [
+          'rel' => 'lrdd',
+          'template' => 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}',
+        ]
       )
   end
 
-  private
+  it 'returns http success with valid JSON response with Accept header' do
+    get '/.well-known/host-meta', headers: { 'Accept' => 'application/json' }
 
-  def host_meta_xml_template
-    <<~XML
-      <?xml version="1.0" encoding="UTF-8"?>
-      <XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
-        <Link rel="lrdd" template="https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}"/>
-      </XRD>
-    XML
+    expect(response)
+      .to have_http_status(200)
+      .and have_attributes(
+        media_type: 'application/json'
+      )
   end
 end
diff --git a/spec/routing/well_known_routes_spec.rb b/spec/routing/well_known_routes_spec.rb
index 6578e939ae1..84081059bba 100644
--- a/spec/routing/well_known_routes_spec.rb
+++ b/spec/routing/well_known_routes_spec.rb
@@ -4,9 +4,14 @@ require 'rails_helper'
 
 RSpec.describe 'Well Known routes' do
   describe 'the host-meta route' do
-    it 'routes to correct place with xml format' do
+    it 'routes to correct place' do
       expect(get('/.well-known/host-meta'))
-        .to route_to('well_known/host_meta#show', format: 'xml')
+        .to route_to('well_known/host_meta#show')
+    end
+
+    it 'routes to correct place with json format' do
+      expect(get('/.well-known/host-meta.json'))
+        .to route_to('well_known/host_meta#show', format: 'json')
     end
   end