diff --git a/shares/migrations/0001_initial.py b/shares/migrations/0001_initial.py
index 0242f0720ce075435b073950bc5ee5b579804448..8f2c55191eb269010c343888a97e1e8f8b28d3cb 100644
--- a/shares/migrations/0001_initial.py
+++ b/shares/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.2.6 on 2021-08-26 14:26
+# Generated by Django 3.2.6 on 2021-08-26 14:41
 
 import datetime
 from django.conf import settings
@@ -23,7 +23,7 @@ class Migration(migrations.Migration):
                 ('created_on', models.DateTimeField(db_index=True, default=datetime.datetime.now, verbose_name='Created on')),
                 ('pwd_hash', models.CharField(max_length=64, verbose_name='Hashed password salt')),
                 ('resource', models.TextField(verbose_name='Resource')),
-                ('used', models.BooleanField(default=False, verbose_name='Has been used?')),
+                ('times_used', models.IntegerField(default=0, verbose_name='Visit count')),
                 ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Creator')),
             ],
         ),
diff --git a/shares/models.py b/shares/models.py
index 0c6e9f517e91e32adb4c37ec4fe4740eb80dbd17..d88d3a5e3e2da6d76f1091d76fbcd19b253d3cc1 100644
--- a/shares/models.py
+++ b/shares/models.py
@@ -30,7 +30,7 @@ class Share(models.Model):
     pwd_hash = models.CharField(max_length=64, verbose_name='Hashed password salt')
     # this is either an URL or a f'{UUID}.real_file_name' in /data
     resource = models.TextField(verbose_name='Resource')
-    used = models.BooleanField(verbose_name='Has been used?', default=False)
+    times_used = models.IntegerField(verbose_name='Visit count', default=0)
 
     @property
     def file_name(self) -> str:
diff --git a/shares/templates/share/view.html b/shares/templates/share/view.html
index 8d2d8dab8551cb64fb40bf5eed171048c2131a72..3f03d24a68b3b1db1bdbde4ee635c6201042382f 100644
--- a/shares/templates/share/view.html
+++ b/shares/templates/share/view.html
@@ -4,6 +4,9 @@
 {% block head %}
 {% endblock %}
 {% block body %}
+    {% if invalid_password %}
+        <em>The password that you provided was invalid!</em>
+    {% endif %}
     <form class="form-group text-left" role="form" action="/shares/{{ share_id }}" method="POST">
             {% csrf_token %}
         {{ form.as_p }}
diff --git a/shares/views.py b/shares/views.py
index 3ed8c745289c4f0f55101f4af592b625d9c11d5b..f68746668c782e9e51c1c22172e75ef11e3f39a9 100644
--- a/shares/views.py
+++ b/shares/views.py
@@ -123,7 +123,8 @@ def view_share(request, share_id: str):
             try:
                 if share.share_type == SHARE_URL:
                     links_visited.runtime(+1)
-                    return redirect(share.resource)
+                    return render(request, 'share/view.html', {'form': form, 'share_id': share_id,
+                                                               'invalid_password': True})
                 else:
                     if not os.path.exists(share.path):
                         raise Http404()
@@ -145,7 +146,7 @@ def view_share(request, share_id: str):
                                                      'Content-Disposition': cd
                                                  })
             finally:
-                share.used = True
+                share.times_used += 1
                 share.save()
     else:
         form = PasswordForm()