diff --git a/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml
index e7585bb45b61c1d4a5826ebcf2bcf6b289e67fbf..8e1cf6c9545e5a2762a081ef2df94a83450d3e1a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml
@@ -83,7 +83,10 @@
                                     </HBox>
                                     <ScrollPane prefHeight="183.0" prefWidth="297.0" VBox.vgrow="ALWAYS">
                                        <content>
-                                          <VBox fx:id="vboxCategories" spacing="5.0" />
+                                          <VBox fx:id="vboxCategories" spacing="5.0">
+                                             <padding>
+                                                <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                             </padding></VBox>
                                        </content>
                                     </ScrollPane>
                                  </children>
@@ -155,7 +158,10 @@
                                     </HBox>
                                     <ScrollPane prefHeight="85.0" prefWidth="409.0" VBox.vgrow="ALWAYS">
                                        <content>
-                                          <VBox fx:id="vboxTags" spacing="5.0" />
+                                          <VBox fx:id="vboxTags" spacing="5.0">
+                                             <padding>
+                                                <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                             </padding></VBox>
                                        </content>
                                     </ScrollPane>
                                  </children>
diff --git a/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImportExport.java b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImportExport.java
index 977bc2ace288c4f49f96761aef1b2d81132f34ff..96a79db8b3d4701dc36bfe49f283756f068c808f 100644
--- a/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImportExport.java
+++ b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImportExport.java
@@ -1,7 +1,14 @@
 package de.deadlocker8.budgetmasterserver.logic.database;
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
 /**
  * Used to mark model classes that only exists in order to allow gson to import and export the database  
  *
  */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.SOURCE)
 public @interface DatabaseImportExport {}
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseTagHandler.java b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseTagHandler.java
index 9067c035793e6f9eaf43a4bc60ca79d4d64bba2d..562e2b20fe13dd7e71fc4f734e65d498e587b0a9 100644
--- a/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseTagHandler.java
+++ b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseTagHandler.java
@@ -386,4 +386,30 @@ public class DatabaseTagHandler
 			closeConnection(stmt);
 		}
 	}
+	
+	public boolean isTagUsedInMatches(int tagID)
+	{
+		PreparedStatement stmt = null;
+		try
+		{
+			stmt = connection.prepareStatement("SELECT * FROM tag_match WHERE tag_match.Tag_ID = ?;");
+			stmt.setInt(1, tagID);
+			ResultSet rs = stmt.executeQuery();
+
+            while(rs.next())
+            {
+            	return true;
+            }
+		}
+		catch(SQLException e)
+		{
+			Logger.error(e);
+		}
+		finally
+		{
+			closeConnection(stmt);
+		}
+		
+		return false;
+	}	
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java b/src/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java
index dd5613c6cc9a9391b2f74b424f2544c76f6ee17c..9f676c0e8252312921ce688c2fb8ee95f2625dbb 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java
@@ -3,6 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.tag.match;
 import static spark.Spark.halt;
 
 import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler;
+import de.deadlocker8.budgetmasterserver.server.updater.TagUpdater;
 import spark.Request;
 import spark.Response;
 import spark.Route;
@@ -35,6 +36,9 @@ public class TagMatchDeleteForPayment implements Route
 			}
 			
 			tagHandler.deleteTagMatchForPayment(tagID, paymentID);
+			
+			TagUpdater tagUpdater = new TagUpdater(tagHandler);
+			tagUpdater.deleteTagsIfNotReferenced();
 
 			return "";
 		}
diff --git a/src/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java b/src/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java
index 505ad6cb479a254d73b4d4bc7b7fe0582c7eae58..ab0e5a1c6fbac0c1eb5e2265513f2ee62fd93baf 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java
@@ -3,6 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.tag.match;
 import static spark.Spark.halt;
 
 import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler;
+import de.deadlocker8.budgetmasterserver.server.updater.TagUpdater;
 import spark.Request;
 import spark.Response;
 import spark.Route;
@@ -35,6 +36,9 @@ public class TagMatchDeleteForRepeatingPayment implements Route
 			}
 			
 			tagHandler.deleteTagMatchForRepeatingPayment(tagID, repeatingPaymentID);
+			
+			TagUpdater tagUpdater = new TagUpdater(tagHandler);
+			tagUpdater.deleteTagsIfNotReferenced();
 
 			return "";
 		}
diff --git a/src/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java b/src/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java
new file mode 100644
index 0000000000000000000000000000000000000000..1263871aee24650744f3cf742506dbf93505bca9
--- /dev/null
+++ b/src/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java
@@ -0,0 +1,28 @@
+package de.deadlocker8.budgetmasterserver.server.updater;
+
+import java.util.ArrayList;
+
+import de.deadlocker8.budgetmaster.logic.tag.Tag;
+import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler;
+
+public class TagUpdater
+{
+	private DatabaseTagHandler tagHandler;
+	
+	public TagUpdater(DatabaseTagHandler tagHandler)
+	{	
+		this.tagHandler = tagHandler;
+	}
+	
+	public void deleteTagsIfNotReferenced() 
+	{
+		ArrayList<Tag> tags = tagHandler.getAllTags();
+		for(Tag currentTag : tags)
+		{
+			if(!tagHandler.isTagUsedInMatches(currentTag.getID()))
+			{		
+				tagHandler.deleteTag(currentTag.getID());
+			}
+		}
+	}
+}
\ No newline at end of file