diff --git a/wagtail/admin/templates/wagtailadmin/pages/listing/_list_unlock.html b/wagtail/admin/templates/wagtailadmin/pages/listing/_list_unlock.html
new file mode 100644
index 000000000..f1cc01d0e
--- /dev/null
+++ b/wagtail/admin/templates/wagtailadmin/pages/listing/_list_unlock.html
@@ -0,0 +1,21 @@
+{% extends "wagtailadmin/pages/listing/_list_explore.html" %}
+
+{% load i18n wagtailadmin_tags %}
+
+{% block page_navigation %}
+
+ {% page_permissions page as perms %}
+
+ Locked
+ {% if page.locked_by %}by {% if page.locked_by_id == request.user.pk %}you{% else %}{{ page.locked_by }}{% endif %}{% endif %}
+ {% if page.locked_at %}at {{ page.locked_at|date:"d M Y H:i" }}{% endif %}
+
+ {% if perms.can_unlock %}
+
+ {% endif %}
+ |
+{% endblock %}
diff --git a/wagtail/admin/templates/wagtailadmin/pages/locked_pages.html b/wagtail/admin/templates/wagtailadmin/pages/locked_pages.html
new file mode 100644
index 000000000..0112fddad
--- /dev/null
+++ b/wagtail/admin/templates/wagtailadmin/pages/locked_pages.html
@@ -0,0 +1,12 @@
+{% extends "wagtailadmin/base.html" %}
+{% load i18n %}
+{% block titletag %}{% trans "Locked pages" %}{% endblock %}
+
+{% block content %}
+ {% trans "Locked pages" as title %}
+ {% include "wagtailadmin/shared/header.html" with title=title icon="doc-empty-inverse" %}
+
+
+ {% include "wagtailadmin/pages/locked_pages_results.html" %}
+
+{% endblock %}
diff --git a/wagtail/admin/templates/wagtailadmin/pages/locked_pages_results.html b/wagtail/admin/templates/wagtailadmin/pages/locked_pages_results.html
new file mode 100644
index 000000000..74242c59c
--- /dev/null
+++ b/wagtail/admin/templates/wagtailadmin/pages/locked_pages_results.html
@@ -0,0 +1,11 @@
+{% load i18n wagtailadmin_tags %}
+
+ {% if pages %}
+ {% include "wagtailadmin/pages/listing/_list_unlock.html" %}
+
+ {% url 'wagtailadmin_pages:locked_pages' as pagination_base_url %}
+ {% paginate pages base_url=pagination_base_url %}
+ {% else %}
+
{% trans 'No pages have been locked.' %}
+ {% endif %}
+
diff --git a/wagtail/admin/urls/pages.py b/wagtail/admin/urls/pages.py
index 74fc4007f..9c853d767 100644
--- a/wagtail/admin/urls/pages.py
+++ b/wagtail/admin/urls/pages.py
@@ -33,6 +33,7 @@ urlpatterns = [
url(r'^(\d+)/lock/$', pages.lock, name='lock'),
url(r'^(\d+)/unlock/$', pages.unlock, name='unlock'),
+ url(r'^locked/$', pages.locked_pages, name='locked_pages'),
url(r'^(\d+)/revisions/$', pages.revisions_index, name='revisions_index'),
url(r'^(\d+)/revisions/(\d+)/view/$', pages.revisions_view, name='revisions_view'),
diff --git a/wagtail/admin/views/pages.py b/wagtail/admin/views/pages.py
index 1f0297535..560639115 100644
--- a/wagtail/admin/views/pages.py
+++ b/wagtail/admin/views/pages.py
@@ -1280,3 +1280,14 @@ def revisions_unschedule(request, page_id, revision_id):
'next': next_url,
'subtitle': subtitle
})
+
+
+def locked_pages(request):
+ pages = UserPagePermissionsProxy(request.user).editable_pages().filter(locked=True)
+
+ paginator = Paginator(pages, per_page=10)
+ pages = paginator.get_page(request.GET.get('p'))
+
+ return render(request, 'wagtailadmin/pages/locked_pages.html', {
+ 'pages': pages,
+ })