diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
index bf0f75d..67d5edc 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -23,6 +23,7 @@
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
 import com.google.common.util.concurrent.UncheckedExecutionException;
+import com.google.gson.reflect.TypeToken;
 
 import org.eclipse.jgit.http.server.ServletUtils;
 import org.eclipse.jgit.lib.AnyObjectId;
@@ -38,6 +39,7 @@
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.LinkedHashMap;
 
 import javax.annotation.Nullable;
 import javax.servlet.http.HttpServletRequest;
@@ -85,6 +87,19 @@
     adv.end();
   }
 
+  @Override
+  protected void doGetJson(HttpServletRequest req, HttpServletResponse res)
+      throws IOException {
+    GitilesView view = ViewFilter.getView(req);
+    Map<String, Ref> refs = getRefs(ServletUtils.getRepository(req).getRefDatabase(),
+        view.getPathPart());
+    Map<String, RefJsonData> jsonRefs = new LinkedHashMap<String, RefJsonData>();
+    for (Map.Entry<String, Ref> ref : refs.entrySet()) {
+      jsonRefs.put(ref.getKey(), new RefJsonData(ref.getValue()));
+    }
+    renderJson(req, res, jsonRefs, new TypeToken<Map<String, RefJsonData>>() {}.getType());
+  }
+
   static List<Map<String, Object>> getBranchesSoyData(HttpServletRequest req, int limit)
       throws IOException {
     RefDatabase refdb = ServletUtils.getRepository(req).getRefDatabase();
@@ -209,4 +224,20 @@
       writer.close();
     }
   }
+
+  private static class RefJsonData {
+    public RefJsonData(Ref ref) {
+      value = ref.getObjectId().getName();
+      if(ref.getPeeledObjectId() != null) {
+        peeled = ref.getPeeledObjectId().getName();
+      }
+      if (ref.isSymbolic()) {
+        target = ref.getTarget().getName();
+      }
+    }
+
+    public String value;
+    public String peeled;
+    public String target;
+  }
 }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
index 7dde342..ca1a0dc 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -21,6 +21,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Maps;
 import com.google.gitiles.DateFormatter.Format;
+import com.google.gson.reflect.TypeToken;
 
 import org.eclipse.jgit.http.server.ServletUtils;
 import org.eclipse.jgit.lib.Constants;
@@ -53,10 +54,17 @@
   }
 
   @Override
-  protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
+  protected void doGetHtml(HttpServletRequest req, HttpServletResponse res) throws IOException {
     renderHtml(req, res, "gitiles.repositoryIndex", buildData(req));
   }
 
+  @Override
+  protected void doGetJson(HttpServletRequest req, HttpServletResponse res) throws IOException {
+    GitilesAccess access = getAccess(req);
+    RepositoryDescription desc = access.getRepositoryDescription();
+    renderJson(req, res, desc, new TypeToken<RepositoryDescription>() {}.getType());
+  }
+
   @VisibleForTesting
   Map<String, ?> buildData(HttpServletRequest req) throws IOException {
     GitilesView view = ViewFilter.getView(req);
