diff --git a/django/website/tabbed_page/templatetags/__init__.py b/django/website/tabbed_page/templatetags/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/django/website/tabbed_page/templatetags/render_tab.py b/django/website/tabbed_page/templatetags/render_tab.py
new file mode 100644
index 0000000000000000000000000000000000000000..e5d3c3fec28b948d80db916fd1a170781156bbcb
--- /dev/null
+++ b/django/website/tabbed_page/templatetags/render_tab.py
@@ -0,0 +1,11 @@
+from django.template.loader import render_to_string
+
+from ..tab_pool import get_tab
+
+
+def render_tab(tab_instance):
+    tab = get_tab(tab_instance.name)
+
+    template_name = tab.template_name
+
+    return render_to_string(template_name, {})
diff --git a/django/website/tabbed_page/tests/registration_tests.py b/django/website/tabbed_page/tests/registration_tests.py
index 587e12da2dab3c952b644d8e93d5224ade8ec85b..e3da0d5df229bc1277aa61c56b2aa68abc445ae7 100644
--- a/django/website/tabbed_page/tests/registration_tests.py
+++ b/django/website/tabbed_page/tests/registration_tests.py
@@ -7,20 +7,13 @@ from ..tab_pool import (
     MissingTabError,
 )
 
+from .test_tab import TestTab, tab
+
 
 def setup_function(function):
     clear_tabs()
 
 
-class TestTab(object):
-    pass
-
-
-@pytest.fixture
-def tab():
-    return TestTab()
-
-
 def test_tab_is_registered(tab):
     register_tab('test-tab', tab)
     assert get_tab('test-tab') == tab
diff --git a/django/website/tabbed_page/tests/render_tests.py b/django/website/tabbed_page/tests/render_tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..02705f0dec5bcdbbaa333468191d85aa266bce58
--- /dev/null
+++ b/django/website/tabbed_page/tests/render_tests.py
@@ -0,0 +1,57 @@
+from mock import patch
+import pytest
+
+from .factories import (
+    TabbedPageFactory,
+    TabInstanceFactory,
+)
+from ..tab_pool import register_tab
+from ..templatetags.render_tab import render_tab
+
+from .test_tab import TestTab
+
+
+class MockTabInstance(object):
+    pass
+
+
+@pytest.fixture
+def render_to_string_method():
+    return 'tabbed_page.templatetags.render_tab.render_to_string'
+
+
+def get_mock_render_to_string_parameter(mock, parameter):
+    """ Helper function to return arguments a mock instance
+        of render_to_string has been invoked with.
+
+        Args:
+            mock: A Mock object
+            parameter: either 'template_name' or 'context'
+        Returns:
+            The value of the given parameter for the last invocation
+            of the given mock with the render_to_string signature.
+        Raises:
+            ValueError: If parameter is not 'template_name' or 'context'
+    """
+    if parameter == 'template_name':
+        return mock.call_args[0][0]
+    elif parameter == 'context':
+        return mock.call_args[0][1]
+    else:
+        raise ValueError()
+
+
+@pytest.mark.django_db
+def test_uses_template_name(render_to_string_method):
+    tab = TestTab(template_name='test-tab-template')
+    register_tab('test-tab', tab)
+
+    page = TabbedPageFactory()
+    tab_instance = TabInstanceFactory(page=page, name='test-tab')
+
+    with patch(render_to_string_method) as mock:
+        render_tab(tab_instance)
+        template_name = get_mock_render_to_string_parameter(
+            mock, 'template_name'
+        )
+    assert template_name == 'test-tab-template'