---
title: Tutorials
description: Tutorials for integrating Turnstile with WAF, login pages, and testing.
image: https://developers.cloudflare.com/core-services-preview.png
---

> Documentation Index  
> Fetch the complete documentation index at: https://developers.cloudflare.com/turnstile/llms.txt  
> Use this file to discover all available pages before exploring further.

[Skip to content](#%5Ftop) 

# Tutorials

View tutorials to help you get started with Turnstile.

| Name                                                                                                                                              | Last Updated     | Difficulty   |
| ------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------ |
| [Fraud detection with Ephemeral IDs](https://developers.cloudflare.com/turnstile/tutorials/fraud-detection-with-ephemeral-ids/)                   | 4 months ago     | Advanced     |
| [Protect your forms](https://developers.cloudflare.com/turnstile/tutorials/login-pages/)                                                          | 11 months ago    | Beginner     |
| [Conditionally enforce Turnstile](https://developers.cloudflare.com/turnstile/tutorials/conditionally-enforcing-turnstile/)                       | about 1 year ago | Intermediate |
| [Exclude Turnstile from E2E tests](https://developers.cloudflare.com/turnstile/tutorials/excluding-turnstile-from-e2e-tests/)                     | over 1 year ago  | Intermediate |
| [Integrate Turnstile, WAF, & Bot Management](https://developers.cloudflare.com/turnstile/tutorials/integrating-turnstile-waf-and-bot-management/) | over 1 year ago  | Beginner     |

## Demo

Learn how you can use Turnstile within your existing application.

Explore the following demo applications for Turnstile.

* [Turnstile Demo: ↗](https://github.com/cloudflare/turnstile-demo-workers) A simple demo with a Turnstile-protected form, using Cloudflare Workers. With the code in this repository, we demonstrate implicit rendering and explicit rendering.

```json
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"/directory/","name":"Directory"}},{"@type":"ListItem","position":2,"item":{"@id":"/turnstile/","name":"Turnstile"}},{"@type":"ListItem","position":3,"item":{"@id":"/turnstile/tutorials/","name":"Tutorials"}}]}
```
