webfilteringdatabase.com
Home Find Your Solution
Features
Domain Categorization API Real-Time Classification 59 Filtering Categories Offline Database (100M) ML Classification Content Classification
Industries
K-12 Schools Corporate Healthcare Government ISPs
Tools
Domain Lookup Bulk Categorization Category Explorer
Resources
Pricing API Documentation Login / Sign Up
Knowledge Base

CIPA Web Filter for Education

CIPA-Compliant Web Filtering for K-12 Schools, Districts, and Universities. Protect Students on Every Device, On-Campus and Off-Campus, Across 100 Million Categorized Domains

Why Schools Need Comprehensive Web Filtering

CIPA requires every school receiving E-Rate funding to block obscene and harmful content. Beyond compliance, schools must protect students from cyberbullying, predators, and distracting sites that directly impact academic outcomes. Learn how schools protect students with web filtering across campus networks and take-home devices, and how to meet CIPA requirements with our web filtering database.

CIPA Compliance

Meet federal CIPA and E-Rate requirements with automated content blocking and audit-ready reporting.

Student Safety

Real-time threat detection blocks cyberbullying, predators, and self-harm content with instant alerts to counselors.

Age-Appropriate Filtering

Graduated policies for K-5, 6-8, and 9-12 — from strict allowlists to open research with safety guardrails.

100M+
Domains Classified
59
Content Categories
<10ms
Lookup Latency
E-Rate
Eligible

CIPA Compliance Made Simple

Meet every CIPA requirement with automated filtering, documentation, and audit-ready reporting

CIPA compliance requires more than just installing a filter. Schools must adopt and enforce an Internet Safety Policy (ISP), implement technology protection measures, and hold at least one public hearing about the policy. The technology protection must block or filter access to visual depictions that are obscene (for all users), contain child pornography (for all users), or are harmful to minors (for minor users).

The web filtering database maps directly to CIPA requirements. The adult content, pornography, and nudity categories cover the "obscene" and "harmful to minors" requirements. The database's categorization of known CSAM distribution domains addresses the child pornography requirement. But CIPA compliance extends further: schools must also address unauthorized access to other content, including hacking tools and illegal activities, both of which are covered by dedicated categories in the 59-category taxonomy.

Critically, CIPA requires that authorized persons may disable the filter for bona fide research or other lawful purposes. The web filtering system supports this through teacher override capabilities: authorized staff can temporarily unblock specific domains or categories for a defined period using a secure authentication mechanism. Every override is logged with the authorizing user, the unblocked domain, the duration, and the business justification, creating the audit trail CIPA compliance requires.

Content Protection

Block obscene, harmful, and inappropriate content across all 59 categories

Teacher Overrides

Authorized staff can temporarily bypass filters for legitimate research needs

E-Rate Documentation

Pre-built reports satisfy E-Rate auditor requirements for CIPA compliance evidence

Chromebook & 1:1 Device Filtering

Comprehensive filtering for school-issued devices on and off campus

Filtering Across Every Environment

The 1:1 device model -- where every student receives a school-issued Chromebook, iPad, or laptop -- has become standard in K-12 education. These devices travel between school, home, and everywhere in between. Filtering must follow the device regardless of network, ensuring consistent protection whether a student is in the classroom, at a coffee shop, or on home Wi-Fi.

On-Campus DNS Filtering School network DNS servers route all queries through the filtering database. Every device on the school network is automatically protected without per-device configuration. Covers all protocols, not just web browsing.
Off-Campus Endpoint Agent Lightweight agent on school-issued devices redirects DNS queries to filtering resolvers even when off-campus. For Chromebooks, this is deployed via Google Admin Console as a Chrome extension. For iPads, an MDM profile configures DNS-over-HTTPS to the filtering endpoint.
Google Workspace Integration Sync student and teacher accounts from Google Workspace for Education. Filtering policies apply by organizational unit (OU), ensuring elementary students have stricter filters than high schoolers. SafeSearch enforcement is applied automatically across all Google services.
VPN/Proxy Bypass Prevention Students are resourceful at finding ways around filters. The database categorizes known VPN services, web proxies, and anonymizer tools. The proxy-avoidance category is continuously updated as new bypass tools appear, staying ahead of student circumvention attempts.

BYOD and Guest Network Policies

Many schools allow students and staff to bring personal devices (BYOD) and connect to the school Wi-Fi. These devices cannot be managed with endpoint agents, but they still require filtering when on the school network. DNS-based filtering solves this challenge: the school's DHCP server assigns the filtering DNS resolver to all BYOD devices, ensuring that every DNS query passes through the categorization engine.

Guest networks for visitors, parents, and community members attending school events require a separate, less restrictive filtering policy. The web filtering database supports multiple policy profiles per network segment. The guest network might only block unsafe content, and adult content, while the student BYOD network applies the full educational filtering policy.

For schools hosting community events or serving as public Wi-Fi hotspots (common in rural districts), the filtering system ensures CIPA compliance even for non-student users. CIPA applies to all users of library and school internet access, not just minors, so basic filtering must remain active for all network segments.

Age-Appropriate Filtering Policies

Graduated filtering that adapts to student age, grade level, and educational needs

Elementary School (K-5)

Maximum restriction with a whitelist-leaning approach. Block all categories except pre-approved educational domains. Allow teacher-curated site lists for classroom activities. Block social media, gaming, streaming, and all mature content. Enable SafeSearch strict mode on all search engines. Restrict YouTube to YouTube Kids or EDU-curated channels only.

Middle School (6-8)

Moderate restriction with expanded access for research. Open access to educational, news, and reference categories. Continue blocking adult content, gambling, violence, and drugs. Allow limited social media access during designated periods for digital citizenship lessons. Enable moderate SafeSearch. Permit YouTube with restricted mode enabled.

High School (9-12)

Least restrictive with focus on safety. Open access to most categories needed for advanced research and college preparation. Block adult content, unsafe content, and illegal activities. Allow social media with monitoring. Enable standard SafeSearch. Provide students with a mechanism to request unblocking of specific sites for academic purposes.

Staff and Faculty Policies

Teachers and administrators need broader access for lesson planning, research, and professional development. Staff policies allow access to social media, news, and reference sites while maintaining blocks on unsafe content, adult content, and other web-based risks. IT administrators have unrestricted access for troubleshooting and testing.

Bell Schedule Integration

Filtering policies can shift automatically based on the school's bell schedule. During class periods, strict academic filtering applies. During lunch and after school, policies relax to allow recreational browsing on approved categories. Snow days and holidays can trigger a separate policy profile automatically.

Self-Harm & Safety Alerts

When a student attempts to access content related to self-harm, suicide, eating disorders, or violence, the filtering system does not just block the request. It generates a real-time alert to designated counselors or administrators, enabling early intervention. These safety alerts can save lives by identifying at-risk students before a crisis occurs.

District-Wide Deployment & Management

School districts managing dozens of buildings, thousands of devices, and tens of thousands of students need centralized filtering management with the flexibility to accommodate individual school needs.

Centralized Policy Management: Define district-wide baseline policies that apply to all schools. Individual principals or building IT contacts can then add school-specific customizations on top of the baseline. For example, the district blocks social media for all elementary students, but a specific middle school can allow access to a particular educational social platform for a digital citizenship unit.

Multi-School Reporting: District administrators view aggregate filtering statistics across all schools from a single dashboard. Drill down into individual schools, grade levels, or student groups to identify patterns. Compare filtering effectiveness across schools to ensure consistent CIPA compliance district-wide.

Google Admin Console Integration: For districts using Google Workspace for Education, the filtering system syncs organizational units directly from Google Admin Console. When a student moves from one school to another, their filtering policy updates automatically based on their new OU assignment. No manual reconfiguration required.

Budget-Friendly Licensing: Education pricing is based on student enrollment, not device count. Districts with 1:1 programs and BYOD do not pay extra for additional devices. Multi-year agreements provide budget predictability and lock in pricing for E-Rate funding cycles.

API Integration for School Filtering

Add CIPA-compliant web filtering to your school network with a few lines of code

School Network Content Filter

Classify student web requests against education-safe categories and enforce age-appropriate policies automatically.

import requests

API_URL = "https://webfilteringdatabase.com/api/moderate.php"
API_KEY = "YOUR_API_KEY"

# Categories blocked for K-12 students
BLOCKED_K12 = {
    "Adult Content", "Gambling", "Violence",
    "Drugs", "Weapons", "VPN/Proxy",
    "Malware", "Social Media"
}

def check_school_access(domain, grade_level):
    result = requests.post(API_URL, json={
        "api_key": API_KEY,
        "query": domain
    }).json()

    categories = set(result.get("categories", []))
    risk = result.get("risk_level", "low")

    # Block high-risk for all students
    if risk in ("high", "critical"):
        return "BLOCK", f"Risk: {risk}"

    # K-5: extra strict — also block gaming and streaming
    blocked = BLOCKED_K12.copy()
    if grade_level <= 5:
        blocked.update({"Gaming", "Streaming"})

    violations = categories & blocked
    if violations:
        return "BLOCK", f"Category: {', '.join(violations)}"

    return "ALLOW", result.get("primary_category", "Uncategorized")

# Example: student browsing on school network
domains = ["khanacademy.org", "youtube.com", "tiktok.com", "gambling-site.xyz"]
for d in domains:
    action, reason = check_school_access(d, grade_level=6)
    print(f"{action}: {d} — {reason}")
const API_URL = 'https://webfilteringdatabase.com/api/moderate.php';
const API_KEY = 'YOUR_API_KEY';

const BLOCKED_K12 = new Set([
    'Adult Content', 'Gambling', 'Violence',
    'Drugs', 'Weapons', 'VPN/Proxy', 'Malware'
]);

async function checkSchoolAccess(domain) {
    const res = await fetch(API_URL, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ api_key: API_KEY, query: domain })
    });
    const data = await res.json();

    const violations = (data.categories || [])
        .filter(c => BLOCKED_K12.has(c));
    if (violations.length) {
        return { action: 'BLOCK', reason: violations.join(', ') };
    }
    return { action: 'ALLOW', reason: data.primary_category };
}

['khanacademy.org', 'youtube.com', 'tiktok.com', 'gambling-site.xyz']
    .forEach(async d => {
        const r = await checkSchoolAccess(d);
        console.log(`${r.action}: ${d} — ${r.reason}`);
    });
# Check if a domain is safe for student access
curl -X POST "https://webfilteringdatabase.com/api/moderate.php" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_API_KEY",
    "query": "khanacademy.org"
  }'

# Response: {"primary_category":"Education", "risk_level":"low"}

# Check a video platform
curl -X POST "https://webfilteringdatabase.com/api/moderate.php" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_API_KEY",
    "query": "youtube.com"
  }'

# Response: {"primary_category":"Streaming Media", "risk_level":"low"}

# Check a social media domain
curl -X POST "https://webfilteringdatabase.com/api/moderate.php" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_API_KEY",
    "query": "tiktok.com"
  }'

# Response: {"primary_category":"Social Media", "risk_level":"low"}

# Check a gambling domain
curl -X POST "https://webfilteringdatabase.com/api/moderate.php" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_API_KEY",
    "query": "gambling-site.xyz"
  }'

# Response: {"primary_category":"Gambling", "risk_level":"high"}
<?php
$apiUrl = 'https://webfilteringdatabase.com/api/moderate.php';
$apiKey = 'YOUR_API_KEY';
$blockedK12 = ['Adult Content', 'Gambling', 'Violence', 'Drugs', 'Malware'];

function checkSchoolAccess($domain, $apiUrl, $apiKey, $blocked) {
    $ch = curl_init($apiUrl);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
        'api_key' => $apiKey,
        'query'   => $domain
    ]));
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = json_decode(curl_exec($ch), true);
    curl_close($ch);

    $violations = array_intersect($result['categories'] ?? [], $blocked);
    if (!empty($violations)) {
        return ['BLOCK', implode(', ', $violations)];
    }
    return ['ALLOW', $result['primary_category'] ?? 'Unknown'];
}

$domains = ['khanacademy.org', 'youtube.com', 'tiktok.com', 'gambling-site.xyz'];
foreach ($domains as $d) {
    [$action, $reason] = checkSchoolAccess($d, $apiUrl, $apiKey, $blockedK12);
    echo "$action: $d — $reason\n";
}
?>

Protect Your Students with Smart Filtering

CIPA-compliant web filtering for schools and districts. 100 million domains, 59 categories, on-campus and off-campus protection.