diff --git a/pkg/util/utils.go b/pkg/util/utils.go
index e7952a0bc3..4e40802029 100644
--- a/pkg/util/utils.go
+++ b/pkg/util/utils.go
@@ -502,6 +502,19 @@ func IDtoolsToRuntimeSpec(idMaps []idtools.IDMap) (convertedIDMap []specs.LinuxI
 	return convertedIDMap
 }
 
+// RuntimeSpecToIDtoolsTo converts runtime spec to the one of the idtools ID mapping
+func RuntimeSpecToIDtools(idMaps []specs.LinuxIDMapping) (convertedIDMap []idtools.IDMap) {
+	for _, idmap := range idMaps {
+		tempIDMap := idtools.IDMap{
+			ContainerID: int(idmap.ContainerID),
+			HostID:      int(idmap.HostID),
+			Size:        int(idmap.Size),
+		}
+		convertedIDMap = append(convertedIDMap, tempIDMap)
+	}
+	return convertedIDMap
+}
+
 func LookupUser(name string) (*user.User, error) {
 	// Assume UID lookup first, if it fails look up by username
 	if u, err := user.LookupId(name); err == nil {
diff --git a/pkg/util/utils_test.go b/pkg/util/utils_test.go
index 70ecf05a24..df1722a003 100644
--- a/pkg/util/utils_test.go
+++ b/pkg/util/utils_test.go
@@ -5,6 +5,7 @@ import (
 	"testing"
 	"time"
 
+	"github.com/opencontainers/runtime-spec/specs-go"
 	"github.com/stretchr/testify/assert"
 )
 
@@ -88,3 +89,30 @@ func TestParseInputTime(t *testing.T) {
 
 	assert.Equal(t, expected, tm)
 }
+
+func TestConvertMappings(t *testing.T) {
+	start := []specs.LinuxIDMapping{
+		{
+			ContainerID: 1,
+			HostID:      2,
+			Size:        3,
+		},
+		{
+			ContainerID: 4,
+			HostID:      5,
+			Size:        6,
+		},
+	}
+
+	converted := RuntimeSpecToIDtools(start)
+
+	convertedBack := IDtoolsToRuntimeSpec(converted)
+
+	assert.Equal(t, len(start), len(convertedBack))
+
+	for i := range start {
+		assert.Equal(t, start[i].ContainerID, convertedBack[i].ContainerID)
+		assert.Equal(t, start[i].HostID, convertedBack[i].HostID)
+		assert.Equal(t, start[i].Size, convertedBack[i].Size)
+	}
+}