diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
index ecde06a..fa76cb5 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
@@ -72,6 +72,7 @@
   private static final Logger log = LoggerFactory.getLogger(PathServlet.class);
 
   static final String MODE_HEADER = "X-Gitiles-Path-Mode";
+  static final String TYPE_HEADER = "X-Gitiles-Object-Type";
 
   /**
    * Submodule URLs where we know there is a web page if the user visits the
@@ -201,12 +202,17 @@
     }
   }
 
-  private void setModeHeader(HttpServletResponse res, FileType type) {
+  public static void setModeHeader(HttpServletResponse res, FileType type) {
     res.setHeader(MODE_HEADER, String.format("%06o", type.mode.getBits()));
   }
 
+  public static void setTypeHeader(HttpServletResponse res, int type) {
+    res.setHeader(TYPE_HEADER, Constants.typeString(type));
+  }
+
   private void writeBlobText(HttpServletRequest req, HttpServletResponse res, WalkResult wr)
       throws IOException {
+    setTypeHeader(res, wr.type.mode.getObjectType());
     setModeHeader(res, wr.type);
     try (Writer writer = startRenderText(req, res);
         OutputStream out = BaseEncoding.base64().encodingStream(writer)) {
@@ -216,6 +222,7 @@
 
   private void writeTreeText(HttpServletRequest req, HttpServletResponse res, WalkResult wr)
       throws IOException {
+    setTypeHeader(res, wr.type.mode.getObjectType());
     setModeHeader(res, wr.type);
 
     try (Writer writer = startRenderText(req, res);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
index c187d72..8b0b4d2 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
@@ -148,6 +148,7 @@
         if (loader.getType() != OBJ_COMMIT) {
           res.setStatus(SC_NOT_FOUND);
         } else {
+          PathServlet.setTypeHeader(res, loader.getType());
           try (Writer writer = startRenderText(req, res);
               OutputStream out = BaseEncoding.base64().encodingStream(writer)) {
             loader.copyTo(out);
