diff --git a/java/com/google/gitiles/BranchRedirectFilter.java b/java/com/google/gitiles/BranchRedirectFilter.java
index 48ff35b..12dc2b4 100644
--- a/java/com/google/gitiles/BranchRedirectFilter.java
+++ b/java/com/google/gitiles/BranchRedirectFilter.java
@@ -107,6 +107,15 @@
   }
 
   private static boolean isForAutomation(HttpServletRequest req) {
-    return !FormatType.getFormatType(req).orElse(HTML).equals(HTML);
+    FormatType formatType = FormatType.getFormatType(req).orElse(HTML);
+    switch (formatType) {
+      case HTML:
+      case DEFAULT:
+        return false;
+      case JSON:
+      case TEXT:
+      default:
+        return true;
+    }
   }
 }
diff --git a/javatests/com/google/gitiles/BranchRedirectFilterTest.java b/javatests/com/google/gitiles/BranchRedirectFilterTest.java
index c994038..fbf0ff4 100644
--- a/javatests/com/google/gitiles/BranchRedirectFilterTest.java
+++ b/javatests/com/google/gitiles/BranchRedirectFilterTest.java
@@ -19,8 +19,10 @@
 import static javax.servlet.http.HttpServletResponse.SC_MOVED_TEMPORARILY;
 import static javax.servlet.http.HttpServletResponse.SC_OK;
 
+import com.google.common.base.Strings;
 import com.google.common.net.HttpHeaders;
 import java.util.Optional;
+import javax.annotation.Nullable;
 import org.eclipse.jgit.internal.storage.dfs.DfsRepository;
 import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
 import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
@@ -94,6 +96,19 @@
   }
 
   @Test
+  public void show_withRedirect_onDefaultFormatType() throws Exception {
+    repo.branch(MASTER).commit().add("foo", "contents").create();
+
+    String path = "/repo/+/refs/heads/master/foo";
+    FakeHttpServletRequest req = newHttpRequest(path, ORIGIN, null);
+    FakeHttpServletResponse res = new FakeHttpServletResponse();
+
+    servlet.service(req, res);
+    assertThat(res.getStatus()).isEqualTo(SC_MOVED_PERMANENTLY);
+    assertThat(res.getHeader(HttpHeaders.LOCATION)).isEqualTo("/b/repo/+/refs/heads/main/foo");
+  }
+
+  @Test
   public void show_onAutomationRequest() throws Exception {
     repo.branch(MASTER).commit().add("foo", "contents").create();
 
@@ -235,11 +250,13 @@
   }
 
   private static FakeHttpServletRequest newHttpRequest(
-      String path, String origin, String queryString) {
+      String path, String origin, @Nullable String queryString) {
     FakeHttpServletRequest req = FakeHttpServletRequest.newRequest();
     req.setHeader(HttpHeaders.ORIGIN, origin);
     req.setPathInfo(path);
-    req.setQueryString(queryString);
+    if (!Strings.isNullOrEmpty(queryString)) {
+      req.setQueryString(queryString);
+    }
     return req;
   }
 }
