diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
index 25285da..39f0adb 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
@@ -18,11 +18,11 @@
 import static com.google.gitiles.FormatType.HTML;
 import static com.google.gitiles.FormatType.JSON;
 import static com.google.gitiles.FormatType.TEXT;
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
 import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
 import static javax.servlet.http.HttpServletResponse.SC_OK;
 
-import com.google.common.base.Charsets;
 import com.google.common.base.Objects;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableMap;
@@ -227,7 +227,7 @@
   private Map<String, ?> startHtmlResponse(HttpServletRequest req, HttpServletResponse res,
       Map<String, ?> soyData) throws IOException {
     res.setContentType(FormatType.HTML.getMimeType());
-    res.setCharacterEncoding(Charsets.UTF_8.name());
+    res.setCharacterEncoding(UTF_8.name());
     setCacheHeaders(res);
 
     Map<String, Object> allData = getData(req);
@@ -344,7 +344,7 @@
     if (!Strings.isNullOrEmpty(contentType)) {
       res.setContentType(contentType);
     }
-    res.setCharacterEncoding(Charsets.UTF_8.name());
+    res.setCharacterEncoding(UTF_8.name());
     res.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment");
     res.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");
     setCacheHeaders(res);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
index fb7ff3b..7bbc2f3 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
@@ -14,7 +14,8 @@
 
 package com.google.gitiles;
 
-import com.google.common.base.Charsets;
+import static java.nio.charset.StandardCharsets.UTF_8;
+
 import com.google.common.base.Function;
 
 import java.io.UnsupportedEncodingException;
@@ -38,7 +39,7 @@
     @Override
     public String apply(String s) {
       try {
-        return URLEncoder.encode(s, Charsets.UTF_8.name())
+        return URLEncoder.encode(s, UTF_8.name())
             .replace("%2F", "/")
             .replace("%2f", "/")
             .replace("+", "%20")
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
index ef14ab8..6165979 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
@@ -18,9 +18,9 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.gitiles.GitilesUrls.NAME_ESCAPER;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Charsets;
 import com.google.common.base.Objects;
 import com.google.common.base.Objects.ToStringHelper;
 import com.google.common.base.Strings;
@@ -744,10 +744,10 @@
       } else {
         first = false;
       }
-      sb.append(URLEncoder.encode(e.getKey(), Charsets.UTF_8.name()));
+      sb.append(URLEncoder.encode(e.getKey(), UTF_8.name()));
       if (!"".equals(e.getValue())) {
         sb.append('=')
-            .append(URLEncoder.encode(e.getValue(), Charsets.UTF_8.name()));
+            .append(URLEncoder.encode(e.getValue(), UTF_8.name()));
       }
     }
     return sb.toString();
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java
index 470e3b6..4eafffa 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java
@@ -16,11 +16,10 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.net.HttpHeaders.LOCATION;
-
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static javax.servlet.http.HttpServletResponse.SC_GONE;
 import static javax.servlet.http.HttpServletResponse.SC_MOVED_PERMANENTLY;
 
-import com.google.common.base.Charsets;
 import com.google.common.base.Objects;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
@@ -209,7 +208,7 @@
 
   private static String decode(String str) {
     try {
-      return URLDecoder.decode(str, Charsets.UTF_8.name());
+      return URLDecoder.decode(str, UTF_8.name());
     } catch (UnsupportedEncodingException e) {
       return str;
     }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/HtmlDiffFormatter.java b/gitiles-servlet/src/main/java/com/google/gitiles/HtmlDiffFormatter.java
index 98a8be3..84f6abf 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/HtmlDiffFormatter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/HtmlDiffFormatter.java
@@ -15,9 +15,9 @@
 package com.google.gitiles;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.eclipse.jgit.util.QuotedString.GIT_PATH;
 
-import com.google.common.base.Charsets;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 
@@ -37,16 +37,16 @@
 
 /** Formats a unified format patch as UTF-8 encoded HTML. */
 final class HtmlDiffFormatter extends DiffFormatter {
-  private static final byte[] DIFF_BEGIN = "<pre class=\"diff-unified\">".getBytes(Charsets.UTF_8);
-  private static final byte[] DIFF_END = "</pre>".getBytes(Charsets.UTF_8);
+  private static final byte[] DIFF_BEGIN = "<pre class=\"diff-unified\">".getBytes(UTF_8);
+  private static final byte[] DIFF_END = "</pre>".getBytes(UTF_8);
 
-  private static final byte[] HUNK_BEGIN = "<span class=\"h\">".getBytes(Charsets.UTF_8);
-  private static final byte[] HUNK_END = "</span>".getBytes(Charsets.UTF_8);
+  private static final byte[] HUNK_BEGIN = "<span class=\"h\">".getBytes(UTF_8);
+  private static final byte[] HUNK_END = "</span>".getBytes(UTF_8);
 
-  private static final byte[] LINE_INSERT_BEGIN = "<span class=\"i\">".getBytes(Charsets.UTF_8);
-  private static final byte[] LINE_DELETE_BEGIN = "<span class=\"d\">".getBytes(Charsets.UTF_8);
-  private static final byte[] LINE_CHANGE_BEGIN = "<span class=\"c\">".getBytes(Charsets.UTF_8);
-  private static final byte[] LINE_END = "</span>\n".getBytes(Charsets.UTF_8);
+  private static final byte[] LINE_INSERT_BEGIN = "<span class=\"i\">".getBytes(UTF_8);
+  private static final byte[] LINE_DELETE_BEGIN = "<span class=\"d\">".getBytes(UTF_8);
+  private static final byte[] LINE_CHANGE_BEGIN = "<span class=\"c\">".getBytes(UTF_8);
+  private static final byte[] LINE_END = "</span>\n".getBytes(UTF_8);
 
   private final Renderer renderer;
   private final GitilesView view;
@@ -112,7 +112,7 @@
     getOutputStream().write(renderer.newRenderer("gitiles.diffHeader")
         .setData(ImmutableMap.of("firstParts", parts, "rest", rest, "fileIndex", fileIndex))
         .render()
-        .getBytes(Charsets.UTF_8));
+        .getBytes(UTF_8));
   }
 
   private String revisionUrl(Revision rev, String path) {
@@ -153,7 +153,7 @@
         break;
     }
     out.write(prefix);
-    out.write(StringEscapeUtils.escapeHtml4(text.getString(cur)).getBytes(Charsets.UTF_8));
+    out.write(StringEscapeUtils.escapeHtml4(text.getString(cur)).getBytes(UTF_8));
     out.write(LINE_END);
   }
 }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java b/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java
index 6965b81..676447b 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java
@@ -16,8 +16,8 @@
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
-import com.google.common.base.Charsets;
 import com.google.common.base.Function;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
@@ -108,7 +108,7 @@
       throws IOException {
     res.setContentType("text/html");
     res.setCharacterEncoding("UTF-8");
-    byte[] data = newRenderer(templateName).setData(soyData).render().getBytes(Charsets.UTF_8);
+    byte[] data = newRenderer(templateName).setData(soyData).render().getBytes(UTF_8);
     res.setContentLength(data.length);
     res.getOutputStream().write(data);
   }
@@ -124,7 +124,7 @@
     int lt = html.lastIndexOf('<', id);
     final int gt = html.indexOf('>', id + PLACEHOLDER.length());
     final OutputStream out = res.getOutputStream();
-    out.write(html.substring(0, lt).getBytes(Charsets.UTF_8));
+    out.write(html.substring(0, lt).getBytes(UTF_8));
     out.flush();
 
     return new OutputStream() {
@@ -150,7 +150,7 @@
 
       @Override
       public void close() throws IOException {
-        out.write(html.substring(gt + 1).getBytes(Charsets.UTF_8));
+        out.write(html.substring(gt + 1).getBytes(UTF_8));
         out.close();
       }
     };
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
index 2c55a70..70dfcde 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
@@ -14,10 +14,10 @@
 
 package com.google.gitiles;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.eclipse.jgit.lib.Constants.OBJ_COMMIT;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Charsets;
 import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -116,7 +116,7 @@
       if (type == FileType.SYMLINK) {
         String target = new String(
             reader.open(tw.getObjectId(0)).getCachedBytes(),
-            Charsets.UTF_8);
+            UTF_8);
         entry.put("targetName", getTargetDisplayName(target));
         String targetUrl = resolveTargetUrl(view, target);
         if (targetUrl != null) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java b/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java
index 55cae63..3886f29 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java
@@ -17,7 +17,6 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Predicates.not;
 import static com.google.common.collect.Collections2.filter;
-
 import static org.eclipse.jgit.lib.Constants.R_HEADS;
 import static org.eclipse.jgit.lib.Constants.R_TAGS;
 
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/FakeHttpServletRequest.java b/gitiles-servlet/src/test/java/com/google/gitiles/FakeHttpServletRequest.java
index bfb541b..584294b 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/FakeHttpServletRequest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/FakeHttpServletRequest.java
@@ -14,10 +14,10 @@
 
 package com.google.gitiles;
 
-import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.gitiles.TestGitilesUrls.URLS;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.BufferedReader;
 import java.io.UnsupportedEncodingException;
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/FakeHttpServletResponse.java b/gitiles-servlet/src/test/java/com/google/gitiles/FakeHttpServletResponse.java
index 558eb4c..5a9f8e4 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/FakeHttpServletResponse.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/FakeHttpServletResponse.java
@@ -14,10 +14,10 @@
 
 package com.google.gitiles;
 
-import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -31,7 +31,6 @@
 
 import org.eclipse.jgit.util.RawParseUtils;
 
-import com.google.common.base.Charsets;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.LinkedListMultimap;
 import com.google.common.collect.ListMultimap;
@@ -127,7 +126,7 @@
 
   @Override
   public void setCharacterEncoding(String name) {
-    checkArgument(Charsets.UTF_8.equals(Charset.forName(name)),
+    checkArgument(UTF_8.equals(Charset.forName(name)),
         "unsupported charset: %s", name);
   }
 
