diff --git a/django/contrib/staticfiles/management/commands/collectstatic.py b/django/contrib/staticfiles/management/commands/collectstatic.py
index 02e95d56b9..a820fed638 100644
--- a/django/contrib/staticfiles/management/commands/collectstatic.py
+++ b/django/contrib/staticfiles/management/commands/collectstatic.py
@@ -275,6 +275,8 @@ class Command(NoArgsCommand):
             except OSError:
                 pass
             try:
+                if os.path.lexists(full_path):
+                    os.unlink(full_path)
                 os.symlink(source_path, full_path)
             except AttributeError:
                 import platform
diff --git a/tests/staticfiles_tests/tests.py b/tests/staticfiles_tests/tests.py
index 9261503726..95852acd09 100644
--- a/tests/staticfiles_tests/tests.py
+++ b/tests/staticfiles_tests/tests.py
@@ -694,6 +694,15 @@ class TestCollectionLinks(CollectionTestCase, TestDefaults):
         """
         self.assertTrue(os.path.islink(os.path.join(settings.STATIC_ROOT, 'test.txt')))
 
+    def test_broken_symlink(self):
+        """
+        Test broken symlink gets deleted.
+        """
+        path = os.path.join(settings.STATIC_ROOT, 'test.txt')
+        os.unlink(path)
+        self.run_collectstatic()
+        self.assertTrue(os.path.islink(path))
+
 
 class TestServeStatic(StaticFilesTestCase):
     """