diff --git a/lib/csvlint/field.rb b/lib/csvlint/field.rb
index <HASH>..<HASH> 100644
--- a/lib/csvlint/field.rb
+++ b/lib/csvlint/field.rb
@@ -119,7 +119,7 @@ module Csvlint
       end
       
       def validate_type(value, row, column)
-        if constraints["type"]
+        if constraints["type"] && value != ""
           parsed = convert_to_type(value)
           if parsed == nil
             build_errors(:invalid_type, :schema, row, column)
diff --git a/spec/field_spec.rb b/spec/field_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/field_spec.rb
+++ b/spec/field_spec.rb
@@ -51,6 +51,11 @@ describe Csvlint::Field do
   end
 
   context "it should validate correct types" do
+    it "skips empty fields" do
+      field = Csvlint::Field.new("test", { "type" => "http://www.w3.org/2001/XMLSchema#int" })
+      expect( field.validate_column("")).to be(true)
+    end
+    
     it "validates ints" do
       field = Csvlint::Field.new("test", { "type" => "http://www.w3.org/2001/XMLSchema#int" })
       expect( field.validate_column("42")).to be(true)
Don't perform type validation on empty fields