diff --git a/kwant/lattice.py b/kwant/lattice.py
index 1d4855b843a8a9dd5a5c1a71814d07df841a7182..4b1b67d3cbb1114ff3099a8806a15435e91a84f4 100644
--- a/kwant/lattice.py
+++ b/kwant/lattice.py
@@ -239,6 +239,9 @@ class TranslationalSymmetry(builder.Symmetry):
             msg = "TranslationalSymmetry takes 1d sequences as parameters.\n" \
                 "See What's new in kwant 0.2 in the documentation."
             raise ValueError(msg)
+        if np.linalg.matrix_rank(periods) < len(periods):
+            raise ValueError("Translational symmetry periods must be "
+                             "linearly independent")
         # A dictionary containing cached data required for applying the
         # symmetry to different site groups.
         self.site_group_data = {}
diff --git a/kwant/tests/test_lattice.py b/kwant/tests/test_lattice.py
index 45e0d2797ec4de315275e161a12e179d285076f8..dd5dac799ebd251c9c012891ad12391232216c4d 100644
--- a/kwant/tests/test_lattice.py
+++ b/kwant/tests/test_lattice.py
@@ -46,8 +46,7 @@ def test_translational_symmetry():
     g2 = lattice.make_lattice(np.identity(2))
     g3 = lattice.make_lattice(np.identity(3))
 
-    sym = ts((0, 0, 4), (0, 5, 0), (0, 0, 2))
-    assert_raises(ValueError, sym.add_site_group, g3)
+    assert_raises(ValueError, ts, (0, 0, 4), (0, 5, 0), (0, 0, 2))
     sym = ts((3.3, 0))
     assert_raises(ValueError, sym.add_site_group, g2)