Made in Germany · GDPR-compliant · No tracking

Bot Defense.
Made in Germany.

The CAPTCHA alternative without tracking, without cookies and without picture puzzles. Proof of work and behavioural analysis, processed on our own servers in Germany.

Permanently free for private websites. Pricing for commercial use · Compared with reCAPTCHA

Quickstart

Live in 5 minutes — on your platform

  1. In WordPress, go to Plugins → Add New and search for “CaptchaCore” — or download the plugin from your account
  2. Enter your site key & secret under Settings → CaptchaCore
  3. Done — login, registration, comments, Elementor & Formidable are protected

How it works

Three steps. Zero friction.

Real humans notice nothing. Bots fail multiple layers at once.

01

Widget + Adaptive Policy

The V2 widget (16 KB) fetches an adaptive challenge policy from the server — difficulty, challenge type and profile are controlled per site and form.

02

PoW + behavioral analysis

SHA-256 or memory-hard PoW in the WebWorker. In parallel: mouse entropy, typing rhythm and scroll behavior are captured passively — only scores, no raw data.

03

Adaptive Risk Engine

Context-aware scoring: a login is judged more strictly than a contact form. IP archive, campaign detection, confidence score. Answer in under 50 ms.

What really happens between page load and submit is set out stage by stage on the page How CaptchaCore works.

Multi-layered security

5 layers of defense. No single point of failure.

Layer 1: Proof of Work

SHA-256 or memory-hard Argon2 (GPU-resistant) — every client has to do computational work. Difficulty is controlled dynamically per site profile and under-attack level. Nonces EdDSA-signed, single-use.

Layer 2: Behavioral & environment fingerprint

Mouse entropy, typing rhythm, scroll/touch/focus, canvas timing, WebGL renderer, requestAnimationFrame cadence, OfflineAudioContext, storage APIs — exposes even disguised headless browsers (Puppeteer Stealth, Playwright). Privacy by design, scores only.

Layer 3: Adaptive Risk Engine

Context-aware scoring: a login is judged more strictly than a contact form. Site profiles, form policies, confidence score and reason codes. IP reputation, ASN, user agent, environment fingerprint — all weighted per profile.

Layer 4: Threat intelligence

Extensive IP archive of high-risk addresses, updated several times a day. Automatic campaign detection for coordinated attacks. Auto-learning from blocked patterns with score decay.

Layer 5: Under-Attack-Mode

4-level Under-Attack-Mode (levels 0–3). Automatic escalation based on block rate. Memory-hard PoW and interaction step-up under elevated risk. HMAC-signed access cookies per level.

The technical and organisational measures behind these layers are listed on the Security page.

Three modes

A fit for every form

From invisible protection to the classic checkbox — you decide how much your users see.

Interactive

Empfohlen

Widget visible, the checkbox ticks itself once enough human interaction is detected (typing, mouse, scrolling). No click required. Fallback: users can also click manually.

data-captchacore="interactive"

Visible

The checkbox has to be clicked manually. Like the well-known providers, but without their data outflow. Starts the computation on click. Good for forms with high security requirements.

data-captchacore="visible"

Invisible

No UI. PoW solves entirely in the background. Ideal for login forms or pages where a widget would get in the way. Blocks submit until the token is ready.

data-captchacore="invisible"

Features

Built for privacy & performance

Hosted in Germany

Verification, risk engine and database run on our own servers in Germany. On request you can also run CaptchaCore entirely on your own infrastructure.

GDPR-compliant

No cookies, no tracking, no raw data. Rolling-salt IP hashing (6h rotation), separate operational/security logs with strict retention periods.

Sub-200ms verification

The risk engine answers in under 50 ms and the computation is solved after roughly 200 ms. The widget weighs 16 KB gzip and, thanks to a web worker, never blocks the interface.

Proof of Work (SHA-256)

Hashcash principle. Difficulty configurable from 2–6. Single-use nonce via Redis with TTL. A WebWorker solves it in the background.

Behavioral & environment fingerprint

Mouse, typing rhythm, touch, paste, canvas timing, WebGL renderer, rAF cadence, storage APIs. Detects even disguised headless browsers. Aggregated, no raw data.

Under-Attack-Mode

4-level Under-Attack-Mode. Automatic escalation and de-escalation. Level-specific access cookies.

Auto-learning

Threat Intelligence learns hourly from blocked patterns. IP ranges, UA patterns and behavioral anomalies are detected automatically.

Customizable widget

Light, dark or automatic appearance, plus accent colour, label, your own branding and size — configurable per site.

Admin dashboard

Reports, verification logs, threat picture, site management, key rotation, user management and a complete audit trail.

Integration

Integrated in 5 minutes

WordPress plugin, Laravel package, Symfony bundle or simply a script tag — CaptchaCore adapts to your stack.

<!-- 1. Script einbinden -->
<script src="https://src-eu.captchacore.eu/widget/captchacore-v2.min.js"
        data-service-url="https://api.captchacore.eu"
        data-site-key="cc_pub_dein_key"
        async defer></script>

<!-- 2. Formular mit data-captchacore Attribut -->
<form data-captchacore="interactive" method="post">
    <div data-captchacore-widget></div>
    <button type="submit">Absenden</button>
</form>

<!-- 3. Server-seitig Token verifizieren -->
POST https://api.captchacore.eu/api/v2/verify
Header: X-CaptchaCore-Key: cc_sec_dein_secret
Body:   { "token": "...", "form_type": "contact" }
// 1. Repository in composer.json eintragen
"repositories": [{"type":"composer", "url":"https://captchacore.eu/packages"}]

// 2. Paket installieren
composer require captchacore/laravel

// 3. .env konfigurieren
CAPTCHACORE_URL=https://api.captchacore.eu
CAPTCHACORE_SITE_KEY=cc_pub_dein_key
CAPTCHACORE_SECRET_KEY=cc_sec_dein_secret

// 3. Blade-Component im Formular
<x-captchacore::widget />

// 4. Middleware auf Route
Route::post('/register', RegisterController::class)
    ->middleware('captchacore:register');
// 1. Repository in composer.json eintragen
"repositories": [{"type":"composer", "url":"https://captchacore.eu/packages"}]

// 2. Bundle installieren
composer require captchacore/captchacore-bundle

// 3. .env konfigurieren
CAPTCHACORE_URL=https://api.captchacore.eu
CAPTCHACORE_SITE_KEY=cc_pub_dein_key
CAPTCHACORE_SECRET_KEY=cc_sec_dein_secret

// 4. FormType im Formular — oder Attribute / Validator / Twig
$builder->add('captcha', CaptchaCoreType::class, [
    'form_type' => 'contact',
]);

// Alternativ: #[RequiresCaptcha] auf der Controller-Action
#[RequiresCaptcha(formType: 'contact')]
public function submit(Request $request): Response { /* ... */ }
// 1. Plugin hochladen unter Plugins > Installieren

// 2. Unter Einstellungen > CaptchaCore konfigurieren:
Service-URL:  https://api.captchacore.eu
Site Key:     cc_pub_dein_key
Secret Key:   cc_sec_dein_secret

// 3. Formulare aktivieren (Checkboxen):
 Login      Registrierung
 Kommentare   Passwort vergessen
 Formidable Forms

// Kein Code nötig. Fertig.

Full guides, error codes and reason codes are in the documentation. Plugins and packages are available for download there as well.

Comparison

The difference in three figures

The three figures that end up in your privacy notice and in your load time. Everything else is set out with sources on the comparison page.

Place of processing

Germany

reCAPTCHA and hCaptcha process data in the USA among other places.

Widget size (gzip)

16 KB

reCAPTCHA loads around 450 KB, hCaptcha around 65 KB.

Picture puzzles

none

At the US providers they appear as soon as a visitor is considered suspicious.

Privacy

Privacy by Design. Not as an afterthought.

No foreign services in the widget

The widget talks exclusively to our API in Germany. No Google, no ad network, no tracker. The script file itself comes from the European CDN.

IP anonymization

Before storage the last octet of an IPv4 address and the last 80 bits of an IPv6 address are dropped. This cannot be switched off, only tightened.

Configurable log retention

Default: 30 days. Automatic cleanup via cron. Can be set to 7 or 90 days.

No raw data

Mouse movement, keystrokes and touch events are condensed inside the browser. Only metrics and hashes leave the device.

No persistent cookies

Only in Under-Attack-Mode: a short-lived HMAC-signed cookie (30 min). Otherwise: no cookies.

GDPR Art. 25

Data minimization as the technical default. Not a feature toggle, but an architectural decision.

Which data is processed for which purpose is set out in the privacy centre. As a customer you conclude the data processing agreement electronically in your account.

Technical details

The hard numbers

What the visitor loads

Widget (V2)16 KB gzip
Worker for SHA-2561,2 KB gzip
Worker for Argon20,5 KB gzip
External dependenciesnone
Cookies in normal operation0
Fonts from foreign serversnone

Methods and timings

ComputationSHA-256, Argon2 when needed
Solving time (level 4)~200 ms median
Risk engine responseunder 50 ms
Token signatureEdDSA (Ed25519)
Noncesingle use, valid for 5 minutes
Token5 minutes, renews itself

Current response times and the state of every component are shown on the public system status.

Global infrastructure

Widget delivery via edge network

A European CDN delivers the widget file. The EU endpoint is the default; you only enable the worldwide endpoint if you need it.

Edge network

EU CDN provider headquartered in the EU

114 PoPs
EU-only (default) GDPR 35 PoPs
src-eu.captchacore.eu — European locations only
Global (optional) 114 PoPs
src.captchacore.eu — global latency optimization

EU-only (default)

GDPR

The widget file is delivered exclusively via European servers. No transfer to third countries takes place.

src-eu.captchacore.eu

35 locations in Europe:

Germany (primary), Austria, Switzerland, Netherlands, Belgium, France, United Kingdom, Ireland, Spain, Portugal, Italy, Sweden, Norway, Denmark, Finland, Poland, Czech Republic, Romania, Bulgaria, Greece, Croatia, Serbia, Slovenia, Hungary

Global (optional)

All European locations plus servers worldwide, for short load times with an international audience. Delivery then also takes place outside the EU, covered by standard contractual clauses.

src.captchacore.eu

114 locations worldwide:

Europe: all 35 European locations

North America: New York, Washington, Chicago, Dallas, Los Angeles, Seattle, Miami, Atlanta, Toronto, Montreal

South America: São Paulo, Buenos Aires, Bogotá, Lima, Santiago

Asia-Pacific: Singapore, Hong Kong, Tokyo, Seoul, Mumbai, Delhi, Manila, Osaka, Jakarta

Oceania & Middle East: Sydney, Melbourne, Auckland, Dubai, Doha, Istanbul

Important for your privacy policy: verification always runs in Germany, only the delivery of the script file can happen worldwide. What that means in detail.

Ready for bot defense
without compromise?

Try the check in the live demo, look at the pricing, or read in the documentation how the integration works.

Permanently free for private websites · Processing in Germany · Data processing agreement in your account