- Home
- HTTP Status Codes
- 451 Unavailable For Legal Reasons
Status Code
451 Unavailable For Legal Reasons
The requested resource is unavailable due to legal demands. Learn about 451 status code used for censorship and content blocking.
TL;DR: Content blocked due to legal requirements like court orders, DMCA takedowns, or government censorship. Check the legal notice link for details.
What is 451 Unavailable For Legal Reasons?
A 451 Unavailable For Legal Reasons status code indicates that the requested resource cannot be served due to legal restrictions, such as government censorship, court orders, or compliance with local regulations. The name is a reference to Ray Bradbury’s novel “Fahrenheit 451” about censorship and book burning.
Think of it like a library having to remove certain books due to a court order—the books existed and were accessible before, but legal requirements now prevent their distribution.
When Does This Happen?
You’ll see a 451 Unavailable For Legal Reasons response in these situations:
1. Geographic Content Restrictions
User accessing content from restricted region
→ DMCA takedown request honored
→ Content blocked with 451 response
2. Government Censorship
Content deemed illegal in specific country
→ Government mandates blocking
→ Returns 451 instead of content
3. Court Orders
Legal injunction against content
→ Platform legally required to block
→ 451 response with legal explanation
4. Copyright Restrictions
DMCA or copyright claim filed
→ Content removed pending review
→ 451 with takedown notice reference
5. Privacy Regulation Compliance
GDPR "right to be forgotten" request
→ Content must be delisted
→ 451 with regulatory reference
Example Responses
Basic 451 Response:
HTTP/1.1 451 Unavailable For Legal Reasons
Content-Type: text/html
Link: <https://example.com/legal/dmca-notice-123>; rel="blocked-by"
Content-Length: 324
<!DOCTYPE html>
<html>
<head><title>Content Unavailable</title></head>
<body>
<h1>451: Unavailable For Legal Reasons</h1>
<p>This content is not available due to legal restrictions.</p>
<p>For more information, see our <a href="/legal/dmca-notice-123">legal notice</a>.</p>
</body>
</html>
```text
**Geographic Restriction:**
```http
HTTP/1.1 451 Unavailable For Legal Reasons
Content-Type: application/json
Link: <https://example.com/legal/geo-restrictions>; rel="blocked-by"
Vary: CF-IPCountry
{
"error": "Unavailable For Legal Reasons",
"message": "This content is not available in your region due to legal restrictions",
"details": {
"reason": "Geographic licensing restrictions",
"your_location": "DE",
"blocked_in": ["DE", "FR", "IT"],
"available_in": ["US", "CA", "GB"]
},
"legal_reference": "https://example.com/legal/geo-restrictions",
"contact": "legal@example.com"
}
DMCA Takedown:
HTTP/1.1 451 Unavailable For Legal Reasons
Content-Type: application/json
Link: <https://lumendatabase.org/notices/12345>; rel="blocked-by"
{
"error": "Unavailable For Legal Reasons",
"message": "This content has been removed in response to a legal request",
"details": {
"reason": "DMCA Takedown Notice",
"notice_id": "DMCA-2026-001234",
"date_removed": "2026-01-15",
"complainant": "Copyright Holder Inc.",
"legal_basis": "17 U.S.C. § 512(c)"
},
"transparency": {
"notice_url": "https://lumendatabase.org/notices/12345",
"counter_notice_info": "https://example.com/dmca/counter-notice"
},
"contact": {
"email": "dmca@example.com",
"form": "https://example.com/legal/counter-notice-form"
}
}
```text
**Government Censorship:**
```http
HTTP/1.1 451 Unavailable For Legal Reasons
Content-Type: text/html
Link: <https://example.com/transparency/blocking-order-456>; rel="blocked-by"
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Content Blocked</title>
</head>
<body>
<h1>451: Unavailable For Legal Reasons</h1>
<p>This content is unavailable in your jurisdiction due to a government blocking order.</p>
<div class="legal-info">
<h2>Legal Information</h2>
<ul>
<li><strong>Blocking Authority:</strong> [Country] Ministry of Communications</li>
<li><strong>Order Number:</strong> GOV-2026-789</li>
<li><strong>Date Issued:</strong> January 10, 2026</li>
<li><strong>Legal Basis:</strong> Communications Act Section 12</li>
</ul>
</div>
<div class="transparency">
<h2>Transparency Report</h2>
<p>View our <a href="/transparency/reports">transparency report</a> for more information about legal requests.</p>
</div>
<div class="appeal">
<h2>Disagree with this blocking?</h2>
<p>Contact the blocking authority or seek legal advice.</p>
</div>
</body>
</html>
Real-World Example
Imagine a video platform receiving a DMCA copyright complaint:
User Request:
GET /videos/funny-cat-compilation HTTP/1.1
Host: videos.example.com
User-Agent: Mozilla/5.0...
Accept: text/html,application/xhtml+xml
Cookie: session=abc123
```text
**451 DMCA Response:**
```http
HTTP/1.1 451 Unavailable For Legal Reasons
Content-Type: text/html; charset=utf-8
Link: <https://lumendatabase.org/notices/28394756>; rel="blocked-by"
Cache-Control: no-cache
Content-Length: 1456
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Video Unavailable - Copyright Claim</title>
<style>
body { font-family: Arial, sans-serif; max-width: 800px; margin: 50px auto; padding: 20px; }
.notice { background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; }
.legal-ref { background: #f8f9fa; padding: 15px; margin: 20px 0; }
</style>
</head>
<body>
<h1>🚫 Video Unavailable</h1>
<div class="notice">
<h2>451: Unavailable For Legal Reasons</h2>
<p>This video has been removed in response to a copyright claim.</p>
</div>
<div class="legal-ref">
<h3>Copyright Notice Details</h3>
<dl>
<dt><strong>Notice Type:</strong></dt>
<dd>DMCA Takedown (17 U.S.C. § 512)</dd>
<dt><strong>Complainant:</strong></dt>
<dd>Media Corporation LLC</dd>
<dt><strong>Date Removed:</strong></dt>
<dd>January 18, 2026</dd>
<dt><strong>Notice ID:</strong></dt>
<dd>DMCA-2026-001234</dd>
<dt><strong>Transparency Database:</strong></dt>
<dd><a href="https://lumendatabase.org/notices/28394756">View full notice on Lumen Database</a></dd>
</dl>
</div>
<div class="info">
<h3>What does this mean?</h3>
<p>A copyright holder has submitted a legal complaint claiming this video contains their copyrighted material.
Under the Digital Millennium Copyright Act (DMCA), we are required to remove the content.</p>
<h3>If you believe this is a mistake</h3>
<p>If you are the video uploader and believe this claim is incorrect, you can:</p>
<ol>
<li>Review the <a href="https://lumendatabase.org/notices/28394756">full copyright notice</a></li>
<li>Submit a <a href="/legal/dmca-counter-notice">DMCA counter-notice</a> if you have rights to this content</li>
<li>Contact our legal team at <a href="mailto:dmca@videos.example.com">dmca@videos.example.com</a></li>
</ol>
<h3>Learn More</h3>
<ul>
<li><a href="/help/copyright">Copyright Policy</a></li>
<li><a href="/transparency">Transparency Report</a></li>
<li><a href="/legal/dmca-process">DMCA Process</a></li>
</ul>
</div>
</body>
</html>
451 vs Other Error Codes
| Code | Meaning | Reason | Can Appeal |
|---|---|---|---|
| 451 | Legal restriction | Court order, law, regulation | Possibly (counter-notice) |
| 403 | Forbidden | Access denied by policy | Depends on policy |
| 404 | Not Found | Resource doesn’t exist | No (doesn’t exist) |
| 410 | Gone | Permanently removed (not legal) | No |
Important Characteristics
Transparency Requirement:
Link: <legal-notice-url>; rel="blocked-by"
↑
Should reference the legal basis for blocking
```nginx
**Geographic Awareness:**
```http
HTTP/1.1 451 Unavailable For Legal Reasons
Vary: CF-IPCountry ← May vary by location
Content blocked in: DE, FR
Content available in: US, GB
Reversible (Sometimes):
- DMCA counter-notices can restore content
- Court orders may be lifted
- Geographic restrictions may change
- Different from 410 Gone (permanent)
Named After Literature:
- Reference to “Fahrenheit 451” by Ray Bradbury
- Highlights censorship concerns
- Emphasizes free speech issues
Common Mistakes
❌ Using 403 instead of 451
HTTP/1.1 403 Forbidden ← Implies policy violation
Should be: 451 Unavailable For Legal Reasons ← Legal requirement
```text
**❌ No legal reference**
```http
HTTP/1.1 451 Unavailable For Legal Reasons
Content blocked. ← Doesn't explain why or legal basis
❌ Fake legal blocks
HTTP/1.1 451 Unavailable For Legal Reasons
← Used for business reasons, not actual legal requirements
```text
**✅ Correct usage**
```http
HTTP/1.1 451 Unavailable For Legal Reasons
Link: <https://example.com/legal/notice-123>; rel="blocked-by"
{
"error": "Unavailable For Legal Reasons",
"legal_notice": "https://example.com/legal/notice-123",
"reason": "DMCA Takedown",
"contact": "dmca@example.com"
}
Best Practices
Provide Transparency:
app.get('/content/:id', async (req, res) => {
const content = await db.getContent(req.params.id)
if (content.legalBlock) {
return res.status(451).set('Link', `<${content.legalNoticeUrl}>; rel="blocked-by"`).json({
error: 'Unavailable For Legal Reasons',
reason: content.blockReason,
legal_notice: content.legalNoticeUrl,
transparency_report: '/transparency/2026',
contact: 'legal@example.com',
date_blocked: content.blockDate
})
}
res.json(content)
})
```javascript
**Respect Geographic Restrictions:**
```javascript
const blockedCountries = ['DE', 'FR', 'IT']
app.get('/video/:id', (req, res) => {
const userCountry = req.headers['cf-ipcountry'] || geoip.lookup(req.ip)?.country
if (blockedCountries.includes(userCountry)) {
return res.status(451).json({
error: 'Unavailable For Legal Reasons',
message: 'This content is not available in your region',
your_location: userCountry,
reason: 'Geographic licensing restrictions',
legal_reference: '/legal/geo-restrictions'
})
}
// Serve content...
})
Maintain Transparency Reports:
// Track all 451 responses for transparency
app.use((req, res, next) => {
const originalStatus = res.status.bind(res)
res.status = function (code) {
if (code === 451) {
// Log for transparency report
transparencyLog.record({
url: req.url,
date: new Date(),
reason: res.locals.blockReason,
country: req.headers['cf-ipcountry'],
legal_reference: res.locals.legalReference
})
}
return originalStatus(code)
}
next()
})
```javascript
**Allow Counter-Notices:**
```javascript
app.post('/legal/counter-notice', async (req, res) => {
const { contentId, name, email, statement, signature } = req.body
// Record counter-notice
await db.createCounterNotice({
contentId,
submitter: { name, email },
statement,
signature,
date: new Date()
})
// Notify legal team
await notifyLegalTeam({
type: 'dmca-counter-notice',
contentId,
details: req.body
})
res.json({
success: true,
message: 'Counter-notice received',
next_steps: 'We will review within 10 business days',
reference_id: counterNoticeId
})
})
Implementation Examples
Express.js with Geographic Blocking:
const geoip = require('geoip-lite')
const geoBlockedContent = {
'/movie/123': ['CN', 'RU', 'IR'],
'/video/456': ['KP']
}
app.use((req, res, next) => {
const geo = geoip.lookup(req.ip)
const blockedCountries = geoBlockedContent[req.path]
if (blockedCountries?.includes(geo?.country)) {
return res.status(451).set('Link', '</legal/geo-block>; rel="blocked-by"').json({
error: 'Unavailable For Legal Reasons',
reason: 'Geographic restriction',
your_country: geo.country,
legal_reference: '/legal/geo-block'
})
}
next()
})
```javascript
**Django:**
```python
from django.http import JsonResponse
from django.views import View
import geoip2.database
class LegallyBlockedView(View):
def get(self, request, content_id):
content = Content.objects.get(id=content_id)
if content.is_blocked:
response = JsonResponse({
'error': 'Unavailable For Legal Reasons',
'reason': content.block_reason,
'legal_notice': content.legal_notice_url,
'date_blocked': content.block_date.isoformat(),
'contact': 'legal@example.com'
}, status=451)
response['Link'] = f'<{content.legal_notice_url}>; rel="blocked-by"'
return response
return JsonResponse({'content': content.data})
Nginx (Geographic Blocking):
geo $blocked_country {
default 0;
CN 1; # China
RU 1; # Russia
IR 1; # Iran
}
server {
location /restricted-content {
if ($blocked_country) {
return 451;
}
# Serve content...
}
error_page 451 /451.html;
location = /451.html {
internal;
add_header Link '</legal/geo-block>; rel="blocked-by"';
root /usr/share/nginx/html;
}
}
```javascript
## Transparency and Ethics
**Maintain Public Records:**
```javascript
// Publish transparency reports
app.get('/transparency/2026', async (req, res) => {
const report = await db.getTransparencyReport(2026)
res.json({
year: 2026,
total_requests: report.totalRequests,
by_type: {
dmca: report.dmcaCount,
government: report.governmentCount,
court_order: report.courtOrderCount
},
by_country: report.byCountry,
compliance_rate: report.complianceRate,
appeals: {
submitted: report.appeals.submitted,
successful: report.appeals.successful
}
})
})
Try It Yourself
Visit our request builder and see 451 in action:
- Set method to GET
- Set path to /legal-blocked-demo
- Optionally set X-Country header to test geo-blocking
- Click Send request
- Observe 451 response with legal notice
Related Status Codes
- 403 Forbidden - Access denied (policy, not legal)
- 404 Not Found - Resource doesn’t exist
- 410 Gone - Permanently removed (not legal reason)
- 200 OK - Successful request (content available)
Frequently Asked Questions
What does 451 Unavailable For Legal Reasons mean?
A 451 error means the content is blocked due to legal requirements. This includes government censorship, court orders, DMCA takedowns, or regional licensing restrictions.
Why is it called 451?
The code 451 references Ray Bradbury novel Fahrenheit 451 about book burning and censorship. It was chosen deliberately to highlight content being blocked for legal or political reasons.
Can I access content blocked by 451?
It depends on the reason. Geographic restrictions might be bypassed with VPN, but court-ordered blocks are legally enforced. The response may include details about who demanded the block.
What information should a 451 response include?
Best practice is to include a Link header pointing to an explanation of the legal demand, and optionally identify the blocking authority in the response body.