diff --git a/src/java/org/apache/nutch/service/model/request/SeedUrl.java b/src/java/org/apache/nutch/service/model/request/SeedUrl.java
index 14b8e35..b1c93a8 100644
--- a/src/java/org/apache/nutch/service/model/request/SeedUrl.java
+++ b/src/java/org/apache/nutch/service/model/request/SeedUrl.java
@@ -17,8 +17,6 @@
 package org.apache.nutch.service.model.request;
 
 import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
 
 import com.fasterxml.jackson.annotation.JsonBackReference;
 import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -32,8 +30,6 @@
 
   private String url;
 
-  private Map<String, String> metadata = new HashMap<>();
-
   public SeedUrl() {}
 
   public SeedUrl(String url) {
@@ -56,10 +52,6 @@
     this.url = url;
   }
 
-  public Map<String,String> getMetadata() { return metadata; }
-
-  public void setMetadata(Map<String,String> metadata) { this.metadata = metadata; }
-
   @JsonIgnore
   public SeedList getSeedList() {
     return seedList;
diff --git a/src/java/org/apache/nutch/service/resources/SeedResource.java b/src/java/org/apache/nutch/service/resources/SeedResource.java
index 180c033..e8a5be3 100644
--- a/src/java/org/apache/nutch/service/resources/SeedResource.java
+++ b/src/java/org/apache/nutch/service/resources/SeedResource.java
@@ -19,7 +19,6 @@
 import java.io.OutputStream;
 import java.lang.invoke.MethodHandles;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import javax.ws.rs.Consumes;
@@ -106,16 +105,6 @@
     if (CollectionUtils.isNotEmpty(seedUrls)) {
       for (SeedUrl seedUrl : seedUrls) {
         os.write(seedUrl.getUrl().getBytes());
-
-        Map<String,String> metadata = seedUrl.getMetadata();
-        Iterator<String> keyIterator = metadata.keySet().iterator();
-
-        while (keyIterator.hasNext()) {
-          String key = keyIterator.next();
-
-          os.write(String.format("\t%s=%s", key, metadata.get(key)).getBytes());
-        }
-
         os.write("\n".getBytes());
       }
     }
diff --git a/src/java/org/apache/nutch/webui/model/SeedUrl.java b/src/java/org/apache/nutch/webui/model/SeedUrl.java
index 40b105b..5f89241 100644
--- a/src/java/org/apache/nutch/webui/model/SeedUrl.java
+++ b/src/java/org/apache/nutch/webui/model/SeedUrl.java
@@ -17,8 +17,6 @@
 package org.apache.nutch.webui.model;
 
 import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -45,9 +43,6 @@
   @Column
   private String url;
 
-  @Column
-  private Map<String, String> metadata = new HashMap<>();
-
   public Long getId() {
     return id;
   }
@@ -64,10 +59,6 @@
     this.url = url;
   }
 
-  public Map<String,String> getMetadata() { return metadata; }
-
-  public void setMetadata(Map<String,String> metadata) { this.metadata = metadata; }
-
   @JsonIgnore
   public SeedList getSeedList() {
     return seedList;
