Skip to main content
451

Unavailable For Legal Reasons

Active
RFC 7725 §3Since 2016Government censorship, DMCA takedowns, court orders, sanctions compliance, geo-blocking

HTTP 451 Unavailable For Legal Reasons indicates the server is denying access to a resource as a consequence of a legal demand. Defined in RFC 7725 §3. Named after Ray Bradbury's Fahrenheit 451. The response SHOULD include a Link header with rel="blocked-by" identifying the entity imposing the legal restriction.

Description

The 451 status code indicates that the server operator has received a legal demand to deny access to the resource or to a set of resources that includes the requested resource. The code itself is a reference to Ray Bradbury's 1953 novel Fahrenheit 451, in which books are banned and burned — an apt metaphor for legally mandated content suppression on the internet.

Unlike 403 Forbidden, which signals the server's own access control decision, 451 communicates that a third-party legal authority has compelled the restriction. The server operator is not exercising discretion — it is complying with an external legal requirement. This distinction matters for transparency: users and watchdog organizations can differentiate between platform policy enforcement and government-mandated censorship.

The response SHOULD include an explanation in the response body describing why the resource is unavailable and identifying the legal demand that triggered the block. Additionally, the response SHOULD include a Link header field with a relationship type of "blocked-by" pointing to the entity responsible for the legal demand (e.g., a court, regulatory body, or government agency). This header enables automated transparency reporting and censorship monitoring.

Common triggers include government censorship orders, DMCA takedown notices, court-ordered injunctions, economic sanctions compliance, gambling or alcohol advertising regulations by jurisdiction, and right-to-be-forgotten requests under GDPR Article 17. Major platforms including GitHub, Google, Twitter/X, and Reddit return 451 responses and publish transparency reports tracking their frequency and origin.

451 has become a critical tool for internet freedom organizations like the Lumen Database and the EFF, who monitor its usage to track global censorship patterns. The status code transforms what would otherwise be a silent 403 into a machine-readable signal that legal restriction — not technical failure or policy choice — is the cause of inaccessibility.

Examples

Request for a legally restricted resource
http
GET /articles/leaked-government-documents HTTP/1.1
Host: news.example.com
Accept: text/html
Accept-Language: en-US
451 response — government court order
http
HTTP/1.1 451 Unavailable For Legal Reasons
Content-Type: text/html; charset=utf-8
Link: <https://courts.example.gov/orders/2024-1234>; rel="blocked-by"

<html>
<body>
<h1>Unavailable For Legal Reasons</h1>
<p>This content has been restricted pursuant to court order
   Case No. 2024-CV-1234 issued by the District Court on 2024-03-15.</p>
<p>The order requires removal of content related to ongoing
   national security proceedings.</p>
</body>
</html>
Request for DMCA-restricted content
http
GET /repos/user/project/blob/main/proprietary-algorithm.py HTTP/1.1
Host: api.code-hosting.example.com
Authorization: Bearer ghp_token123
Accept: application/json
451 response — DMCA takedown notice
http
HTTP/1.1 451 Unavailable For Legal Reasons
Content-Type: application/json
Link: <https://lumendatabase.org/notices/12345678>; rel="blocked-by"

{"error": "unavailable_for_legal_reasons", "message": "This repository has been disabled in response to a DMCA takedown notice.", "legal_basis": "17 U.S.C. § 512(c)", "notice_url": "https://lumendatabase.org/notices/12345678", "counter_notice_info": "https://docs.code-hosting.example.com/dmca-counter-notice", "disabled_at": "2024-02-20T14:30:00Z"}
Request blocked by geo-restriction (sanctions)
http
GET /api/v1/services/cloud-compute HTTP/1.1
Host: platform.example.com
Authorization: Bearer user-token
X-Forwarded-For: 5.34.200.100
451 response — sanctions compliance
http
HTTP/1.1 451 Unavailable For Legal Reasons
Content-Type: application/json
Link: <https://www.treasury.gov/ofac>; rel="blocked-by"

{"error": "unavailable_for_legal_reasons", "message": "This service is unavailable in your region due to applicable trade sanctions and export control regulations.", "legal_basis": "U.S. Executive Order 13694, EU Council Regulation 2014/833", "blocked_jurisdiction": "sanctioned_territory", "more_info": "https://platform.example.com/legal/sanctions-policy"}

Edge Cases

  • 451 vs 403: Use 403 when the server itself decides to deny access (authentication, authorization, IP ban). Use 451 ONLY when an external legal demand compels the restriction. Misusing 451 for policy decisions undermines its value as a transparency signal.
  • The Link header with rel="blocked-by" SHOULD identify the legal authority (court, regulator, rights holder) — not the server operator itself. Omitting this header reduces the response's utility for censorship monitoring and transparency reporting.
  • Geo-blocking for legal compliance (sanctions, gambling laws, age restrictions) qualifies for 451 when the restriction is legally mandated. Geo-blocking for business reasons (licensing, pricing) should use 403 instead.
  • GDPR right-to-be-forgotten (Article 17) requests create a tension: the subject wants invisibility, but 451 draws attention. Some implementations return 451 only to the original requester of delisting, not to end users searching for the content.
  • A 451 response to a resource that was previously accessible serves as evidence of censorship. Platforms should consider whether returning 451 (transparent) or silently removing the resource (opaque) better serves their legal and ethical obligations.
  • When a legal demand covers a SET of resources (e.g., an entire domain or user account), the 451 response should indicate whether the specific resource or the broader set triggered the block — this affects counter-notice and appeal procedures.
  • Caching behavior: 451 responses are cacheable by default (like other 4xx responses), but operators should consider whether the legal restriction is temporary (court injunction pending appeal) or permanent (final judgment) when setting Cache-Control headers.

When You'll See This

  • Government orders a news website to remove an article about classified operations
  • DMCA takedown notice filed against a code repository hosting copyrighted material
  • Cloud platform denying service to users in OFAC-sanctioned countries
  • Search engine delisting results pursuant to a GDPR right-to-be-forgotten request
  • Gambling website blocking access from jurisdictions where online gambling is illegal
  • Social media platform restricting a post after receiving a court defamation order
  • ISP blocking access to a website pursuant to a national internet censorship law
  • Streaming platform geo-blocking content due to regional licensing court orders

Implementation References

LanguageConstant
Gohttp.StatusUnavailableForLegalReasons
Rusthttp::StatusCode::UNAVAILABLE_FOR_LEGAL_REASONS
Pythonhttp.HTTPStatus.UNAVAILABLE_FOR_LEGAL_REASONS
Node.jshttp.STATUS_CODES[451]
.NETHttpStatusCode.UnavailableForLegalReasons
JavaHttpURLConnection (no built-in constant; use 451 literal)
PHPResponse::HTTP_UNAVAILABLE_FOR_LEGAL_REASONS (Symfony)
Ruby:unavailable_for_legal_reasons (Rack)

History

Proposed in 2012 by Tim Bray as an Internet-Draft, inspired by the absence of a status code distinguishing legal restrictions from server policy. Standardized as RFC 7725 in February 2016. The code number 451 is a direct homage to Ray Bradbury's 1953 dystopian novel Fahrenheit 451, in which a totalitarian government burns books to suppress dissenting ideas — making it one of the few HTTP status codes with a literary reference.

Related Status Codes

Related Headers

FAQ

What is the difference between HTTP 451 and HTTP 403?

403 Forbidden means the server itself has decided to deny access — it's the server operator's own policy (authentication failure, insufficient permissions, IP blacklist). 451 means an external legal authority has compelled the server to deny access. The server operator would serve the content if legally permitted. This distinction is critical for transparency: 451 signals censorship or legal restriction to users, researchers, and advocacy organizations, while 403 is a routine access control response.

What should the response body and headers of a 451 response contain?

The response SHOULD include a Link header with rel="blocked-by" pointing to the entity that imposed the legal demand (e.g., a court URL, regulatory body, or rights organization like the Lumen Database). The body SHOULD contain a human-readable explanation of: (1) which legal authority issued the demand, (2) the legal basis (statute, court order number, regulation), (3) when the restriction was imposed, and (4) any counter-notice or appeal mechanism available to the affected party. Machine-readable formats (JSON with structured fields) improve automated monitoring.

How do platforms use 451 for transparency reporting?

Major platforms like GitHub, Google, Twitter/X, and Reddit return 451 responses and publish periodic transparency reports tallying the number of legal demands received, the jurisdictions they originated from, and the compliance rate. Organizations like the Lumen Database, EFF, and OONI (Open Observatory of Network Interference) aggregate 451 responses across the internet to map global censorship patterns. The machine-readable Link header enables automated collection, making 451 a cornerstone of internet freedom monitoring infrastructure.

Source: RFC 7725 §3