Introduction

In web development, especially with Laravel, getting parts of the URL can be extremely useful — whether for routing, handling dynamic parameters, or for analytics. Laravel provides an elegant way to extract URL segments through its Request class.

In this tutorial, we’ll walk you through how to get URL segments in Laravel using various approaches and give you examples that are beginner-friendly but practical enough for real-world projects.

What Is a URL Segment?

A URL segment refers to a part of a URL that is divided by slashes (/). For example:

plain
https://yourdomain.com/blog/laravel/url-segment

Here, the segments are:

  • blog (Segment 1)
  • laravel (Segment 2)
  • url-segment (Segment 3)

Method 1: Using Request::segment()

Laravel's Request class includes a handy method called segment() that lets you grab a specific segment from the URL.

Syntax

php
$request->segment($index);

Example

Let’s say you have this URL:

plain
https://yourdomain.com/products/electronics/123

You can get each segment like this:

php
use Illuminate\Support\Facades\Request;

$first = Request::segment(1); // products
$second = Request::segment(2); // electronics
$third = Request::segment(3); // 123

Note: Index starts at 1, not 0.

Method 2: Using the segments() Method

If you want to get all segments as an array, use the segments() method.

Example

php
use Illuminate\Support\Facades\Request;

$segments = Request::segments();

foreach ($segments as $key => $segment) {
    echo "Segment " . ($key + 1) . ": " . $segment . "<br>";
}

Output for the URL https://yourdomain.com/blog/laravel/8:

plain
Segment 1: blog
Segment 2: laravel
Segment 3: 8

Bonus: Get URL Segments in a Controller

You can also get segments directly inside a controller method:

php
public function show()
{
    $segment = request()->segment(2); // or Request::segment(2);
    return view('example')->with('segment', $segment);
}

Getting URL Segments in Blade Templates

If you want to retrieve parts of the URL directly in a Blade (.blade.php) file, Laravel makes it easy using the request() helper.

Example:

php
{{-- Get the first segment of the URL --}}
@php
    $segment1 = request()->segment(1);
@endphp

<p>Segment 1: {{ $segment1 }}</p>

Or, if you want to check a condition in Blade:

php
@if(request()->segment(1) === 'blog')
    <p>You are on the blog page!</p>
@endif
  • You can use request()->segment(n) inside @php, within @if conditions, or directly with {{ }} to print it.
  • This is useful for showing breadcrumbs, highlighting active menu items, or controlling what content is shown based on the URL.

⚠️ Things to keep in mind

  • Segment indexes start at 1, not 0.
  • You can use these methods in middleware, controllers, views, and even service providers.
  • If the segment doesn’t exist, Request::segment() will return null.

Conclusion

Retrieving URL segments in Laravel is simple, clean, and highly useful. Whether you're building RESTful routes, managing SEO-friendly URLs, or processing data, Laravel’s Request::segment() and segments() methods are must-haves in your developer toolkit.