diff --git a/favicon/migrations/0004_faviconimg_favicon_size_rel_unique.py b/favicon/migrations/0004_faviconimg_favicon_size_rel_unique.py
new file mode 100644
index 0000000000000000000000000000000000000000..7fd468e128293d100146c2543444062672c85e37
--- /dev/null
+++ b/favicon/migrations/0004_faviconimg_favicon_size_rel_unique.py
@@ -0,0 +1,17 @@
+# Generated by Django 3.2 on 2021-05-15 20:28
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('favicon', '0003_site_manager'),
+    ]
+
+    operations = [
+        migrations.AddConstraint(
+            model_name='faviconimg',
+            constraint=models.UniqueConstraint(fields=('faviconFK', 'size', 'rel'), name='favicon_size_rel_unique'),
+        ),
+    ]
diff --git a/favicon/models.py b/favicon/models.py
index dead34bc204c8dada209ae704f830cfa315f30c5..a1e4c7e1b86d8e2af17b071f121d3b9be85b024b 100644
--- a/favicon/models.py
+++ b/favicon/models.py
@@ -81,7 +81,7 @@ class Favicon(models.Model):
         # Delete all favicon images to update all
         if update:
             favicons.delete()
-            favicons = FaviconImg.objects.empty()
+            favicons = FaviconImg.objects.none()
             found = []
         else:
             favicons = favicons.all()
@@ -96,7 +96,7 @@ class Favicon(models.Model):
                     fav.generate_image()
                     new_favicons.append(fav)
         if new_favicons:
-            FaviconImg.objects.bulk_create(new_favicons)
+            FaviconImg.objects.bulk_create(new_favicons, ignore_conflicts=True)
                 
         return list(favicons) + new_favicons
 
@@ -117,8 +117,6 @@ class Favicon(models.Model):
         return html
 
     def save(self, *args, **kwargs):
-        update = False
-
         if self.isFavicon:
             Favicon.on_site.exclude(pk=self.pk).update(isFavicon=False)
 
@@ -127,7 +125,7 @@ class Favicon(models.Model):
         cache.delete(config_cache_key)
 
         if self.faviconImage:
-            html = self.get_favicons(update=update)
+            html = self.as_html(update=True)
             cache.set(config_cache_key, html, timeout=None)
 
 
@@ -154,6 +152,9 @@ class FaviconImg(models.Model):
     def del_image(self):
         self.faviconImage.delete()
 
+    class Meta:
+        constraints = [models.UniqueConstraint(fields=["faviconFK", "size", "rel"], name="favicon_size_rel_unique")]
+
 
 signals.pre_delete.connect(pre_delete_image, sender=Favicon)
 signals.pre_delete.connect(pre_delete_image, sender=FaviconImg)
diff --git a/favicon/templatetags/favtags.py b/favicon/templatetags/favtags.py
index 27cba6952488c2a81e0c78fdda4a4204b009c34e..894ea8d9ba1826b2804e1cecbd19eca730fbb3ae 100644
--- a/favicon/templatetags/favtags.py
+++ b/favicon/templatetags/favtags.py
@@ -20,12 +20,11 @@ def place_favicon(context):
 
     html = cache.get(config_cache_key)
     if html:
-        return html
+        return mark_safe(html)
 
     fav = Favicon.on_site.filter(isFavicon=True).first()
     if not fav:
         return mark_safe('<!-- no favicon -->')
-
     html = fav.as_html()
 
     cache.set(config_cache_key, html, timeout=None)