diff --git a/ckanext/odsh/tests_wip/test_validation.py b/ckanext/odsh/tests_wip/test_validation.py
index 21c02780f9a978e06bd9ce486091362b04f71906..746afc75da8b4c3d4514e205ed1ed7bed8d5545a 100644
--- a/ckanext/odsh/tests_wip/test_validation.py
+++ b/ckanext/odsh/tests_wip/test_validation.py
@@ -105,3 +105,11 @@ def test_validate_licenseAttributionByText():
             ('extras', 0, 'key'): 'licenseAttributionByText',
             ('extras', 0, 'value'): ''}
     validate_licenseAttributionByText('key', data, {}, None)
+
+def test_tag_name_validator_invalid():
+    with pytest.raises(Exception):
+        tag_name_validator('Foo\nBar', None)
+
+
+def test_tag_name_validator_valid():
+    tag_name_validator('Regionalplan für den Planungsraum_I: (5.8 – Windenergie_an_Land)', None)
diff --git a/ckanext/odsh/validation.py b/ckanext/odsh/validation.py
index d91731555d44d7d927071098ef0179b5ba015e8a..f7f35b3a08d99bc70acfcd8be66b28fe041ba3bc 100644
--- a/ckanext/odsh/validation.py
+++ b/ckanext/odsh/validation.py
@@ -293,6 +293,7 @@ def tag_string_convert(key, data, errors, context):
 
     for tag in tags:
         toolkit.get_validator('tag_length_validator')(tag, context)
+        tag_name_validator(tag, context)
 
 
 def validate_relatedPackage(data):
@@ -313,6 +314,15 @@ def validate_formats(data, errors):
     return data
 
 
+def tag_name_validator(value, context):
+    """Allow tag name to contain any characters but no newlines
+    """
+    tagname_match = re.compile(r'/^(?=.*[^\n])[^\n]*$', re.UNICODE)
+    if not tagname_match.match(value):
+        raise toolkit.Invalid(_('Invalid tag: "%s". Tags cannot contain line breaks.') % (value))
+    return value
+
+
 def get_validators():
     return {
         'known_spatial_uri': known_spatial_uri,
@@ -320,4 +330,5 @@ def get_validators():
         'validate_licenseAttributionByText': validate_licenseAttributionByText,
 	      'validate_relatedPackage': validate_relatedPackage,
         'odsh_validate_format': validate_formats,
+        'tag_name_validator': tag_name_validator,
     }