diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 88bb64bb5680d3192bb53e60ce093696b8e0ea39..aefbe3985f33f0b7f1ba4935b99c9c9690865088 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -574,10 +574,10 @@ var (
 		Value: 42069,
 		Usage: "port to listen and serve BitTorrent protocol",
 	}
-	DbPageSizeFlag = cli.Uint64Flag{
+	DbPageSizeFlag = cli.StringFlag{
 		Name:  "db.pagesize",
-		Usage: "can set mdbx pagesize when on db creation: must be power of 2 and '256 < pagesize < 64*1024' ",
-		Value: 4096,
+		Usage: "set mdbx pagesize on db creation: must be power of 2 and '256b <= pagesize <= 64kb' ",
+		Value: "4kb",
 	}
 
 	HealthCheckFlag = cli.BoolFlag{
@@ -1037,8 +1037,21 @@ func setDataDir(ctx *cli.Context, cfg *node.Config) {
 	}
 
 	if ctx.GlobalIsSet(DbPageSizeFlag.Name) {
-		cfg.MdbxPageSize = ctx.GlobalUint64(DbPageSizeFlag.Name)
+		if err := cfg.MdbxPageSize.UnmarshalText([]byte(ctx.GlobalString(DbPageSizeFlag.Name))); err != nil {
+			panic(err)
+		}
+		sz := cfg.MdbxPageSize.Bytes()
+		if !isPowerOfTwo(sz) || sz < 256 || sz > 64*1024 {
+			panic("invalid --db.pagesize: " + DbPageSizeFlag.Usage)
+		}
+	}
+}
+
+func isPowerOfTwo(n uint64) bool {
+	if n == 0 { //corner case: if n is zero it will also consider as power 2
+		return true
 	}
+	return n&(n-1) == 0
 }
 
 func setDataDirCobra(f *pflag.FlagSet, cfg *node.Config) {
diff --git a/node/config.go b/node/config.go
index dd86e893d82c265a5d1c5f32759b03cc9616bd7a..49b63c980e41132b12029d46c0ff8fdb4712c37f 100644
--- a/node/config.go
+++ b/node/config.go
@@ -25,6 +25,7 @@ import (
 	"strings"
 	"sync"
 
+	"github.com/c2h5oh/datasize"
 	"github.com/ledgerwatch/erigon-lib/kv"
 
 	"github.com/ledgerwatch/erigon/common"
@@ -161,7 +162,7 @@ type Config struct {
 	TLSKeyFile          string
 	TLSCACert           string
 
-	MdbxPageSize uint64
+	MdbxPageSize datasize.ByteSize
 
 	// HealthCheck enables standard grpc health check
 	HealthCheck bool
diff --git a/node/node.go b/node/node.go
index 554add10d9973e374b85541e76d1e01e9a396251..94c3d05b713f63cc0f3f28cd5d635bd235b41df5 100644
--- a/node/node.go
+++ b/node/node.go
@@ -527,7 +527,7 @@ func OpenDatabase(config *Config, logger log.Logger, label kv.Label) (kv.RwDB, e
 			opts = opts.Exclusive()
 		}
 		if label == kv.ChainDB {
-			opts = opts.PageSize(config.MdbxPageSize)
+			opts = opts.PageSize(config.MdbxPageSize.Bytes())
 		}
 		return opts.Open()
 	}