diff --git a/indexedDb/impl/channels/implementation.go b/indexedDb/impl/channels/implementation.go
index 9098fd666e3c19d59a7df58546da1ea0165783bb..a31a49bd6390712a343936af6f57202c20d1b2f6 100644
--- a/indexedDb/impl/channels/implementation.go
+++ b/indexedDb/impl/channels/implementation.go
@@ -11,7 +11,6 @@ package main
 
 import (
 	"crypto/ed25519"
-	"encoding/base64"
 	"encoding/json"
 	"strings"
 	"sync"
@@ -122,8 +121,7 @@ func (w *wasmModel) deleteMsgByChannel(channelID *id.ID) error {
 	}
 
 	// Perform the operation
-	channelIdStr := base64.StdEncoding.EncodeToString(channelID.Marshal())
-	keyRange, err := idb.NewKeyRangeOnly(js.ValueOf(channelIdStr))
+	keyRange, err := idb.NewKeyRangeOnly(impl.EncodeBytes(channelID.Marshal()))
 	cursorRequest, err := index.OpenCursorRange(keyRange, idb.CursorNext)
 	if err != nil {
 		return errors.WithMessagef(parentErr, "Unable to open Cursor: %+v", err)
@@ -303,9 +301,8 @@ func (w *wasmModel) UpdateFromMessageID(messageID message.ID,
 	w.updateMux.Lock()
 	defer w.updateMux.Unlock()
 
-	msgIDStr := base64.StdEncoding.EncodeToString(messageID.Marshal())
 	currentMsgObj, err := impl.GetIndex(w.db, messageStoreName,
-		messageStoreMessageIndex, js.ValueOf(msgIDStr))
+		messageStoreMessageIndex, impl.EncodeBytes(messageID.Marshal()))
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
 			"Failed to get message by index: %+v", err))
@@ -489,10 +486,8 @@ func (w *wasmModel) GetMessage(
 
 // DeleteMessage removes a message with the given messageID from storage.
 func (w *wasmModel) DeleteMessage(messageID message.ID) error {
-	msgId := js.ValueOf(base64.StdEncoding.EncodeToString(messageID.Bytes()))
-
-	err := impl.DeleteIndex(
-		w.db, messageStoreName, messageStoreMessageIndex, pkeyName, msgId)
+	err := impl.DeleteIndex(w.db, messageStoreName,
+		messageStoreMessageIndex, pkeyName, impl.EncodeBytes(messageID.Marshal()))
 	if err != nil {
 		return err
 	}
@@ -510,7 +505,7 @@ func (w *wasmModel) MuteUser(
 
 // msgIDLookup gets the UUID of the Message with the given messageID.
 func (w *wasmModel) msgIDLookup(messageID message.ID) (*Message, error) {
-	msgIDStr := js.ValueOf(base64.StdEncoding.EncodeToString(messageID.Bytes()))
+	msgIDStr := impl.EncodeBytes(messageID.Marshal())
 	resultObj, err := impl.GetIndex(w.db, messageStoreName,
 		messageStoreMessageIndex, msgIDStr)
 	if err != nil {
diff --git a/indexedDb/impl/dm/implementation.go b/indexedDb/impl/dm/implementation.go
index 4ff42219f52c6a9bd01d12a052ae6fe780ad72d7..80b61d938880f15aabec96e7339914db7699beb7 100644
--- a/indexedDb/impl/dm/implementation.go
+++ b/indexedDb/impl/dm/implementation.go
@@ -223,8 +223,7 @@ func (w *wasmModel) receiveWrapper(messageID message.ID, parentID *message.ID, n
 	timestamp time.Time, round rounds.Round, mType dm.MessageType, status dm.Status) (uint64, error) {
 
 	// If there is no extant Conversation, create one.
-	_, err := impl.Get(w.db, conversationStoreName,
-		utils.CopyBytesToJS(partnerKey[:]))
+	_, err := impl.Get(w.db, conversationStoreName, impl.EncodeBytes(partnerKey))
 	if err != nil {
 		if strings.Contains(err.Error(), impl.ErrDoesNotExist) {
 			err = w.joinConversation(nickname, partnerKey, dmToken,
@@ -315,7 +314,7 @@ func (w *wasmModel) receiveHelper(
 // msgIDLookup gets the UUID of the Message with the given messageID.
 func (w *wasmModel) msgIDLookup(messageID message.ID) (uint64, error) {
 	resultObj, err := impl.GetIndex(w.db, messageStoreName,
-		messageStoreMessageIndex, utils.CopyBytesToJS(messageID.Marshal()))
+		messageStoreMessageIndex, impl.EncodeBytes(messageID.Marshal()))
 	if err != nil {
 		return 0, err
 	}
diff --git a/indexedDb/impl/utils.go b/indexedDb/impl/utils.go
index b68746ebd6eb101d8f077b6179f1f6d41bfb04a6..0fdb2315a1f580a675d7ebb93a257fd153056aae 100644
--- a/indexedDb/impl/utils.go
+++ b/indexedDb/impl/utils.go
@@ -14,6 +14,7 @@ package impl
 
 import (
 	"context"
+	"encoding/base64"
 	"github.com/hack-pad/go-indexeddb/idb"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
@@ -36,6 +37,11 @@ func NewContext() (context.Context, context.CancelFunc) {
 	return context.WithTimeout(context.Background(), dbTimeout)
 }
 
+// EncodeBytes returns the proper IndexedDb encoding for a byte slice into js.Value.
+func EncodeBytes(input []byte) js.Value {
+	return js.ValueOf(base64.StdEncoding.EncodeToString(input))
+}
+
 // Get is a generic helper for getting values from the given [idb.ObjectStore].
 // Only usable by primary key.
 func Get(db *idb.Database, objectStoreName string, key js.Value) (js.Value, error) {