diff --git a/lib/modules/apostrophe-schemas/index.js b/lib/modules/apostrophe-schemas/index.js
index <HASH>..<HASH> 100644
--- a/lib/modules/apostrophe-schemas/index.js
+++ b/lib/modules/apostrophe-schemas/index.js
@@ -977,12 +977,13 @@ module.exports = {
       converters: {
         string: function(req, data, name, object, field, callback) {
           object[name] = self.apos.launder.string(data[name], field.def);
-          if (field.required && field.min && (object[name].length < field.min)) {
+          if (object[name] && field.min && (object[name].length < field.min)) {
             // Would be unpleasant, but shouldn't happen since the browser
             // also implements this. We're just checking for naughty scripts
             return callback('min');
           }
-          if (field.max && (object[name].length > field.max)) {
+          // If max is longer than allowed, trim the value down to the max length
+          if (object[name] && field.max && (object[name].length > field.max)) {
             object[name] = object[name].substr(0, field.max);
           }
           return setImmediate(callback);
Improve min and max filtering

Does not care if field is required