# Turnstile, reCAPTCHA czy hCaptcha do formularza

Cloudflare Turnstile, Google reCAPTCHA i hCaptcha w formularzu kontaktowym: darmowe limity, co widzi odwiedzający, prywatność i weryfikacja na serwerze.

Author: Formgong
Published: 2026-10-05
Language: pl
Canonical: https://formgong.com/pl/blog/turnstile-vs-recaptcha-vs-hcaptcha/

Do typowego formularza kontaktowego najprostszy wybór to Cloudflare Turnstile. Jest darmowy bez limitu weryfikacji i zwykle nie pokazuje zagadek. Cloudflare deklaruje też, że nie czyta treści formularzy. reCAPTCHA pasuje, jeśli już korzystasz z Google Cloud i chcesz oceny ryzyka. hCaptcha pasuje, jeśli chcesz usługi spoza Google z darmowym planem. Każda działa tylko wtedy, gdy serwer sprawdza token.

## Porównanie w skrócie

Ceny i limity według stron dostawców na dzień 05.10.2026. Ceny są w dolarach amerykańskich.

Turnstile, reCAPTCHA i hCaptcha w formularzu kontaktowym
Cloudflare TurnstileGoogle reCAPTCHAhCaptcha

Za darmoBez limitu weryfikacji, do 20 widżetówDo 10 000 ocen miesięcznie (Essentials)Plan Basic jest darmowy
PłatnieTylko EnterprisePremium: $8 ryczałtem za 10 001–100 000, potem $1 za 1000Pro: $99 mies. przy płatności rocznej lub $139 miesięcznie, 100 tys. weryfikacji w cenie
Co widzi odwiedzającyTryb Managed, Non-Interactive lub Invisiblev2: checkbox lub niewidoczna; v3: bez zadańCheckbox i zadania z obrazkami; tryb pasywny w płatnych planach
Ocena ryzykaNie, tylko wynik tak/nieTak, w v3 od 0.0 do 1.0W planie Enterprise
Dla kogoDla większości formularzyDla stron już na Google CloudDla szukających alternatywy dla Google z obrazkami

Żadna z nich nie jest pełnym filtrem spamu. Ludzie wpisujący spam ręcznie przechodzą przez wszystkie trzy. Łącz każdą z polem-pułapką i regułami na serwerze, jak w [dokumentacji HTML](/pl/docs/html/).

## Cloudflare Turnstile

Turnstile uruchamia w przeglądarce drobne testy i zwykle decyduje bez zagadki. Do wyboru są trzy tryby: Managed, Non-Interactive i Invisible. Darmowy plan obejmuje do 20 widżetów, nielimitowane weryfikacje i 10 domen na widżet. Nie musisz przenosić strony do Cloudflare.

Cloudflare deklaruje, że Turnstile nie odczytuje, nie przechowuje i nie przesyła treści formularzy, a widżet spełnia WCAG 2.2 AA. Każdy token jest ważny 300 sekund i można go sprawdzić tylko raz. Drugie sprawdzenie tego samego tokena kończy się błędem `timeout-or-duplicate`.

Słabsze strony: nie ma oceny ryzyka do dostrojenia, a analityka w darmowym planie obejmuje siedem dni.

## Google reCAPTCHA

reCAPTCHA należy teraz do Google Cloud i ma poziomy Essentials, Premium i Enterprise. Essentials jest darmowy do 10 000 ocen miesięcznie na organizację. Powyżej Premium kosztuje $8 ryczałtem do 100 000, potem $1 za każde 1000.

Wersja 3 nigdy nie pokazuje zadań. Zwraca ocenę od 0.0 do 1.0, a Google proponuje próg 0.5 na start. O tym, co zrobić z niskimi ocenami, decydujesz sam. Token wygasa po dwóch minutach, więc ktoś, kto długo pisze wiadomość, może potrzebować nowego.

Dwie praktyczne uwagi. Google wymaga pokazania odznaki reCAPTCHA albo informacji, że strona jest chroniona przez reCAPTCHA, z linkami do warunków Google. Skrypt ładuje się z serwerów Google, co warto opisać w polityce prywatności.

## hCaptcha

hCaptcha działa bardzo podobnie do checkboxa reCAPTCHA v2, a jej własny poradnik migracji wymienia tylko kilka zmian. Plan Basic jest darmowy. Pro kosztuje $139 miesięcznie przy płatności miesięcznej albo $99 miesięcznie przy rocznej. Obejmuje 100 000 weryfikacji, potem $0.99 za 1000. Pro dodaje tryb pasywny z minimum zadań, a Enterprise ocenę ryzyka.

W darmowym planie odwiedzający częściej widzą zadania z obrazkami niż przy Turnstile. To kosztuje część prawdziwych wiadomości, zwłaszcza z telefonów. hCaptcha deklaruje zgodność z RODO, CCPA i innymi przepisami o prywatności. Szczegóły ważne dla Ciebie znajdziesz w jej polityce prywatności.

## Zawsze weryfikuj token na serwerze

Wszystkie trzy widżety wpisują token do ukrytego pola formularza. Sam token niczego nie dowodzi. Serwer musi wysłać go do dostawcy i dostać odpowiedź „success”. Formularz, który tylko pokazuje widżet, nie jest chroniony: bot może wysłać dane prosto na Twój serwer i pominąć stronę.

Przykład poniżej sprawdza token Turnstile w Cloudflare Worker. reCAPTCHA i hCaptcha działają tak samo, z własnymi adresami weryfikacji i sekretami.

```javascript
// Cloudflare Worker (albo dowolny serwer z fetch), który odbiera formularz.
export default {
  async fetch(request, env) {
    const form = await request.formData();
    const check = new FormData();
    check.append("secret", env.TURNSTILE_SECRET_KEY); // sekret trzymaj tylko na serwerze
    check.append("response", form.get("cf-turnstile-response") || "");
    check.append("remoteip", request.headers.get("CF-Connecting-IP") || "");

    const result = await fetch("https://challenges.cloudflare.com/turnstile/v0/siteverify", {
      method: "POST",
      body: check,
    }).then((response) => response.json());

    // Token działa raz i wygasa po 300 sekundach.
    if (!result.success) return new Response("Spróbuj ponownie.", { status: 403 });

    // Weryfikacja przeszła: zapisz formularz albo wyślij go dalej.
    return new Response("Dziękujemy, mamy Twoją wiadomość.");
  },
};
```

**Kod widżetu każdej usługi**

```html
<!-- Cloudflare Turnstile: dodaje pole cf-turnstile-response -->
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
<div class="cf-turnstile" data-sitekey="YOUR_TURNSTILE_SITE_KEY"></div>

<!-- reCAPTCHA v2 z checkboxem: dodaje pole g-recaptcha-response -->
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="YOUR_RECAPTCHA_SITE_KEY"></div>

<!-- hCaptcha: dodaje pole h-captcha-response -->
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
<div class="h-captcha" data-sitekey="YOUR_HCAPTCHA_SITE_KEY"></div>
```

## Częste błędy

- Klucz tajny w kodzie strony. Publiczny jest tylko site key.

- Weryfikacja tokena w przeglądarce zamiast na serwerze.

- Dwukrotne sprawdzanie tego samego tokena, np. przy ponownej próbie. Turnstile odrzuci drugie.

- Pominięta druga domena, np. testowa, na liście domen widżetu.

- Trudna zagadka przy każdej wizycie. Jeśli spamu jest mało, pole-pułapka może wystarczyć.

Gdy po dodaniu CAPTCHA formularz nagle przestaje dostarczać wiadomości, częstą przyczyną jest weryfikacja tokena. Pomogą kroki z artykułu [dlaczego formularz kontaktowy nie wysyła maili](/pl/blog/contact-form-not-sending-email/).

## Co z tego działa z Formgong

Formgong sam weryfikuje Cloudflare Turnstile na serwerze. Włącz **Wymagaj Cloudflare Turnstile** w ustawieniach formularza i wpisz tam własny site key i secret z Turnstile. Potem dodaj widżet do formularza, a Formgong sprawdzi token przy każdym wysłaniu. Działa to też w planie Free.

Formgong nie weryfikuje tokenów reCAPTCHA ani hCaptcha. Jeśli Twój formularz używa jednej z nich, Formgong zapisze token jako zwykłe pole i oprze się na własnych testach: polu-pułapce, czasie wypełnienia i treści. O ochronie danych przeczytasz w artykule [jak wybrać backend formularzy zgodny z RODO](/pl/blog/gdpr-form-backend/). Ten artykuł nie jest poradą prawną.

## Pytania i odpowiedzi

### Czy Cloudflare Turnstile jest naprawdę darmowy?

Tak. Na dzień 05.10.2026 darmowy plan obejmuje nielimitowane weryfikacje i do 20 widżetów. Inne usługi Cloudflare nie są potrzebne.

### Czy reCAPTCHA jest nadal darmowa?

Do 10 000 ocen miesięcznie na organizację na poziomie Essentials. Powyżej Google nalicza opłaty w ramach poziomu Premium.

### Czy łatwo przejść z reCAPTCHA na hCaptcha albo Turnstile?

Zwykle tak. Podmień skrypt i widżet, a na serwerze nazwę pola, adres weryfikacji i sekret. hCaptcha ma krótki poradnik przejścia z reCAPTCHA.

### Czy formularz kontaktowy w ogóle potrzebuje CAPTCHA?

Na początku często nie. Pole-pułapka, minimalny czas wypełnienia i reguły na serwerze zatrzymują większość botów. Dodaj Turnstile, gdy boty zaczną się przebijać.

## Źródła i dokumentacja

- [Cloudflare Turnstile](https://developers.cloudflare.com/turnstile/)
- [Turnstile plans](https://developers.cloudflare.com/turnstile/plans/)
- [Turnstile widget modes](https://developers.cloudflare.com/turnstile/concepts/widget/)
- [Turnstile server-side validation](https://developers.cloudflare.com/turnstile/get-started/server-side-validation/)
- [Google Cloud: compare reCAPTCHA tiers](https://cloud.google.com/recaptcha/docs/compare-tiers)
- [reCAPTCHA v3](https://developers.google.com/recaptcha/docs/v3)
- [reCAPTCHA FAQ (badge)](https://developers.google.com/recaptcha/docs/faq)
- [hCaptcha pricing](https://www.hcaptcha.com/pricing)
- [hCaptcha: switch from reCAPTCHA](https://docs.hcaptcha.com/switch)
- [Formgong dla HTML](https://formgong.com/pl/docs/html/)

[Pobierz klucz formularza](https://formgong.com/pl/#top)
