diff --git a/src/app/shared/pipes/truncate.pipe.spec.ts b/src/app/shared/pipes/truncate.pipe.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b16f3ef167cb106c0fed2fff5097443798c4fcc9
--- /dev/null
+++ b/src/app/shared/pipes/truncate.pipe.spec.ts
@@ -0,0 +1,8 @@
+import { TruncatePipe } from './truncate.pipe';
+
+describe('TruncatePipe', () => {
+  it('create an instance', () => {
+    const pipe = new TruncatePipe();
+    expect(pipe).toBeTruthy();
+  });
+});
diff --git a/src/app/shared/pipes/truncate.pipe.ts b/src/app/shared/pipes/truncate.pipe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b03e5e69f7a0cb469860e4a6513ec1a10a155509
--- /dev/null
+++ b/src/app/shared/pipes/truncate.pipe.ts
@@ -0,0 +1,19 @@
+import { Pipe, PipeTransform } from '@angular/core';
+
+@Pipe({
+  name: 'truncate',
+  standalone: true,
+})
+export class TruncatePipe implements PipeTransform {
+  transform(
+    value: string,
+    limit = 25,
+    completeWords = false,
+    ellipsis = '...',
+  ) {
+    if (completeWords) {
+      limit = value.slice(0, limit).lastIndexOf(' ');
+    }
+    return value.length > limit ? value.slice(0, limit) + ellipsis : value;
+  }
+}