# Laravel’s Str::words() Helper: Limit Text Like a Pro

By Dinesh Uprety
Published: 2025-03-22
Updated: 2025-03-23
Canonical: https://laranepal.com/blog/laravels-strwords-helper-limit-text-like-a-pro

# Laravel’s **`Str::words()`** Helper: Limit Text Like a Pro

## Introduction

When building web applications, you often need to display a **short preview** of a long text—whether it’s a blog post, a
product description, or a comment. Laravel makes this task incredibly easy with its [`Str::words()`](https://laravel.com/docs/12.x/strings#method-str-words) helper method. In
this
article, we’ll explore how to use this handy tool to **limit the number of words** in a string, making your UI cleaner
and
more user-friendly.

---

## What is `Str::words()`?

The `Str::words()` method is part of Laravel’s **String Helpers**, a collection of utilities designed to simplify string
manipulation. Unlike `Str::limit()`, which limits the number of **characters**, `Str::words()` limits the number of *
*words** in a string. It’s perfect for creating **truncated text previews** or summaries.

---

### Method Signature

Here’s the method signature for `Str::words()`:

```php
public static function words(
    string $value,  // The input string
    int $words = 100,  // Number of words to keep
    string $end = '...'  // Suffix to append if the string is truncated
);
```

---

## How to Use **`Str::words()`**

### Basic Example

Let’s say you have a long string, and you want to display only the first **2 words**:

```php
use Illuminate\Support\Str;

$text = 'Hello everyone out there!';
$shortText = Str::words($text, 2);

// Output: "Hello everyone..."
```

In this example, `Str::words()` truncates the string after the second word and appends `...` by default.

---

### Custom Suffix

You can replace the default `...` with a custom suffix, like `[Read More]`:

```php
$shortText = Str::words($text, 2, ' [Read More]');

// Output: "Hello everyone [Read More]"
```

This is great for adding **call-to-action** text to your truncated strings.

---

### Fluent Strings

Laravel also allows you to use `Str::words()` with **fluent strings** for a more elegant syntax:

```php
$shortText = (string) str('Hello everyone out there!')->words(2);

// Output: "Hello everyone..."
```

Fluent strings make your code more readable and chainable, especially when performing multiple string operations.

---

## Why Use **`Str::words()`**?

1. **Cleaner UI**: Displaying truncated text improves readability and keeps your interface clutter-free.
2. **SEO-Friendly**: Short previews can help reduce page load times and improve user experience, which are key factors
   for
   SEO.
3. **Customizable**: You can easily adjust the number of words and the suffix to fit your design needs.

---

## Practical Use Cases

### 1. Blog Post Previews

When listing blog posts, you can use `Str::words()` to show a short summary:

```php
$post = 'This is a long blog post about Laravel and its amazing features.';
$preview = Str::words($post, 10, '... [Read More]');

// Output: "This is a long blog post about Laravel and its amazing... [Read More]"
```

For more fun, you can make `\[Read More\]` a dynamic link:

```php
$preview = Str::words($post, 10, '... <a href="/posts/1">Read More</a>');

```

### 2. Product Descriptions

For e-commerce sites, you can truncate product descriptions to keep product listings clean:

```php
$description = 'This high-quality product is perfect for everyday use.';
$shortDescription = Str::words($description, 5);

// Output: "This high-quality product is perfect..."
```

### 3. Comments Section

In a comments section, you can limit long comments to a few words:

```php
$comment = 'Wow, this article is amazing! I learned so much from it.';
$shortComment = Str::words($comment, 9, '...');

// Output: "Wow, this article is amazing! I learned so much..."
```

---

## Pro Tips 🌸🇳🇵

1. **Combine with `Str::limit()`**: For more control over text length, you can use `Str::limit()` in conjunction with
   `Str::words()`.

2. **Use in Blade Templates**: You can call `Str::words()` directly in your Blade templates to truncate text on the fly.
   ```php
    {{ Str::words($post->content, 20) }}
    ```
3. **Localization**: If your app supports multiple languages, ensure the suffix (e.g., `...`) is localized for
   consistency.

---

## Conclusion

Laravel’s `Str::words()` helper is a powerful yet simple tool for managing text content in your applications. Whether
you’re building a blog, an e-commerce site, or a social platform, this method helps you create clean, user-friendly
interfaces with minimal effort.

So, the next time you need to truncate a string, skip the manual work and let Laravel’s `Str::words()` do the heavy
lifting for you!


