diff --git a/index.js b/index.js
index 57e8eeada1f894ea602558cd907846f693a4dd88..3bf81ab6995d36dbb846d419fe3468fdc738c183 100644
--- a/index.js
+++ b/index.js
@@ -152,6 +152,15 @@ function math_block(state, start, end, silent){
     return true;
 }
 
+function escapeHtml(unsafe) {
+    return unsafe
+        .replace(/&/g, "&")
+        .replace(/</g, "&lt;")
+        .replace(/>/g, "&gt;")
+        .replace(/"/g, "&quot;")
+        .replace(/'/g, "&#039;");
+}
+
 module.exports = function math_plugin(md, options) {
     // Default options
 
@@ -165,7 +174,7 @@ module.exports = function math_plugin(md, options) {
         }
         catch(error){
             if(options.throwOnError){ console.log(error); }
-            return latex;
+            return `<span class='katex-error' title='${escapeHtml(error.toString())}'>${escapeHtml(latex)}</span>`;
         }
     };
 
@@ -176,11 +185,11 @@ module.exports = function math_plugin(md, options) {
     var katexBlock = function(latex){
         options.displayMode = true;
         try{
-            return "<p>" + katex.renderToString(latex, options) + "</p>";
+            return "<p class='katex-block'>" + katex.renderToString(latex, options) + "</p>";
         }
         catch(error){
             if(options.throwOnError){ console.log(error); }
-            return latex;
+            return `<p class='katex-block katex-error' title='${escapeHtml(error.toString())}'>${escapeHtml(latex)}</p>`;
         }
     }
 
diff --git a/package.json b/package.json
index e502f3ac266c5f0557e03c37ee5ee2067f99b8ca..888d3107ee9fb0f24a08b77596ff158002ddf6f4 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@iktakahiro/markdown-it-katex",
-    "version": "3.0.3",
+    "version": "3.0.4",
     "description": "Fast math support for markdown-it with KaTeX",
     "main": "index.js",
     "scripts": {