diff --git a/py/objstr.c b/py/objstr.c
index 8839acbf950e672b686f37e1602e2b1b4cea90b2..c4335bbac7ffa486130491800cc5a7afba1391e0 100644
--- a/py/objstr.c
+++ b/py/objstr.c
@@ -1259,10 +1259,7 @@ mp_obj_t mp_obj_str_format(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kwa
             }
 
             switch (type) {
-                case '\0':
-                    mp_obj_print_helper(&print, arg, PRINT_STR);
-                    break;
-
+                case '\0': // no explicit format type implies 's'
                 case 's': {
                     mp_uint_t slen;
                     const char *s = mp_obj_str_get_data(arg, &slen);
diff --git a/tests/basics/string_format.py b/tests/basics/string_format.py
index d8724c947488da729aa3e0f49c3c6f086bbc8672..7fb53cb491343a32d71161e29d7093261be0b2aa 100644
--- a/tests/basics/string_format.py
+++ b/tests/basics/string_format.py
@@ -62,6 +62,10 @@ test("{:@<6d}",  -123)
 test("{:@=6d}",  -123)
 test("{:06d}",  -123)
 
+test("{:>20}", "foo")
+test("{:^20}", "foo")
+test("{:<20}", "foo")
+
 print("{foo}/foo".format(foo="bar"))
 print("{}".format(123, foo="bar"))
 print("{}-{foo}".format(123, foo="bar"))