diff --git a/doc/examples/type_name.cpp b/doc/examples/type_name.cpp
new file mode 100644
index 00000000..815e92d7
--- /dev/null
+++ b/doc/examples/type_name.cpp
@@ -0,0 +1,24 @@
+#include <json.hpp>
+
+using json = nlohmann::json;
+
+int main()
+{
+    // create JSON values
+    json j_null;
+    json j_boolean = true;
+    json j_number_integer = 17;
+    json j_number_float = 23.42;
+    json j_object = {{"one", 1}, {"two", 2}};
+    json j_array = {1, 2, 4, 8, 16};
+    json j_string = "Hello, world";
+
+    // call type_name()
+    std::cout << j_null.type_name() << '\n';
+    std::cout << j_boolean.type_name() << '\n';
+    std::cout << j_number_integer.type_name() << '\n';
+    std::cout << j_number_float.type_name() << '\n';
+    std::cout << j_object.type_name() << '\n';
+    std::cout << j_array.type_name() << '\n';
+    std::cout << j_string.type_name() << '\n';
+}
diff --git a/doc/examples/type_name.link b/doc/examples/type_name.link
new file mode 100644
index 00000000..39d1f973
--- /dev/null
+++ b/doc/examples/type_name.link
@@ -0,0 +1 @@
+<a target="_blank" href="http://melpon.org/wandbox/permlink/V6imubWo6Lkp8gk1"><b>online</b></a>
\ No newline at end of file
diff --git a/doc/examples/type_name.output b/doc/examples/type_name.output
new file mode 100644
index 00000000..ad906a49
--- /dev/null
+++ b/doc/examples/type_name.output
@@ -0,0 +1,7 @@
+null
+boolean
+number
+number
+object
+array
+string
diff --git a/src/json.hpp b/src/json.hpp
index fa9b85f2..2c1fd658 100644
--- a/src/json.hpp
+++ b/src/json.hpp
@@ -7767,7 +7767,6 @@ class basic_json
 
     /// @}
 
-  private:
     ///////////////////////////
     // convenience functions //
     ///////////////////////////
@@ -7782,6 +7781,9 @@ class basic_json
 
     @complexity Constant.
 
+    @liveexample{The following code exemplifies `type_name()` for all JSON
+    types.,typename}
+
     @since version 1.0.0
     */
     std::string type_name() const
@@ -7805,6 +7807,7 @@ class basic_json
         }
     }
 
+  private:
     /*!
     @brief calculates the extra space to escape a JSON string
 
diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c
index 886b9dde..f552a390 100644
--- a/src/json.hpp.re2c
+++ b/src/json.hpp.re2c
@@ -7767,7 +7767,6 @@ class basic_json
 
     /// @}
 
-  private:
     ///////////////////////////
     // convenience functions //
     ///////////////////////////
@@ -7782,6 +7781,9 @@ class basic_json
 
     @complexity Constant.
 
+    @liveexample{The following code exemplifies `type_name()` for all JSON
+    types.,typename}
+
     @since version 1.0.0
     */
     std::string type_name() const
@@ -7805,6 +7807,7 @@ class basic_json
         }
     }
 
+  private:
     /*!
     @brief calculates the extra space to escape a JSON string