diff --git a/mercurial/simplemerge.py b/mercurial/simplemerge.py
--- a/mercurial/simplemerge.py
+++ b/mercurial/simplemerge.py
@@ -418,6 +418,8 @@
 
     The merged result is written into `localctx`.
     """
+    opts = pycompat.byteskwargs(opts)
+
     def readctx(ctx):
         # Merges were always run in the working copy before, which means
         # they used decoded data, if the user defined any repository