diff --git a/unicodedomino.sty b/unicodedomino.sty
index b69897eacff85c4ecd7e8bea769b685878685cff..f52b6f74a8980d4b9d990575c1c4fc83935a4f60 100644
--- a/unicodedomino.sty
+++ b/unicodedomino.sty
@@ -54,11 +54,22 @@
  \expandafter\UTFviii@hexnumber\expandafter{#1}%
 }%
 
+% same for bytes
+\def\unicodedomino@bytehex#1{%
+ \expandafter\UTFviii@hexdigit\expandafter{\the\numexpr(#1-8)/16\relax}%
+ \UTFviii@hexdigit{\numexpr#1\ifnum#1>0-((#1-8)/16)*16\fi\relax}%
+}%
+
 % override to beautify the output, not strictly necessary but requested
 \gdef\UTFviii@splitcsname#1:#2\relax{%
  #2 (\expandafter\unicodedomino@codepoint\expandafter{%
   \the\numexpr\decode@UTFviii#2\relax})%
 }%
+\def\UTFviii@invalid@err#1{%
+ \PackageError{inputenc}{%
+  Invalid UTF-8 byte 0x\unicodedomino@bytehex{\number`#1}%
+ }\UTFviii@invalid@help%
+}%
 
 % for invalid encoding output
 \gdef\unicodedomino@splith@x#1#2\relax{%