diff --git a/fs/filter.go b/fs/filter.go
index 32b6ba59d..da97832ef 100644
--- a/fs/filter.go
+++ b/fs/filter.go
@@ -255,6 +255,16 @@ func (f *Filter) Clear() {
 	f.rules = nil
 }
 
+// InActive returns false if any filters are active
+func (f *Filter) InActive() bool {
+	return (f.files == nil &&
+		f.ModTimeFrom.IsZero() &&
+		f.ModTimeTo.IsZero() &&
+		f.MinSize == 0 &&
+		f.MaxSize == 0 &&
+		len(f.rules) == 0)
+}
+
 // Include returns whether this object should be included into the
 // sync or not
 func (f *Filter) Include(remote string, size int64, modTime time.Time) bool {
diff --git a/fs/filter_test.go b/fs/filter_test.go
index 90304eae6..01c3b03fa 100644
--- a/fs/filter_test.go
+++ b/fs/filter_test.go
@@ -62,6 +62,9 @@ func TestNewFilterDefault(t *testing.T) {
 	if f.files != nil {
 		t.Errorf("files want none got %v", f.files)
 	}
+	if !f.InActive() {
+		t.Errorf("want InActive")
+	}
 }
 
 // return a pointer to the string
@@ -168,6 +171,9 @@ func TestNewFilterFull(t *testing.T) {
 			t.Errorf("Didn't find file %q in f.files", name)
 		}
 	}
+	if f.InActive() {
+		t.Errorf("want !InActive")
+	}
 }
 
 type includeTest struct {
@@ -205,6 +211,9 @@ func TestNewFilterIncludeFiles(t *testing.T) {
 		{"potato/file2.jpg", 2, 0, false},
 		{"file3.jpg", 3, 0, false},
 	})
+	if f.InActive() {
+		t.Errorf("want !InActive")
+	}
 }
 
 func TestNewFilterMinSize(t *testing.T) {
@@ -218,6 +227,9 @@ func TestNewFilterMinSize(t *testing.T) {
 		{"file2.jpg", 101, 0, true},
 		{"potato/file2.jpg", 99, 0, false},
 	})
+	if f.InActive() {
+		t.Errorf("want !InActive")
+	}
 }
 
 func TestNewFilterMaxSize(t *testing.T) {
@@ -231,6 +243,9 @@ func TestNewFilterMaxSize(t *testing.T) {
 		{"file2.jpg", 101, 0, false},
 		{"potato/file2.jpg", 99, 0, true},
 	})
+	if f.InActive() {
+		t.Errorf("want !InActive")
+	}
 }
 
 func TestNewFilterMinAndMaxAge(t *testing.T) {
@@ -247,6 +262,9 @@ func TestNewFilterMinAndMaxAge(t *testing.T) {
 		{"potato/file1.jpg", 98, 1440000003, true},
 		{"potato/file2.jpg", 99, 1440000004, false},
 	})
+	if f.InActive() {
+		t.Errorf("want !InActive")
+	}
 }
 
 func TestNewFilterMinAge(t *testing.T) {
@@ -262,6 +280,9 @@ func TestNewFilterMinAge(t *testing.T) {
 		{"potato/file1.jpg", 98, 1440000003, false},
 		{"potato/file2.jpg", 99, 1440000004, false},
 	})
+	if f.InActive() {
+		t.Errorf("want !InActive")
+	}
 }
 
 func TestNewFilterMaxAge(t *testing.T) {
@@ -277,6 +298,9 @@ func TestNewFilterMaxAge(t *testing.T) {
 		{"potato/file1.jpg", 98, 1440000003, true},
 		{"potato/file2.jpg", 99, 1440000004, true},
 	})
+	if f.InActive() {
+		t.Errorf("want !InActive")
+	}
 }
 
 func TestNewFilterMatches(t *testing.T) {
@@ -316,6 +340,9 @@ func TestNewFilterMatches(t *testing.T) {
 		{"sausage3/potato", 101, 0, true},
 		{"unicorn", 99, 0, false},
 	})
+	if f.InActive() {
+		t.Errorf("want !InActive")
+	}
 }
 
 func TestFilterForEachLine(t *testing.T) {