diff --git a/crates/nu-table/src/types/general.rs b/crates/nu-table/src/types/general.rs
index fb58aa4ce7..9508fea14e 100644
--- a/crates/nu-table/src/types/general.rs
+++ b/crates/nu-table/src/types/general.rs
@@ -4,7 +4,7 @@ use nu_protocol::{ast::PathMember, Config, ShellError, Span, TableIndexMode, Val
 use std::sync::atomic::AtomicBool;
 use std::sync::Arc;
 
-use crate::{Cell, NuTable};
+use crate::{Cell, NuTable, NuText};
 
 use super::{
     clean_charset, create_table_config, get_empty_style, get_header_style, get_index_style,
@@ -176,27 +176,7 @@ fn to_table_with_header(
 
         let skip_index = usize::from(with_index);
         for (col, header) in headers.iter().enumerate().skip(skip_index) {
-            let (text, style) = match item {
-                Value::Record { .. } => {
-                    let path = PathMember::String {
-                        val: header.clone(),
-                        span: Span::unknown(),
-                        optional: false,
-                    };
-                    let value = item.clone().follow_cell_path(&[path], false);
-
-                    match value {
-                        Ok(value) => get_value_style(&value, opts.config, opts.style_computer),
-                        Err(_) => get_empty_style(opts.style_computer),
-                    }
-                }
-                value if matches!(value, Value::String { .. }) => {
-                    let (text, style) = get_value_style(value, opts.config, opts.style_computer);
-                    let text = clean_charset(&text);
-                    (text, style)
-                }
-                value => get_value_style(value, opts.config, opts.style_computer),
-            };
+            let (text, style) = get_string_value_with_header(item, header, &opts);
 
             table.insert((row + 1, col), text);
             table.set_cell_style((row + 1, col), style);
@@ -229,11 +209,7 @@ fn to_table_with_no_header(
             table.insert((row, 0), text);
         }
 
-        let (mut text, style) = get_value_style(item, opts.config, opts.style_computer);
-        let is_string_value = matches!(item, Value::String { .. });
-        if is_string_value {
-            text = clean_charset(&text);
-        }
+        let (text, style) = get_string_value(item, &opts);
 
         let pos = (row, with_index as usize);
         table.insert(pos, text);
@@ -243,6 +219,35 @@ fn to_table_with_no_header(
     Ok(Some(table))
 }
 
+fn get_string_value_with_header(item: &Value, header: &str, opts: &BuildConfig) -> NuText {
+    match item {
+        Value::Record { .. } => {
+            let path = PathMember::String {
+                val: header.to_owned(),
+                span: Span::unknown(),
+                optional: false,
+            };
+            let value = item.clone().follow_cell_path(&[path], false);
+
+            match value {
+                Ok(value) => get_string_value(&value, opts),
+                Err(_) => get_empty_style(opts.style_computer),
+            }
+        }
+        value => get_string_value(value, opts),
+    }
+}
+
+fn get_string_value(item: &Value, opts: &BuildConfig) -> NuText {
+    let (mut text, style) = get_value_style(item, opts.config, opts.style_computer);
+    let is_string_value = matches!(item, Value::String { .. });
+    if is_string_value {
+        text = clean_charset(&text);
+    }
+
+    (text, style)
+}
+
 fn get_table_row_index(item: &Value, config: &Config, row: usize, offset: usize) -> String {
     match item {
         Value::Record { .. } => item
diff --git a/crates/nu-table/src/types/mod.rs b/crates/nu-table/src/types/mod.rs
index 9fafed5619..151c78d2f2 100644
--- a/crates/nu-table/src/types/mod.rs
+++ b/crates/nu-table/src/types/mod.rs
@@ -46,7 +46,8 @@ pub fn value_to_clean_styled_string(val: &Value, cfg: &Config, style: &StyleComp
 }
 
 pub fn clean_charset(text: &str) -> String {
-    text.replace(['\r', '\t'], " ")
+    // todo: optimize, I bet it can be done in 1 path
+    text.replace('\t', "    ").replace('\r', "")
 }
 
 const INDEX_COLUMN_NAME: &str = "index";