diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
index d9aa5f557f0c5c5c34f2b46f0241e38b3fcbf9b1..e33d0b25aa357eb3aba0de68bb2b26a5cfffb223 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
@@ -2529,7 +2529,8 @@ public class SnarkManager implements CompleteListener, ClientApp {
             return DataHelper.escapeHTML(snark.getBaseName());
         StringBuilder buf = new StringBuilder(256);
         String base = DataHelper.escapeHTML(storage.getBaseName());
-        buf.append("<a href=\"").append(_contextPath).append('/').append(base);
+        String enc = base.replace("[", "%5B").replace("]", "%5D").replace("|", "%7C");
+        buf.append("<a href=\"").append(_contextPath).append('/').append(enc);
         if (meta.getFiles() != null || !storage.complete())
             buf.append('/');
         buf.append("\">").append(base).append("</a>");