Skip to main content
4xx Client Error

414 URI Too Long

The URI provided was too long for the server to process.

Meaning & Description

The 414 URI Too Long status code indicates that the server is refusing to service the request because the requested URI (Uniform Resource Identifier) is longer than the server is willing to interpret. This most commonly occurs when a client improperly converts a POST request with a large data payload into a GET request with long query string parameters.

Common Causes

  • Misusing GET requests to send large payloads (like base64 images or massive JSON objects) via query parameters.
  • Infinite redirect loops that continuously append data to the URL.
  • Web server constraints (e.g., Apache limits URLs to 8192 characters by default).

How to fix a 414 error

  1. Change the HTTP method from GET to POST and move the data from the URL query string to the request body.
  2. Check for faulty redirection logic that might be duplicating query parameters in a loop.
  3. If the long URL is intentional and safe, increase the maximum URL length permitted by your web server (e.g., Apache's `LimitRequestLine` or Nginx's `large_client_header_buffers`).

Browser & SEO Behaviour

Browser Behavior

Browsers typically enforce their own internal URL length limits (often around 2048 to 32768 characters) and may refuse to navigate to overly long URLs entirely, before even reaching the server.

SEO Impact

URLs that are excessively long can cause indexing issues, but typical SEO-friendly URLs never approach limits that would trigger a 414.

CDN Behavior

CDNs enforce strict URI length limits. Cloudflare, for example, limits URLs to 32KB and will return a 414 if exceeded.

Code Examples

HTTP
HTTP/1.1 414 URI Too Long
Content-Type: text/html
Connection: close

<html><body><h1>414 URI Too Long</h1></body></html>
Node.js (Express)
const express = require("express");
const app = express();

app.use((req, res, next) => {
  if (req.originalUrl.length > 2000) {
    return res.status(414).send("URI Too Long");
  }
  next();
});

app.get("/search", (req, res) => {
  res.send("Search results");
});
Python (FastAPI)
from fastapi import FastAPI, Request, HTTPException

app = FastAPI()

@app.middleware("http")
async def check_url_length(request: Request, call_next):
    if len(str(request.url)) > 2000:
        # Note: Usually web servers handle this before FastAPI
        from fastapi.responses import JSONResponse
        return JSONResponse(status_code=414, content={"detail": "URI Too Long"})
    response = await call_next(request)
    return response
Go (net/http)
func handler(w http.ResponseWriter, r *http.Request) {
    if len(r.URL.String()) > 2000 {
        http.Error(w, "URI Too Long", http.StatusURITooLong)
        return
    }
    w.WriteHeader(http.StatusOK)
}
C# (ASP.NET Core)
// In ASP.NET Core, URL length limits are typically configured in Kestrel settings:
// builder.WebHost.ConfigureKestrel(serverOptions =>
// {
//     serverOptions.Limits.MaxRequestLineSize = 2000;
// });
cURL
# A ridiculously long GET request will trigger a 414 from most servers
curl -X GET "https://api.example.com/search?q=$(head -c 10000 /dev/urandom | base64 | tr -d \n)"

Raw HTTP Response Example

HTTP Response
HTTP/1.1 414 URI Too Long
Date: Wed, 21 Oct 2026 07:28:00 GMT
Connection: close
Content-Type: text/plain

URI exceeds maximum allowed length.

Real-world Examples

Apache HTTP Server: Returns a 414 error if a requested URL exceeds the `LimitRequestLine` directive (default 8190 bytes).
NGINX: Returns 414 if the URI length exceeds the buffer sizes defined by `large_client_header_buffers`.

Frequently Asked Questions

What is the maximum safe length for a URL?

While HTTP itself doesn't define a limit, practical constraints mean you should keep URLs under 2,000 characters to ensure compatibility with all browsers (especially older IE) and CDNs.

How do I fix a 414 URI Too Long error?

The most robust fix is to redesign your API call. If you are passing large amounts of data in a GET query string, switch to a POST request and send the data in the request body.

Can I just increase the server limit to fix a 414?

You can increase limits in Apache (`LimitRequestLine`) or Nginx (`large_client_header_buffers`), but this is generally a band-aid. It increases memory usage and doesn't fix the underlying architectural flaw.

Did You Know?

The HTTP/1.1 specification explicitly states that servers should return 414 when a client improperly converts a POST request to a GET request with long query information.

Before RFC 7231, this status code was named "Request-URI Too Long".

Developer Tips

  • Never use GET requests for operations that require passing massive arrays of IDs or large payloads. Always use POST for complex or heavy queries (e.g., GraphQL or Elasticsearch use POST for queries).
  • Be vigilant about redirection logic in your application. Infinite redirect loops that append `?redirect_to=` over and over are a common accidental cause of 414s.

Interview Questions

These are questions you might face in a backend or API design interview that touch on HTTP 414.

If an API client needs to fetch 5,000 user profiles by ID, how would you design the endpoint to avoid a 414 error?

Instead of using a GET request with thousands of query parameters (e.g., `?id=1&id=2...`), I would design a POST endpoint (e.g., `/users/batch`) that accepts an array of IDs in the JSON body. This avoids URI length limits.

What is the difference between 413 and 414?

413 Payload Too Large means the request *body* is too big. 414 URI Too Long means the URL itself (path + query string) is too long.

Common Interview Mistakes

  • Suggesting that the best way to fix a 414 is simply increasing the server configuration limits, rather than refactoring the client to use POST.
  • Confusing it with 431 Request Header Fields Too Large. 414 specifically targets the URI line, not the subsequent headers.