diff --git a/lib/modules/MIME.pmod/module.pmod b/lib/modules/MIME.pmod/module.pmod
index 8207de4699572c7c841703954ccf501acd607a2e..aaf796a7b9d3a3f5bb2d32ca5c60089809e4b8d7 100644
--- a/lib/modules/MIME.pmod/module.pmod
+++ b/lib/modules/MIME.pmod/module.pmod
@@ -1615,3 +1615,17 @@ int|object reconstruct_partial(array(object) collection)
     return reconstructed;
   } else return (maxgot>total? -1 : total-got);
 }
+
+//! Encode strings according to @rfc{4648@} base64url encoding.
+string encode_base64url(string x)
+{
+  x = replace(encode_base64(x,1),({ "+", "/" }),({ "-", "_" }));
+  while( sizeof(x) && x[-1]=='=' ) x=x[..<1];
+  return x;
+}
+
+//! Decode strings according to @rfc{4648@} base64url encoding.
+string decode_base64url(string x)
+{
+  return decode_base64(replace(x,({ "-", "_" }),({ "+", "/" })));
+}