HTTP

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.

7 min read beginner Try in Playground

TL;DR: Content blocked due to legal requirements like court orders, DMCA takedowns, or government censorship. Check the legal notice link for details.

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

CodeMeaningReasonCan Appeal
451Legal restrictionCourt order, law, regulationPossibly (counter-notice)
403ForbiddenAccess denied by policyDepends on policy
404Not FoundResource doesn’t existNo (doesn’t exist)
410GonePermanently 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:

  1. Set method to GET
  2. Set path to /legal-blocked-demo
  3. Optionally set X-Country header to test geo-blocking
  4. Click Send request
  5. Observe 451 response with legal notice

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.

Keep Learning