diff --git a/src/utils.c b/src/utils.c
index 07dad2d7bc883f62703d329c82ee6c01cb5ba596..a3fb0513c14bf8b67cd2792d94a265b0edf3d78e 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -520,11 +520,15 @@ size_t strnlenpt(const char *text, size_t maxlen)
     return width;
 }
 
-/* A strlen() with tabs and multicolumn characters factored in:
- * how many columns wide is text? */
+/* Return the number of columns that the given text occupies. */
 size_t strlenpt(const char *text)
 {
-    return strnlenpt(text, (size_t)-1);
+    size_t span = 0;
+
+    while (*text != '\0')
+	text += parse_mbchar(text, NULL, &span);
+
+    return span;
 }
 
 /* Append a new magicline to filebot. */