Porównanie w skrócie
Ceny i limity według stron dostawców na dzień 05.10.2026. Ceny są w dolarach amerykańskich.
| Cloudflare Turnstile | Google reCAPTCHA | hCaptcha | |
|---|---|---|---|
| Za darmo | Bez limitu weryfikacji, do 20 widżetów | Do 10 000 ocen miesięcznie (Essentials) | Plan Basic jest darmowy |
| Płatnie | Tylko Enterprise | Premium: $8 ryczałtem za 10 001–100 000, potem $1 za 1000 | Pro: $99 mies. przy płatności rocznej lub $139 miesięcznie, 100 tys. weryfikacji w cenie |
| Co widzi odwiedzający | Tryb Managed, Non-Interactive lub Invisible | v2: checkbox lub niewidoczna; v3: bez zadań | Checkbox i zadania z obrazkami; tryb pasywny w płatnych planach |
| Ocena ryzyka | Nie, tylko wynik tak/nie | Tak, w v3 od 0.0 do 1.0 | W planie Enterprise |
| Dla kogo | Dla większości formularzy | Dla stron już na Google Cloud | Dla 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.
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.
// 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
<!-- 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.
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. 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
Oficjalne materiały pomocnicze: Cloudflare Turnstile, Turnstile plans, Turnstile widget modes, Turnstile server-side validation, Google Cloud: compare reCAPTCHA tiers, reCAPTCHA v3, reCAPTCHA FAQ (badge), hCaptcha pricing, hCaptcha: switch from reCAPTCHA. Formgong dla HTML, Przechowywanie danych.
Artykuł w formacie MarkdownPrzeczytaj także
- Formularz w Lovable: od przycisku do prawdziwego zgłoszenia
- Formularz HTML na statycznej stronie, bez własnego serwera
- Zgłoszenia ze strony w Telegramie: czat prywatny lub grupa
- Formularz pokazuje sukces, ale email nie dociera — co sprawdzić
- Leady ze strony w Telegramie: statusy i przypomnienia zamiast CRM
- Backend dla formularzy z Lovable, Bolt, v0 i Cursor
- Bot Telegram do formularza: pisać własnego?
- Backend formularzy a RODO: 7 kryteriów wyboru
- Formularz mailto czy backend formularzy?
- Formularz HTML do Google Sheets: 2 sposoby
- Limit formularzy Webflow: co zrobić po 50
- Contact Form 7 i Elementor do Telegrama
- Formularz Squarespace nie wysyła maili?
- Formularz kontaktowy Shopify: gdzie trafia?
- Formularz Google do Telegrama: za darmo
- Formularz Wix nie wysyła maili? Rozwiązania
- Alternatywy Formspree z danymi w UE / RODO
- Formularz kontaktowy, który nic nie wysyła: test 793 stron