diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/TransactionSpecifications.java b/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/TransactionSpecifications.java
index 333b852f37637a4cd93b0784511f4e5c83dd6a65..3fafab39f32b32676aa9bce5a2965216685c0625 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/TransactionSpecifications.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/entities/transaction/TransactionSpecifications.java
@@ -53,7 +53,7 @@ public class TransactionSpecifications
 				predicates.add(builder.and(transaction.get(Transaction_.category).get("ID").in(categoryIDs)));
 			}
 
-			if(name != null)
+			if(name != null && name.length() > 0)
 			{
 				predicates.add(builder.and(builder.like(builder.lower(transaction.get(Transaction_.name)), "%"+name.toLowerCase()+"%")));
 			}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java
index b1f27f42d865e3a1af2d7f9d74a5b06108fee1be..86bc1f52eed774b5627a757502177f2da93f4e81 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java
@@ -10,20 +10,22 @@ public class FilterConfiguration
 	private boolean includeNotRepeating;
 	private boolean includeRepeating;
 	private List<FilterCategory> filterCategories;
+	private String name;
 
-	public static final FilterConfiguration DEFAULT = new FilterConfiguration(true, true, true, true, null);
+	public static final FilterConfiguration DEFAULT = new FilterConfiguration(true, true, true, true, null, "");
 
 	public FilterConfiguration()
 	{
 	}
 
-	public FilterConfiguration(boolean includeIncome, boolean includeExpenditure, boolean includeNotRepeating, boolean includeRepeating, List<FilterCategory> filterCategories)
+	public FilterConfiguration(boolean includeIncome, boolean includeExpenditure, boolean includeNotRepeating, boolean includeRepeating, List<FilterCategory> filterCategories, String name)
 	{
 		this.includeIncome = includeIncome;
 		this.includeExpenditure = includeExpenditure;
 		this.includeNotRepeating = includeNotRepeating;
 		this.includeRepeating = includeRepeating;
 		this.filterCategories = filterCategories;
+		this.name = name;
 	}
 
 	public boolean isIncludeIncome()
@@ -85,6 +87,16 @@ public class FilterConfiguration
 		this.filterCategories = filterCategories;
 	}
 
+	public String getName()
+	{
+		return name;
+	}
+
+	public void setName(String name)
+	{
+		this.name = name;
+	}
+
 	public List<Integer> getIncludedCategoryIDs()
 	{
 		if(filterCategories == null)
@@ -140,6 +152,11 @@ public class FilterConfiguration
 			}
 		}
 
+		if(!defaultConfiguration.getName().equals(name))
+		{
+			return true;
+		}
+
 		return false;
 	}
 
@@ -152,6 +169,7 @@ public class FilterConfiguration
 				", includeNotRepeating=" + includeNotRepeating +
 				", includeRepeating=" + includeRepeating +
 				", filterCategories=" + filterCategories +
+				", name='" + name + '\'' +
 				'}';
 	}
 }
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
index cc230378135d8ed49412984142791ab67c8f1320..53bff300174fb5e598b3ac1cd328045b5c57daa6 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java
@@ -97,11 +97,11 @@ public class TransactionService implements Resetable
 
 		if(account.getType().equals(AccountType.ALL))
 		{
-			Specification spec = TransactionSpecifications.withDynamicQuery(startDate, endDate, null, filterConfiguration.isIncludeIncome(), filterConfiguration.isIncludeExpenditure(), filterConfiguration.isIncludeRepeatingAndNotRepeating(), filterConfiguration.getIncludedCategoryIDs(), null);
+			Specification spec = TransactionSpecifications.withDynamicQuery(startDate, endDate, null, filterConfiguration.isIncludeIncome(), filterConfiguration.isIncludeExpenditure(), filterConfiguration.isIncludeRepeatingAndNotRepeating(), filterConfiguration.getIncludedCategoryIDs(), filterConfiguration.getName());
 			return transactionRepository.findAll(spec);
 		}
 
-		Specification spec = TransactionSpecifications.withDynamicQuery(startDate, endDate, account, filterConfiguration.isIncludeIncome(), filterConfiguration.isIncludeExpenditure(), filterConfiguration.isIncludeRepeatingAndNotRepeating(), filterConfiguration.getIncludedCategoryIDs(), null);
+		Specification spec = TransactionSpecifications.withDynamicQuery(startDate, endDate, account, filterConfiguration.isIncludeIncome(), filterConfiguration.isIncludeExpenditure(), filterConfiguration.isIncludeRepeatingAndNotRepeating(), filterConfiguration.getIncludedCategoryIDs(), filterConfiguration.getName());
 		return transactionRepository.findAll(spec);
 	}
 
diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties
index 12570d3b5b0275c4027fc97b3f673d8b16f98a43..0f3620dcdc9af64e2d308570797201402164e99f 100644
--- a/src/main/resources/languages/_de.properties
+++ b/src/main/resources/languages/_de.properties
@@ -252,6 +252,7 @@ filter.categories=Kategorien
 filter.categories.button.all=Alle
 filter.categories.button.none=Keine
 filter.name=Name
+filter.name.contains=Name enth�lt
 filter.tags=Tags
 filter.tags.button.all=Alle
 filter.tags.button.none=Keine
diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties
index fecec8e63cad3311aff3a502da33c9972537845d..bad6cc7b8823bc0422c9425a81f9027edb082f8b 100644
--- a/src/main/resources/languages/_en.properties
+++ b/src/main/resources/languages/_en.properties
@@ -239,7 +239,7 @@ report.budget.rest=Remaining Budget:
 
 # filter
 filter.active=Filter active
-filer.apply=Apply Filter
+filter.apply=Apply Filter
 filter.reset=Reset
 filter.type=Type
 filter.type.income=Income
@@ -251,6 +251,7 @@ filter.categories=Categories
 filter.categories.button.all=All
 filter.categories.button.none=None
 filter.name=Name
+filter.name.contains=Name contains
 filter.tags=Tags
 filter.tags.button.all=All
 filter.tags.button.none=None
diff --git a/src/main/resources/static/js/filter.js b/src/main/resources/static/js/filter.js
index 89546c470946880bd07035506e110278843d3a36..cb7994929f0bf7ea21e8a2924fb854c08f7e0e36 100644
--- a/src/main/resources/static/js/filter.js
+++ b/src/main/resources/static/js/filter.js
@@ -5,6 +5,10 @@ $(document).ready(function () {
         updateStatus();
     });
 
+    $('#filter-name').on('input', function() {
+        updateStatus();
+    });
+
     updateStatus();
 });
 
@@ -12,6 +16,7 @@ function updateStatus() {
     updateStatusForSectionByCheckboxes('section-type');
     updateStatusForSectionByCheckboxes('section-repeating');
     updateStatusForSectionByCheckboxes('section-categories');
+    updateStatusForSectionName('section-name');
 }
 
 function updateStatusForSectionByCheckboxes(identifier) {
@@ -31,3 +36,14 @@ function getStatusByCheckboxes(item) {
 
     return checkedCount + "/" + checkboxes.length;
 }
+function updateStatusForSectionName(identifier) {
+    var section = document.getElementById(identifier);
+    var nameValue = section.querySelector('#filter-name').value;
+    var statusText = '1/1';
+
+    if(nameValue.length === 0)
+    {
+        statusText = '0/1';
+    }
+    section.querySelector('.collapsible-header-status').innerText = statusText;
+}
\ No newline at end of file
diff --git a/src/main/resources/templates/filter/filter.ftl b/src/main/resources/templates/filter/filter.ftl
index 7ff669d29a28eba11ae2a60a04200516437802a9..614576fe51a779e735f353d41f592f8371130912 100644
--- a/src/main/resources/templates/filter/filter.ftl
+++ b/src/main/resources/templates/filter/filter.ftl
@@ -92,6 +92,22 @@
                                             </div>
                                         </div>
                                     </li>
+
+                                    <li id="section-name">
+                                        <div class="collapsible-header">
+                                            <i class="material-icons">subject</i>
+                                            ${locale.getString("filter.name")}
+                                            <div class="collapsible-header-status"></div>
+                                        </div>
+                                        <div class="collapsible-body">
+                                            <div class="row no-margin">
+                                                <div class="input-field col s12">
+                                                    <input id="filter-name" type="text" name="name" value="<#if filterConfiguration.getName()??>${filterConfiguration.getName()}</#if>">
+                                                    <label for="filter-name">${locale.getString("filter.name.contains")}</label>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
                                 </ul>
                             </div>
                         </div>