---
title: Tutorials
description: Step-by-step R2 tutorials for building applications with object storage.
image: https://developers.cloudflare.com/dev-products-preview.png
---

> Documentation Index  
> Fetch the complete documentation index at: https://developers.cloudflare.com/r2/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 R2.

| Name                                                                                                                                                | Last Updated       | Difficulty   |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------ |
| [Deploy a Browser Run Worker with Durable Objects](https://developers.cloudflare.com/browser-run/how-to/browser-run-with-do/)                       | over 2 years ago   | Beginner     |
| [Generate OG images for Astro sites](https://developers.cloudflare.com/browser-run/how-to/og-images-astro/)                                         |                    | Intermediate |
| [Data persistence with R2](https://developers.cloudflare.com/sandbox/tutorials/persistent-storage/)                                                 | 7 months ago       | Intermediate |
| [Build an end to end data pipeline](https://developers.cloudflare.com/r2-sql/tutorials/end-to-end-pipeline/)                                        | 9 months ago       | Intermediate |
| [Point to R2 bucket with a custom domain](https://developers.cloudflare.com/rules/origin-rules/tutorials/point-to-r2-bucket-with-custom-domain/)    | about 1 year ago   | Beginner     |
| [Use event notification to summarize PDF files on upload](https://developers.cloudflare.com/r2/tutorials/summarize-pdf/)                            | over 1 year ago    | Intermediate |
| [Use SSE-C](https://developers.cloudflare.com/r2/examples/ssec/)                                                                                    | over 1 year ago    | Intermediate |
| [Use R2 as static asset storage with Cloudflare Pages](https://developers.cloudflare.com/pages/tutorials/use-r2-as-static-asset-storage-for-pages/) | almost 2 years ago | Intermediate |
| [Create a fine-tuned OpenAI model with R2](https://developers.cloudflare.com/workers/tutorials/create-finetuned-chatgpt-ai-models-with-r2/)         | about 2 years ago  | Intermediate |
| [Protect an R2 Bucket with Cloudflare Access](https://developers.cloudflare.com/r2/tutorials/cloudflare-access/)                                    | about 2 years ago  | Intermediate |
| [Log and store upload events in R2 with event notifications](https://developers.cloudflare.com/r2/tutorials/upload-logs-event-notifications/)       | about 2 years ago  | Beginner     |
| [Use Cloudflare R2 as a Zero Trust log destination](https://developers.cloudflare.com/cloudflare-one/tutorials/r2-logs/)                            | over 2 years ago   | Beginner     |
| [Securely access and upload assets with Cloudflare R2](https://developers.cloudflare.com/workers/tutorials/upload-assets-with-r2/)                  | about 3 years ago  | Beginner     |
| [Mastodon](https://developers.cloudflare.com/r2/tutorials/mastodon/)                                                                                | over 3 years ago   | Beginner     |
| [Postman](https://developers.cloudflare.com/r2/tutorials/postman/)                                                                                  | almost 4 years ago | Beginner     |

```json
{"@context":"https://schema.org","@type":"WebPage","@id":"https://developers.cloudflare.com/r2/tutorials/#page","headline":"Tutorials · Cloudflare R2 docs","description":"Step-by-step R2 tutorials for building applications with object storage.","url":"https://developers.cloudflare.com/r2/tutorials/","inLanguage":"en","image":"https://developers.cloudflare.com/dev-products-preview.png","dateModified":"2026-05-19","publisher":{"@type":"Organization","name":"Cloudflare","url":"https://www.cloudflare.com/"},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"/directory/","name":"Directory"}},{"@type":"ListItem","position":2,"item":{"@id":"/r2/","name":"R2"}},{"@type":"ListItem","position":3,"item":{"@id":"/r2/tutorials/","name":"Tutorials"}}]}
```
