diff --git a/pages/tools/text/text-stats.vue b/pages/tools/text/text-stats.vue
new file mode 100644
index 00000000..fc67ab7c
--- /dev/null
+++ b/pages/tools/text/text-stats.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+ Character count: |
+ {{ textLength }} |
+
+
+ Word count: |
+ {{ textWordCount }} |
+
+
+ Line count: |
+ {{ textLineCount }} |
+
+
+ Byte size: |
+ {{ textSize }} |
+
+
+
+
+
+
+
+
diff --git a/utils/convert.ts b/utils/convert.ts
index abe9f983..35065d5f 100644
--- a/utils/convert.ts
+++ b/utils/convert.ts
@@ -1,7 +1,20 @@
const base64ToString = (str: string) => Buffer.from(str, 'base64').toString('utf-8')
const stringToBase64 = (str: string) => Buffer.from(str, 'utf-8').toString('base64')
+const formatBytes = (bytes: number, decimals = 2) => {
+ if (bytes === 0) {
+ return '0 Bytes'
+ }
+
+ const k = 1024
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
+ const i = Math.floor(Math.log(bytes) / Math.log(k))
+
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + ' ' + sizes[i]
+}
+
export {
stringToBase64,
- base64ToString
+ base64ToString,
+ formatBytes
}