---
title: Modifying request headers
description: Learn how to modify request headers in your Middleware.
url: /kb/guide/modify-request-headers
canonical_url: "https://vercel.com/kb/guide/modify-request-headers"
published: 2025-11-03
last_updated: 2025-11-11
authors: DX Team
related:
  - /docs/routing-middleware
  - /docs/routing-middleware/api
install_vercel_plugin: npx plugins add vercel/vercel-plugin
---
<!-- docsgraph:related -->
## Related pages

> **For AI agents:** Follow these links to understand how this page connects to the rest of the Vercel ecosystem. For the full cross-link map (inbound, outbound, prerequisites, and semantic neighbors), see the .graph.md link below.

- [Getting Started with Routing Middleware](https://vercel.com/docs/routing-middleware/getting-started?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — Learn how you can use Routing Middleware, code that executes before a request is processed on a site, to provide speed a
- [How to use Next.js as a backend for your frontend](https://nextjs.org/docs/app/guides/backend-for-frontend?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — Learn how to use Next.js as a backend framework
- [Adding a response header](https://vercel.com/kb/guide/add-response-header?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — Learn how to add a response header in your Middleware.
- [Proxy](https://nextjs.org/docs/pages/api-reference/file-conventions/proxy?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — Learn how to use Proxy to run code before a request is completed.
- [proxy.js](https://nextjs.org/docs/app/api-reference/file-conventions/proxy?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — API reference for the proxy.js file.
- [NextResponse](https://nextjs.org/docs/app/api-reference/functions/next-response?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — API Reference for NextResponse.
- [NextResponse](https://nextjs.org/docs/pages/api-reference/functions/next-response?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — API Reference for NextResponse.
- [Using the Node.js Runtime with Vercel Functions](https://vercel.com/docs/functions/runtimes/node-js?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — Learn how to use the Node.js runtime to create functions and deploy Node.js servers on Vercel.
- [Filtering query parameters](https://vercel.com/kb/guide/filter-query-parameters?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — Learn how to filter query parameters in your Middleware.
- [Rendering content based on device](https://vercel.com/kb/guide/rendering-content-based-on-device?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — Learn how to render different content based on the user agent in your Middleware.
- [Using the crypto Web API to redirect requests with a unique token](https://vercel.com/kb/guide/use-crypto-web-api?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — Learn how to use the Crypto Web API in your Middleware.
- [Migrate to Vercel from Netlify](https://vercel.com/kb/guide/migrate-to-vercel-from-netlify?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=related) — Migrate your website's configuration from Netlify to Vercel

Full cross-link map for this page: [/kb/guide/modify-request-headers.graph.md](/kb/guide/modify-request-headers.graph.md?from=related&source_path=%2Fkb%2Fguide%2Fmodify-request-headers&source_site=vercel-kb&relationship=graph)
<!-- /docsgraph:related -->


The following example shows how to modify request headers in your Middleware.

Your `middleware` file should be placed at the root of your project. If you are using the `src` directory, the file should be placed in the `src` directory.

```js
import { NextResponse } from 'next/server';

export default function middleware(request) {
  // Clone the request headers
  // You can modify them with headers API: https://developer.mozilla.org/en-US/docs/Web/API/Headers
  const requestHeaders = new Headers(request.headers);

  // Add new request headers
  requestHeaders.set('x-hello-from-middleware1', 'hello');
  requestHeaders.set('x-hello-from-middleware2', 'world!');

  // Update an existing request header
  requestHeaders.set('user-agent', 'New User Agent overriden by middleware!');

  // Delete an existing request header
  requestHeaders.delete('x-from-client');

  // You can also set request headers in NextResponse.rewrite
  return NextResponse.next({
    request: {
      // New request headers
      headers: requestHeaders,
    },
  });
}
```
```ts
import { NextResponse } from 'next/server';

export default function middleware(request: Request) {
  // Clone the request headers
  // You can modify them with headers API: https://developer.mozilla.org/en-US/docs/Web/API/Headers
  const requestHeaders = new Headers(request.headers);

  // Add new request headers
  requestHeaders.set('x-hello-from-middleware1', 'hello');
  requestHeaders.set('x-hello-from-middleware2', 'world!');

  // Update an existing request header
  requestHeaders.set('user-agent', 'New User Agent overriden by middleware!');

  // Delete an existing request header
  requestHeaders.delete('x-from-client');

  // You can also set request headers in NextResponse.rewrite
  return NextResponse.next({
    request: {
      // New request headers
      headers: requestHeaders,
    },
  });
}
```
```js
import { NextResponse } from 'next/server';

export default function middleware(request) {
  // Clone the request headers
  // You can modify them with headers API: https://developer.mozilla.org/en-US/docs/Web/API/Headers
  const requestHeaders = new Headers(request.headers);

  // Add new request headers
  requestHeaders.set('x-hello-from-middleware1', 'hello');
  requestHeaders.set('x-hello-from-middleware2', 'world!');

  // Update an existing request header
  requestHeaders.set('user-agent', 'New User Agent overriden by middleware!');

  // Delete an existing request header
  requestHeaders.delete('x-from-client');

  // You can also set request headers in NextResponse.rewrite
  return NextResponse.next({
    request: {
      // New request headers
      headers: requestHeaders,
    },
  });
}
```
```ts
import { NextResponse } from 'next/server';

export default function middleware(request: Request) {
  // Clone the request headers
  // You can modify them with headers API: https://developer.mozilla.org/en-US/docs/Web/API/Headers
  const requestHeaders = new Headers(request.headers);

  // Add new request headers
  requestHeaders.set('x-hello-from-middleware1', 'hello');
  requestHeaders.set('x-hello-from-middleware2', 'world!');

  // Update an existing request header
  requestHeaders.set('user-agent', 'New User Agent overriden by middleware!');

  // Delete an existing request header
  requestHeaders.delete('x-from-client');

  // You can also set request headers in NextResponse.rewrite
  return NextResponse.next({
    request: {
      // New request headers
      headers: requestHeaders,
    },
  });
}
```
```js
import { next } from '@vercel/functions';

export default function middleware(request) {
  // Clone the request headers
  // You can modify them with headers API: https://developer.mozilla.org/en-US/docs/Web/API/Headers
  const requestHeaders = new Headers(request.headers);

  // Add new request headers
  requestHeaders.set('x-hello-from-middleware1', 'hello');
  requestHeaders.set('x-hello-from-middleware2', 'world!');

  // Update an existing request header
  requestHeaders.set('user-agent', 'New User Agent overriden by middleware!');

  // Delete an existing request header
  requestHeaders.delete('x-from-client');

  // You can also set request headers in NextResponse.rewrite
  return next({
    request: {
      // New request headers
      headers: requestHeaders,
    },
  });
}
```
```ts
import { next } from '@vercel/functions';

export default function middleware(request: Request) {
  // Clone the request headers
  // You can modify them with headers API: https://developer.mozilla.org/en-US/docs/Web/API/Headers
  const requestHeaders = new Headers(request.headers);

  // Add new request headers
  requestHeaders.set('x-hello-from-middleware1', 'hello');
  requestHeaders.set('x-hello-from-middleware2', 'world!');

  // Update an existing request header
  requestHeaders.set('user-agent', 'New User Agent overriden by middleware!');

  // Delete an existing request header
  requestHeaders.delete('x-from-client');

  // You can also set request headers in NextResponse.rewrite
  return next({
    request: {
      // New request headers
      headers: requestHeaders,
    },
  });
}
```

## More resources

- [Middleware](/docs/routing-middleware)
  
- [Middleware API](/docs/routing-middleware/api)