<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script>
			(() => {
				const KEY = "ui-mode";
				const media = window.matchMedia("(prefers-color-scheme: dark)");
				const isPref = (v) => v === "light" || v === "dark" || v === "auto";

				const readPref = () => {
					try {
						const v = localStorage.getItem(KEY);
						return isPref(v) ? v : "auto";
					} catch {
						return "auto";
					}
				};

				const resolveMode = (pref) =>
					pref === "light" || pref === "dark"
						? pref
						: media.matches
							? "dark"
							: "light";

				const applyTheme = () => {
					const root = document.documentElement;
					const pref = readPref();
					const mode = resolveMode(pref);
					// data-mode drives Nimbus dark-mode CSS; data-theme is kept for
					// any ported component CSS that still keys off Starlight's attribute.
					if (mode === "dark") root.setAttribute("data-mode", "dark");
					else root.removeAttribute("data-mode");
					root.setAttribute("data-theme", mode);
					root.style.colorScheme = mode;
					// Drive the toggle icon from the root attribute (set here, pre-paint)
					// so it never flashes the SSR default before the toggle script loads.
					root.setAttribute("data-nb-pref", pref); // selected preference
					root.setAttribute("data-nb-state", mode); // resolved (light/dark)
				};

				applyTheme();
				document.addEventListener("astro:after-swap", applyTheme);
				// Live OS changes only move the page when the user is following the
				// system (auto). An explicit light/dark choice is left untouched.
				media.addEventListener("change", () => {
					if (readPref() === "auto") applyTheme();
				});

				// Cross-tab sync.
				window.addEventListener("storage", (e) => {
					if (e.key === KEY) applyTheme();
				});

				window.__nbApplyTheme = applyTheme;
			})();
		</script><title>Versions &amp; deployments · Cloudflare Workers docs</title><meta name="generator" content="Astro v7.2.0"><meta name="generator" content="Nimbus v0.2.2"><meta name="description" content="Understand how Workers tracks changes with versions and releases them with deployments."><link rel="shortcut icon" type="image/png" href="/favicon.png"><link rel="stylesheet" href="/_nimbus/shiki.css"><link rel="canonical" href="https://developers.cloudflare.com/workers/versions-and-deployments/"><link rel="sitemap" href="/sitemap-index.xml"><link rel="alternate" type="text/markdown" href="https://developers.cloudflare.com/workers/versions-and-deployments/index.md"><meta property="og:title" content="Versions &amp; deployments"><meta property="og:title" content="Versions &amp; deployments · Cloudflare Workers docs"><meta property="og:type" content="article"><meta property="og:site_name" content="Cloudflare Docs"><meta property="og:locale" content="en"><meta property="og:description" content="Understand how Workers tracks changes with versions and releases them with deployments."><meta property="og:url" content="https://developers.cloudflare.com/workers/versions-and-deployments/"><meta property="image" content="https://developers.cloudflare.com/og-docs.png"><meta property="og:image" content="https://developers.cloudflare.com/og-docs.png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@cloudflare"><meta property="twitter:image" content="https://developers.cloudflare.com/og-docs.png"><meta name="pcx_product" content="Workers"><meta name="algolia_product_filter" content="Workers"><meta name="pcx_content_group" content="Developer platform"><meta name="pcx_content_type" content="Concept"><meta name="algolia_content_type" content="Concept"><meta name="pcx_additional_products" content="Workers"><meta name="pcx_last_modified" content="45"><script type="application/ld+json">{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/workers/versions-and-deployments/#page","headline":"Versions & deployments · Cloudflare Workers docs","description":"Understand how Workers tracks changes with versions and releases them with deployments.","url":"https://developers.cloudflare.com/workers/versions-and-deployments/","inLanguage":"en","image":"https://developers.cloudflare.com/og-docs.png","dateModified":"2026-07-03","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/"}}</script><script type="module">var e=null;async function t(e){let{query:t,limit:n=5}=e,r=await fetch(`https://ai-search.developers.cloudflare.com/api/ai-search/search`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"cf-ai-search-source":`snippet-search`},body:JSON.stringify({messages:[{role:`user`,content:t}],stream:!1,ai_search_options:{retrieval:{metadata_only:!0,max_num_results:Math.min(Math.max(1,n),20)}}})});if(!r.ok)throw Error(`Search failed: ${r.status} ${r.statusText}`);let i=await r.json();if(!i.success||!i.result)throw Error(i.error??`Search returned an invalid response`);return i.result.chunks.map(({item:e})=>({title:e.metadata?.title??`Untitled`,url:e.key,snippet:e.metadata?.description??``}))}async function n(t){if(e)return e;let n=await fetch(`https://developers.cloudflare.com/llms.txt`);if(!n.ok)throw Error(`Failed to fetch directory: ${n.status} ${n.statusText}`);let r=await n.text(),i=[],a=``;for(let e of r.split(`
`)){let t=/^##\s+(.+)$/.exec(e);if(t){a=t[1].trim();continue}let n=/^-\s+\[([^\]]+)\]\(([^)]+)\)(?::\s+(.*))?$/.exec(e);if(n){let e=n[1].trim(),t=n[2].trim().replace(/\/llms\.txt$/,`/`),r=(n[3]??``).trim();i.push({name:e,url:t,description:r,group:a})}}return e=i,i}function r(){if(!(`modelContext`in navigator)||!navigator.modelContext)return;let e=new AbortController,{signal:r}=e;navigator.modelContext.registerTool({name:`search`,title:`Search Cloudflare Docs`,description:`Full-text search across Cloudflare developer documentation. Returns matching pages with titles, URLs, and content snippets. Use this to find documentation on any Cloudflare product or feature.`,inputSchema:{type:`object`,properties:{query:{type:`string`,description:`The search query`},limit:{type:`integer`,description:`Maximum number of results to return (1–20, default 5)`,default:5,minimum:1,maximum:20}},required:[`query`]},execute:t,annotations:{readOnlyHint:!0}},{signal:r}),navigator.modelContext.registerTool({name:`list-directories`,title:`List Cloudflare Docs Products`,description:`Returns a list of all Cloudflare products available in the developer documentation, including each product's name, docs URL, short description, and category group. Use this to discover what products exist before searching or navigating.`,inputSchema:{type:`object`,properties:{}},execute:n,annotations:{readOnlyHint:!0}},{signal:r}),document.addEventListener(`astro:before-swap`,()=>{e.abort()},{once:!0})}document.addEventListener(`astro:page-load`,r),document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,r):r();</script><link rel="stylesheet" href="/_astro/Header.HCr3ZAXN.css"><style>.medium-zoom-overlay{opacity:0;will-change:opacity;transition:opacity .3s;position:fixed;inset:0}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{cursor:pointer;cursor:zoom-out;will-change:transform;position:relative}
.banner-card[data-astro-cid-feslum5t]{border:1px solid color-mix(in oklch, var(--_c) 25%, transparent);background:var(--_t)}.banner-card-body[data-astro-cid-feslum5t] p{margin:0}.banner-card-body[data-astro-cid-feslum5t] p+p{margin-top:.375rem}.banner-card-body[data-astro-cid-feslum5t] a{text-underline-offset:2px;text-decoration:underline}.banner-card-body[data-astro-cid-feslum5t] code:not(:where(pre *)){font-family:var(--nb-font-mono);background:color-mix(in oklch, var(--_c) 10%, transparent);border:1px solid color-mix(in oklch, var(--_c) 15%, transparent);border-radius:.25rem;padding:.0625rem .3125rem;font-size:.8125em}.nb-scroll-track[data-astro-cid-yfiougcv]{stroke:var(--nb-border)}.nb-scroll-progress[data-astro-cid-yfiougcv]{stroke:var(--nb-primary);stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px}
.aside-card[data-astro-cid-znle5jil]{border:1px solid color-mix(in oklch, var(--_c) 25%, transparent);background:var(--_t)}.aside-card[data-astro-cid-znle5jil]>:first-child,.aside-card[data-astro-cid-znle5jil]>:last-child>:first-child{color:var(--_c)}.aside-card-body[data-astro-cid-znle5jil]{color:var(--nb-foreground)}.aside-card-body[data-astro-cid-znle5jil] p{margin:0}.aside-card-body[data-astro-cid-znle5jil] p+p{margin-top:.375rem}.aside-card-body[data-astro-cid-znle5jil] a{text-underline-offset:2px;text-decoration:underline}.aside-card-body[data-astro-cid-znle5jil] code:not(:where(pre *)){font-family:var(--nb-font-mono);background:color-mix(in oklch, var(--_c) 10%, transparent);border:1px solid color-mix(in oklch, var(--_c) 15%, transparent);border-radius:.25rem;padding:.0625rem .3125rem;font-size:.8125em}.aside-card-body[data-astro-cid-znle5jil] strong{color:inherit;font-weight:600}.aside-card-body[data-astro-cid-znle5jil] .astro-code{margin:.75rem 0}
[data-nb-collapsible-trigger][data-nb-state=open] [data-nb-caret]{rotate:90deg}[data-nb-sidebar-hidden]{display:none}
.file-tree[data-astro-cid-mo2qcc7j]{font-family:var(--nb-font-mono);background:var(--nb-card);box-shadow:0 0 0 1px var(--nb-border);border-radius:.5rem;margin:1rem 0;padding:.75rem 1rem;font-size:.875rem;line-height:1}.file-tree[data-astro-cid-mo2qcc7j] p{margin:0;display:inline}.file-tree[data-astro-cid-mo2qcc7j] ul{margin:0;padding:0 0 0 1.25rem;list-style:none}.file-tree[data-astro-cid-mo2qcc7j]>ul{padding-left:0}.file-tree[data-astro-cid-mo2qcc7j] ul ul{position:relative}.file-tree[data-astro-cid-mo2qcc7j] ul ul:before{content:"";background:var(--nb-border);pointer-events:none;width:1px;position:absolute;top:0;bottom:.25rem;left:.4375rem}.file-tree[data-astro-cid-mo2qcc7j] li{color:var(--nb-foreground);margin:0;padding-top:.0625rem;padding-bottom:.0625rem;position:relative}.file-tree[data-astro-cid-mo2qcc7j] details{margin:0}.file-tree[data-astro-cid-mo2qcc7j] summary{cursor:pointer;user-select:none;border-radius:.375rem;align-items:center;gap:.5rem;margin:0 -.375rem;padding:.3125rem .375rem;list-style:none;transition:background .12s;display:flex}.file-tree[data-astro-cid-mo2qcc7j] summary::-webkit-details-marker{display:none}.file-tree[data-astro-cid-mo2qcc7j] summary::marker{content:"";display:none}.file-tree[data-astro-cid-mo2qcc7j] summary:hover{background:var(--nb-accent)}.file-tree[data-astro-cid-mo2qcc7j] [data-file]{cursor:default;border-radius:.375rem;align-items:center;gap:.5rem;margin:0 -.375rem;padding:.3125rem .375rem;display:flex}.file-tree[data-astro-cid-mo2qcc7j] .ft-chev{width:.875rem;height:.875rem;color:var(--nb-muted-foreground);flex-shrink:0;transition:transform .15s}.file-tree[data-astro-cid-mo2qcc7j] details[open]>summary>.ft-chev{transform:rotate(90deg)}.file-tree[data-astro-cid-mo2qcc7j] .ft-icon{width:.875rem;height:.875rem;color:var(--nb-muted-foreground);flex-shrink:0}.file-tree[data-astro-cid-mo2qcc7j] .ft-sp{flex-shrink:0;width:.875rem}.file-tree[data-astro-cid-mo2qcc7j] .ft-label{white-space:nowrap;min-width:0}.file-tree[data-astro-cid-mo2qcc7j] strong{color:var(--nb-foreground);font-weight:600}.file-tree[data-astro-cid-mo2qcc7j] [data-placeholder]{color:var(--nb-muted-foreground);letter-spacing:.1em;align-items:center;gap:.5rem;margin:0 -.375rem;padding:.3125rem .375rem;display:flex}
.steps[data-astro-cid-sfejetki]{--_start:var(--steps-start,1);counter-reset:step calc(var(--_start) - 1);margin:1.5rem 0}.steps[data-astro-cid-sfejetki] ol{counter-reset:step calc(var(--_start) - 1);margin:0;padding:0;list-style:none}.steps[data-astro-cid-sfejetki] ol>li,.steps[data-astro-cid-sfejetki] [data-step]{counter-increment:step;min-height:1.75rem;margin:0;padding-bottom:1.5rem;padding-left:2.5rem;position:relative}.steps[data-astro-cid-sfejetki] ol>li:last-child,.steps[data-astro-cid-sfejetki] [data-step]:last-child{padding-bottom:0}.steps[data-astro-cid-sfejetki] ol>li>*+*,.steps[data-astro-cid-sfejetki] [data-step]>*+*{margin-top:.5rem}.steps[data-astro-cid-sfejetki] ol>li:before,.steps[data-astro-cid-sfejetki] [data-step]:before{content:counter(step);background:var(--nb-accent);width:1.75rem;height:1.75rem;color:var(--nb-foreground);border:1px solid var(--nb-border-strong);z-index:1;border-radius:.5rem;place-items:center;font-size:.6875rem;font-weight:600;display:grid;position:absolute;top:0;left:0}.steps[data-astro-cid-sfejetki] ol>li:not(:last-child):after,.steps[data-astro-cid-sfejetki] [data-step]:not(:last-child):after{content:"";background:var(--nb-border);width:1.5px;position:absolute;top:1.75rem;bottom:0;left:calc(.875rem - .75px)}.steps[data-astro-cid-sfejetki] ol>li>p:first-child>strong:only-child{color:var(--nb-foreground)}.steps[data-astro-cid-sfejetki] ol>li>p{margin:0}
summary[data-astro-cid-nziubcoq] p{margin:0;display:inline}
.prose>.feature:not(.feature+.feature){border-top:none}.feature-description[data-astro-cid-xzyjxe2g] p{margin:0}.feature-description[data-astro-cid-xzyjxe2g] p+p{margin-top:.375rem}.feature-description[data-astro-cid-xzyjxe2g] a{color:var(--color-foreground);text-underline-offset:2px;text-decoration:underline #0000;transition:text-decoration-color .15s}.feature-description[data-astro-cid-xzyjxe2g] a:hover{text-decoration-color:currentColor}
.glossary-tooltip[data-astro-cid-hklyqugd]{border-bottom:2px dashed var(--nb-border-strong);cursor:help}
</style><script type="module" src="/_astro/page.CMFgH77u.js"></script><style>.tunnel-hostname-diagram[data-astro-cid-5m2ligw2]{--map-bg:light-dark(#fafafa,#0f0f10);--map-card:light-dark(#fff,#171719);--map-elevated:light-dark(#fafafa,#111113);--map-line:light-dark(#0000001f,#ffffff24);--map-text:light-dark(#171717,#f5f5f5);--map-strong:light-dark(#525252,#a3a3a3);--map-caption:light-dark(#737373,#a3a3a3);--map-brand:#f6821f;--map-tunnel:light-dark(#4f46e5,#818cf8);--map-gateway:light-dark(#0ea5e9,#38bdf8);--map-host:light-dark(#10b981,#34d399);border:1px solid var(--map-line);background:radial-gradient(circle, var(--map-line) 1px, transparent 1px), var(--map-bg);font-feature-settings:"cv02", "cv03", "cv04", "calt";-webkit-font-smoothing:antialiased;letter-spacing:-.01em;background-size:14px 14px;border-radius:12px;flex-direction:column;gap:12px;margin:1.25rem 0;padding:18px;font-family:Inter Variable,ui-sans-serif,system-ui,sans-serif;display:flex}.tunnel-hostname-diagram[data-astro-cid-5m2ligw2] a[data-astro-cid-5m2ligw2]{color:inherit;text-decoration:none}.flow[data-astro-cid-5m2ligw2]{flex-direction:column;align-items:center;gap:6px;margin:0;padding:0;list-style:none;display:flex}.flow-step[data-astro-cid-5m2ligw2]{width:100%;max-width:360px;display:block}.node-card[data-astro-cid-5m2ligw2]{border:1px solid var(--map-line);background:var(--map-card);color:var(--map-text);border-radius:10px;flex-direction:column;gap:8px;padding:12px 14px;display:flex;box-shadow:0 5px 14px #00000012}.node-header[data-astro-cid-5m2ligw2]{justify-content:center;align-items:center;gap:10px;display:flex}.node-title[data-astro-cid-5m2ligw2]{min-width:0;color:var(--map-text);letter-spacing:-.01em;font-size:14px;font-weight:600}a[data-astro-cid-5m2ligw2].node-title{transition:color .15s}a[data-astro-cid-5m2ligw2].node-title:hover{color:var(--map-brand)}.node-icon[data-astro-cid-5m2ligw2]{border-radius:7px;flex:none;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;font-weight:600;display:inline-flex}.node-icon[data-astro-cid-5m2ligw2] svg{fill:currentColor;width:18px;height:18px}.client-icon[data-astro-cid-5m2ligw2]{background:color-mix(in srgb, var(--map-brand) 14%, transparent);color:var(--map-brand)}.gateway-icon[data-astro-cid-5m2ligw2]{background:color-mix(in srgb, var(--map-gateway) 14%, transparent);color:var(--map-gateway)}.tunnel-icon[data-astro-cid-5m2ligw2]{background:color-mix(in srgb, var(--map-tunnel) 14%, transparent);color:var(--map-tunnel)}.host-icon[data-astro-cid-5m2ligw2]{background:color-mix(in srgb, var(--map-host) 14%, transparent);color:var(--map-host)}.node-caption[data-astro-cid-5m2ligw2]{color:var(--map-caption);text-align:center;margin:0;font-size:12px;line-height:1.5}.node-caption[data-astro-cid-5m2ligw2] code[data-astro-cid-5m2ligw2]{border:1px solid var(--map-line);background:var(--map-elevated);color:var(--map-text);white-space:nowrap;border-radius:5px;padding:1px 6px;font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;display:inline}.flow-connector[data-astro-cid-5m2ligw2]{color:var(--map-strong);flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:2px 0;display:flex}.connector-label[data-astro-cid-5m2ligw2]{color:var(--map-caption);font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;font-weight:500;line-height:1}.connector-arrow[data-astro-cid-5m2ligw2]{color:var(--map-strong);font-size:18px;line-height:1}.pill-row[data-astro-cid-5m2ligw2]{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.token-pill[data-astro-cid-5m2ligw2]{border:1px solid color-mix(in srgb, var(--map-gateway) 35%, var(--map-line));background:color-mix(in srgb, var(--map-gateway) 6%, var(--map-card));border-radius:6px;align-items:center;padding:4px 10px;display:inline-flex}.token-pill[data-astro-cid-5m2ligw2] code[data-astro-cid-5m2ligw2]{color:var(--map-gateway);white-space:nowrap;background:0 0;border:0;padding:0;font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px}
</style><style>animated-workflow-diagram[data-astro-cid-efko65q2]{width:100%;position:relative}.diagram-container[data-astro-cid-efko65q2]{width:100%;max-width:400px;margin:0 auto;padding:0;position:relative}animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-line{z-index:0;background-color:#d4d4d4;width:2px;position:absolute;left:50%;transform:translate(-50%)}:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-line{background-color:#404040}animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node{justify-content:center;margin-bottom:.75rem;display:flex;position:relative}animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node:last-child{margin-bottom:0}animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node-card{background:#fff;border:1px solid #e5e5e5;border-radius:.5rem;align-items:center;gap:.5rem;width:280px;padding:.5rem .75rem;display:flex}:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node-card{background:#171717;border-color:#404040}animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node.running .workflow-node-card,animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node.completed .workflow-node-card{border-color:#a3a3a3}:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node.running .workflow-node-card,:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node.completed .workflow-node-card{border-color:#737373}animated-workflow-diagram[data-astro-cid-efko65q2] .step-badge{color:#737373;background-color:#f5f5f5;border-radius:.25rem;align-items:center;gap:.25rem;padding:.125rem .375rem;font-size:.6875rem;font-weight:500;display:inline-flex}:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .step-badge{color:#a3a3a3;background-color:#262626}animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node.running .step-badge,animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node.completed .step-badge{color:#404040;background-color:#e5e5e5}:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node.running .step-badge,:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .workflow-node.completed .step-badge{color:#d4d4d4;background-color:#404040}animated-workflow-diagram[data-astro-cid-efko65q2] .step-badge svg{width:.75rem;height:.75rem}animated-workflow-diagram[data-astro-cid-efko65q2] .step-badge svg.animate-spin{animation:1s linear infinite spin}animated-workflow-diagram[data-astro-cid-efko65q2] .step-info{flex-direction:column;flex:1;gap:.125rem;min-width:0;margin-top:0;display:flex}animated-workflow-diagram[data-astro-cid-efko65q2] .step-name{color:#171717;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem;font-weight:500}:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .step-name{color:#f5f5f5}animated-workflow-diagram[data-astro-cid-efko65q2] .step-description{color:#737373;font-size:.625rem}:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .step-description{color:#a3a3a3}animated-workflow-diagram[data-astro-cid-efko65q2] .start-end-node{justify-content:center;margin-bottom:.75rem;display:flex;position:relative}animated-workflow-diagram[data-astro-cid-efko65q2] .start-end-node:last-child{margin-bottom:0}animated-workflow-diagram[data-astro-cid-efko65q2] .start-end-btn{color:#fff;text-transform:uppercase;letter-spacing:.05em;cursor:default;background-color:#171717;border:none;border-radius:9999px;padding:.375rem 1rem;font-size:.6875rem;font-weight:600}:root[data-mode=dark] animated-workflow-diagram[data-astro-cid-efko65q2] .start-end-btn{background-color:#404040}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){animated-workflow-diagram[data-astro-cid-efko65q2] .step-badge svg{animation:none!important}}
</style><link rel="stylesheet" href="/_astro/2026-06-05-gateway-egress.B1e7uZqc.css"><link rel="stylesheet" href="/_astro/AiSearchNamespacesDiagram.CXeRBStW.css"><link rel="stylesheet" href="/_astro/AutoconfigDiagram.DrobL_R0.css"><link rel="stylesheet" href="/_astro/MeshHostnameRoutingDiagram.Bw0PGEGW.css"><link rel="stylesheet" href="/_astro/agents.Cf11kM64.css"><link rel="stylesheet" href="/_astro/ai-search.B2XDpJTl.css"><link rel="stylesheet" href="/_astro/how-ai-search-works.ayxX7OSG.css"><link rel="stylesheet" href="/_astro/how-workers-works.Dwn_Sx3-.css"><link rel="stylesheet" href="/_astro/local-uploads.BMZvIo6T.css"><link rel="stylesheet" href="/_astro/talk-to-your-knowledge-base.CKcO7pti.css"><link rel="stylesheet" href="/_astro/workers-vpc.FN4NJ9Ms.css"></head><body class="bg-background text-foreground min-h-screen"><a href="#main-content" class="focus:bg-primary focus:text-primary-foreground focus-visible:outline-ring sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-100 focus:rounded-md focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:no-underline focus-visible:outline-2 focus-visible:outline-offset-2">Skip to content</a><blockquote class="llms-txt-directive" aria-hidden="true" data-astro-cid-f4apggxk>Documentation Index<br data-astro-cid-f4apggxk>Fetch the complete documentation index at: https://developers.cloudflare.com/workers/llms.txt<br data-astro-cid-f4apggxk>Use this file to discover all available pages before exploring further.</blockquote><div class="flex min-h-screen flex-col"><header class="border-border sticky top-0 z-30 border-b"><div aria-hidden="true" class="bg-card/80 pointer-events-none absolute inset-0 backdrop-blur-lg"></div><div class="relative mx-auto flex h-14 items-center justify-between px-4 lg:px-6"><div class="flex items-center gap-3"><a href="/" aria-label="Cloudflare Docs" class="group flex items-center gap-2 lg:w-[calc(var(--nb-sidebar-width)-3.25rem-1px)] lg:shrink-0"><img src="/_astro/logo.te5VL_aD.svg" alt="" width="51" height="23" class="h-[20px] w-auto"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 719 59" fill="none" role="img" aria-label="Cloudflare" class="text-foreground group-hover:text-primary hidden h-[11px] w-auto transition-colors sm:block"><path d="M77.1016 1.09961H92.7015V43.5996H119.802V57.1996H77.1016V1.09961Z" fill="currentColor"></path><path d="M135.898 29.3V29.2C135.898 13.1 148.898 0 166.198 0C183.498 0 196.298 12.9 196.298 29V29.2C196.298 45.3 183.298 58.4 165.998 58.4C148.798 58.3 135.898 45.4 135.898 29.3ZM180.498 29.3V29.2C180.498 21.1 174.698 14.1 166.098 14.1C157.598 14.1 151.898 21 151.898 29.1V29.3C151.898 37.4 157.698 44.4 166.198 44.4C174.798 44.3 180.498 37.4 180.498 29.3Z" fill="currentColor"></path><path d="M215.398 32.5996V1.09961H231.198V32.2996C231.198 40.3996 235.298 44.1996 241.498 44.1996C247.698 44.1996 251.798 40.4996 251.798 32.6996V1.09961H267.598V32.1996C267.598 50.2996 257.298 58.1996 241.298 58.1996C225.398 58.2996 215.398 50.1996 215.398 32.5996Z" fill="currentColor"></path><path d="M291.398 1.09961H313.098C333.098 1.09961 344.798 12.5996 344.798 28.7996V28.9996C344.798 45.1996 332.998 57.1996 312.798 57.1996H291.498L291.398 1.09961ZM313.298 43.3996C322.598 43.3996 328.798 38.2996 328.798 29.1996V28.9996C328.798 19.9996 322.598 14.7996 313.298 14.7996H306.998V43.2996L313.298 43.3996Z" fill="currentColor"></path><path d="M367.297 1.09961H412.197V14.7996H382.797V24.2996H409.397V37.1996H382.797V57.1996H367.297V1.09961Z" fill="currentColor"></path><path d="M433.797 1.09961H449.297V43.5996H476.497V57.1996H433.797V1.09961Z" fill="currentColor"></path><path d="M517.097 0.699219H532.097L555.997 57.1992H539.297L535.197 47.1992H513.597L509.597 57.1992H493.297L517.097 0.699219ZM530.797 35.0992L524.597 19.1992L518.297 35.0992H530.797Z" fill="currentColor"></path><path d="M576 1.09961H602.5C611.1 1.09961 617 3.29962 620.8 7.19962C624.1 10.3996 625.8 14.6996 625.8 20.2996V20.4996C625.8 29.0996 621.2 34.7996 614.3 37.6996L627.7 57.2996H609.7L598.4 40.2996H591.6V57.2996H576.1L576 1.09961ZM601.8 28.0996C607.1 28.0996 610.1 25.4996 610.1 21.4996V21.1996C610.1 16.7996 606.9 14.5996 601.7 14.5996H591.5V28.0996H601.8Z" fill="currentColor"></path><path d="M648.203 1.09961H693.303V14.3996H663.603V22.7996H690.503V35.0996H663.603V43.9996H693.703V57.1996H648.203V1.09961Z" fill="currentColor"></path><path d="M43.1 35.9C40.9 40.8 36.3 44.3 30.3 44.3C21.8 44.3 16 37.2 16 29.2V29C16 20.9 21.7 14 30.2 14C36.6 14 41.5 17.9 43.5 23.3H59.9C57.3 9.9 45.5 0 30.3 0C13 0 0 13.1 0 29.2V29.4C0 45.5 12.8 58.4 30.1 58.4C44.9 58.4 56.5 48.8 59.5 36L43.1 35.9Z" fill="currentColor"></path></svg><span class="text-foreground/70 border-border-strong hidden rounded-md border px-1.5 py-0.5 text-[11px] leading-none font-semibold tracking-[0.08em] uppercase sm:inline-block">Docs</span></a><nav aria-label="Sections" class="border-border ml-4 hidden h-6 items-center gap-1 border-l pl-4 md:flex"><a href="/directory/" class="rounded-md px-2 py-1 text-[0.8125rem] font-medium no-underline transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/60">Directory</a><a href="/api/" class="rounded-md px-2 py-1 text-[0.8125rem] font-medium no-underline transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/60">API</a><a href="/fundamentals/api/reference/sdks/" class="rounded-md px-2 py-1 text-[0.8125rem] font-medium no-underline transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/60">SDKs</a><a href="/changelog/" class="rounded-md px-2 py-1 text-[0.8125rem] font-medium no-underline transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/60">Changelog</a></nav></div><div class="flex items-center gap-2"><cfdocs-search id="search" data-astro-transition-persist="search"><button type="button" class="search-button" aria-label="Search" data-search-trigger><svg width="20" height="20" class="search-icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="search-placeholder">Search</span><span class="search-keys"><kbd class="search-key" data-search-shortcut-modifier>Ctrl</kbd><kbd class="search-key">K</kbd></span></button><search-modal-snippet api-url="https://ai-search.developers.cloudflare.com/api/ai-search" placeholder="Search documentation..." max-results="50" max-render-results="10" group-by="product" hide-thumbnails="true" show-url="false"></search-modal-snippet></cfdocs-search><script type="module" src="/_astro/Search.astro_astro_type_script_index_0_lang.X_hASs4s.js"></script><a href="https://github.com/cloudflare/cloudflare-docs" data-nb-button class="group shrink-0 items-center justify-center font-medium whitespace-nowrap no-underline transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-transparent shadow-none hover:bg-accent size-9 p-0 rounded-lg text-muted-foreground hidden sm:flex" aria-label="GitHub" target="_blank" rel="noopener"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-4 w-4" data-icon="ph:github-logo"><path fill="currentColor" d="M208.31 75.68A59.78 59.78 0 0 0 202.93 28a8 8 0 0 0-6.93-4a59.75 59.75 0 0 0-48 24h-24a59.75 59.75 0 0 0-48-24a8 8 0 0 0-6.93 4a59.78 59.78 0 0 0-5.38 47.68A58.14 58.14 0 0 0 56 104v8a56.06 56.06 0 0 0 48.44 55.47A39.8 39.8 0 0 0 96 192v8H72a24 24 0 0 1-24-24a40 40 0 0 0-40-40a8 8 0 0 0 0 16a24 24 0 0 1 24 24a40 40 0 0 0 40 40h24v16a8 8 0 0 0 16 0v-40a24 24 0 0 1 48 0v40a8 8 0 0 0 16 0v-40a39.8 39.8 0 0 0-8.44-24.53A56.06 56.06 0 0 0 216 112v-8a58.14 58.14 0 0 0-7.69-28.32M200 112a40 40 0 0 1-40 40h-48a40 40 0 0 1-40-40v-8a41.74 41.74 0 0 1 6.9-22.48a8 8 0 0 0 1.1-7.69a43.8 43.8 0 0 1 .79-33.58a43.88 43.88 0 0 1 32.32 20.06a8 8 0 0 0 6.71 3.69h32.35a8 8 0 0 0 6.74-3.69a43.87 43.87 0 0 1 32.32-20.06a43.8 43.8 0 0 1 .77 33.58a8.09 8.09 0 0 0 1 7.65a41.7 41.7 0 0 1 7 22.52Z"/></svg></a><button data-nb-theme-toggle class="group flex items-center justify-center w-8 h-8 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors" aria-label="Toggle theme (light, dark, system)"><svg width="1em" height="1em" viewBox="0 0 256 256" class="nb-theme-ico nb-theme-ico-light h-[1.125rem] w-[1.125rem]" data-icon="ph:sun"><path fill="currentColor" d="M120 40V16a8 8 0 0 1 16 0v24a8 8 0 0 1-16 0m72 88a64 64 0 1 1-64-64a64.07 64.07 0 0 1 64 64m-16 0a48 48 0 1 0-48 48a48.05 48.05 0 0 0 48-48M58.34 69.66a8 8 0 0 0 11.32-11.32l-16-16a8 8 0 0 0-11.32 11.32Zm0 116.68l-16 16a8 8 0 0 0 11.32 11.32l16-16a8 8 0 0 0-11.32-11.32M192 72a8 8 0 0 0 5.66-2.34l16-16a8 8 0 0 0-11.32-11.32l-16 16A8 8 0 0 0 192 72m5.66 114.34a8 8 0 0 0-11.32 11.32l16 16a8 8 0 0 0 11.32-11.32ZM48 128a8 8 0 0 0-8-8H16a8 8 0 0 0 0 16h24a8 8 0 0 0 8-8m80 80a8 8 0 0 0-8 8v24a8 8 0 0 0 16 0v-24a8 8 0 0 0-8-8m112-88h-24a8 8 0 0 0 0 16h24a8 8 0 0 0 0-16"/></svg><svg width="1em" height="1em" viewBox="0 0 256 256" class="nb-theme-ico nb-theme-ico-dark h-[1.125rem] w-[1.125rem]" data-icon="ph:moon"><path fill="currentColor" d="M233.54 142.23a8 8 0 0 0-8-2a88.08 88.08 0 0 1-109.8-109.8a8 8 0 0 0-10-10a104.84 104.84 0 0 0-52.91 37A104 104 0 0 0 136 224a103.1 103.1 0 0 0 62.52-20.88a104.84 104.84 0 0 0 37-52.91a8 8 0 0 0-1.98-7.98m-44.64 48.11A88 88 0 0 1 65.66 67.11a89 89 0 0 1 31.4-26A106 106 0 0 0 96 56a104.11 104.11 0 0 0 104 104a106 106 0 0 0 14.92-1.06a89 89 0 0 1-26.02 31.4"/></svg><svg width="1em" height="1em" viewBox="0 0 256 256" class="nb-theme-ico nb-theme-ico-auto h-[1.125rem] w-[1.125rem]" data-icon="ph:monitor"><path fill="currentColor" d="M208 40H48a24 24 0 0 0-24 24v112a24 24 0 0 0 24 24h160a24 24 0 0 0 24-24V64a24 24 0 0 0-24-24m8 136a8 8 0 0 1-8 8H48a8 8 0 0 1-8-8V64a8 8 0 0 1 8-8h160a8 8 0 0 1 8 8Zm-48 48a8 8 0 0 1-8 8H96a8 8 0 0 1 0-16h64a8 8 0 0 1 8 8"/></svg></button><script type="module" src="/_astro/ThemeToggle.astro_astro_type_script_index_0_lang.DrgserwX.js"></script><div class="bg-border mx-1.5 hidden h-4 w-px shrink-0 md:block" role="separator"></div><a href="https://dash.cloudflare.com/" data-nb-button class="group w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm hidden md:inline-flex" id="header-login-button">Log in</a><button type="button" data-nb-button class="group inline-flex shrink-0 items-center justify-center font-medium whitespace-nowrap no-underline transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-transparent shadow-none hover:bg-accent size-9 p-0 rounded-lg text-muted-foreground lg:hidden" aria-label="Open navigation" data-menu-btn="true"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-4 w-4" data-icon="ph:list"><path fill="currentColor" d="M224 128a8 8 0 0 1-8 8H40a8 8 0 0 1 0-16h176a8 8 0 0 1 8 8M40 72h176a8 8 0 0 0 0-16H40a8 8 0 0 0 0 16m176 112H40a8 8 0 0 0 0 16h176a8 8 0 0 0 0-16"/></svg></button></div></div></header><div class="mx-auto flex w-full flex-1 flex-col"><div class="flex flex-1"><aside id="desktop-sidebar" data-nb-desktop-sidebar class="border-border relative sticky top-14 hidden max-h-[calc(100vh-3.5rem)] w-(--nb-sidebar-width) shrink-0 flex-col overflow-y-auto border-r lg:flex"><div data-sidebar-home class="flex-1"><nav data-shared-sidebar-nav class="flex-1 pb-12 max-lg:pb-8"><div class="bg-background z-10 px-4 pb-3 lg:sticky lg:top-0"><div class="flex items-center gap-1 py-2.5"><a href="/" aria-label="All products" class="text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-ring flex size-10 shrink-0 items-center justify-center rounded-lg transition-[background-color,color,scale] duration-150 ease-out focus-visible:outline-2 focus-visible:outline-offset-1 active:scale-[0.96]"><svg width="1em" height="1em" viewBox="0 0 256 256" aria-hidden="true" class="h-[1.125rem] w-[1.125rem]" data-icon="ph:squares-four"><path fill="currentColor" d="M104 40H56a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 64H56V56h48zm96-64h-48a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 64h-48V56h48zm-96 32H56a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16m0 64H56v-48h48zm96-64h-48a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16m0 64h-48v-48h48z"/></svg></a><span class="bg-border mx-0.5 h-5 w-px shrink-0" aria-hidden="true"></span><a href="/workers/" class="hover:bg-accent focus-visible:outline-ring flex min-h-10 min-w-0 flex-1 items-center rounded-lg px-2.5 no-underline transition-[background-color,scale] duration-150 focus-visible:outline-2 focus-visible:outline-offset-1 active:scale-[0.96]"><span class="text-foreground truncate text-sm font-semibold">Workers</span></a></div><div class="relative mb-0"><input data-nb-sidebar-filter-input type="search" placeholder="Filter sidebar" class="peer border-border bg-card text-foreground placeholder:text-muted-foreground focus-visible:border-brand focus-visible:outline-ring w-full rounded-md border py-1.5 pr-9 pl-3 text-sm transition-colors focus-visible:outline-2 [&amp;:not(:placeholder-shown)]:pr-2" aria-label="Filter navigation" autocomplete="off"><kbd aria-hidden="true" class="border-border bg-muted text-muted-foreground pointer-events-none absolute top-1/2 right-2 flex h-5 min-w-5 -translate-y-1/2 items-center justify-center rounded border px-1 font-mono text-[0.6875rem] leading-none font-semibold transition-opacity duration-150 peer-focus:opacity-0 peer-[:not(:placeholder-shown)]:opacity-0 motion-reduce:transition-none">/</kbd></div></div><div class="px-4 pt-2"><div data-nb-sidebar data-nb-sidebar-hash="11oqw6a" data-nb-sidebar-persist class><ul class="top-level flex list-none flex-col gap-0.5 p-0"><li><a href="/workers/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Getting started</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/get-started/guide/" data-nb-sidebar-link><span class="break-words">CLI</span></a></li><li><a href="/workers/get-started/dashboard/" data-nb-sidebar-link><span class="break-words">Dashboard</span></a></li><li><a href="/workers/get-started/prompting/" data-nb-sidebar-link><span class="break-words">Prompting</span></a></li><li><a href="/workers/get-started/quickstarts/" data-nb-sidebar-link><span class="break-words">Templates</span></a></li></ul></div></div></div><script type="module" src="/_astro/Collapsible.astro_astro_type_script_index_0_lang.D_n0rqY1.js"></script></li><li><a href="/workers/examples/" data-nb-sidebar-link><span class="break-words">Examples</span></a></li><li><a href="/workers/tutorials/" data-nb-sidebar-link><span class="break-words">Tutorials</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Best practices</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/best-practices/workers-best-practices/" data-nb-sidebar-link><span class="break-words">Workers Best Practices</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Demos and architectures</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/demos/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/demos/chatgpt-app/" data-nb-sidebar-link><span class="break-words">Build an Interactive ChatGPT App</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Local development</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/local-development/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/local-development/environment-variables/" data-nb-sidebar-link><span class="break-words">Environment variables and secrets</span></a></li><li><a href="/workers/vite-plugin/" data-nb-sidebar-link><span class="break-words">Vite Plugin ↗</span></a></li><li><a href="/workers/local-development/wrangler-vs-vite/" data-nb-sidebar-link><span class="break-words">Choosing between Wrangler &amp; Vite</span></a></li><li><a href="/workers/local-development/multi-workers/" data-nb-sidebar-link><span class="break-words">Developing with multiple Workers</span></a></li><li><a href="/workers/local-development/local-data/" data-nb-sidebar-link><span class="break-words">Adding local data</span></a></li><li><a href="/workers/local-development/bindings-per-env/" data-nb-sidebar-link><span class="break-words">Supported bindings per development mode</span></a></li><li><a href="/workers/local-development/local-explorer/" data-nb-sidebar-link><span class="break-words">Local Explorer</span></a></li><li><a href="/workers/local-development/local-dev-tunnels/" data-nb-sidebar-link><span class="break-words">Share a local dev server</span></a></li></ul></div></div></div></li><li><a href="/workers/playground/" data-nb-sidebar-link><span class="break-words">Playground</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Configuration</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/configuration/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Workers Sites</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/configuration/sites/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/configuration/sites/start-from-existing/" data-nb-sidebar-link><span class="break-words">Start from existing</span></a></li><li><a href="/workers/configuration/sites/start-from-scratch/" data-nb-sidebar-link><span class="break-words">Start from scratch</span></a></li><li><a href="/workers/configuration/sites/start-from-worker/" data-nb-sidebar-link><span class="break-words">Start from Worker</span></a></li><li><a href="/workers/configuration/sites/configuration/" data-nb-sidebar-link><span class="break-words">Workers Sites configuration</span></a></li></ul></div></div></div></li><li><a href="/workers/runtime-apis/bindings/" data-nb-sidebar-link><span class="break-words">Bindings ↗</span></a></li><li><a href="/workers/configuration/cloudflare-access/" data-nb-sidebar-link><span class="break-words">Cloudflare Access</span></a></li><li><a href="/workers/configuration/compatibility-dates/" data-nb-sidebar-link><span class="break-words">Compatibility dates</span></a></li><li><a href="/workers/configuration/compatibility-flags/" data-nb-sidebar-link><span class="break-words">Compatibility flags</span></a></li><li><a href="/workers/configuration/cron-triggers/" data-nb-sidebar-link><span class="break-words">Cron Triggers</span></a></li><li><a href="/workers/configuration/environment-variables/" data-nb-sidebar-link><span class="break-words">Environment variables</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Integrations</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/configuration/integrations/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/configuration/integrations/apis/" data-nb-sidebar-link><span class="break-words">APIs</span></a></li><li><a href="/workers/configuration/integrations/external-services/" data-nb-sidebar-link><span class="break-words">External Services</span></a></li></ul></div></div></div></li><li><a href="/workers/configuration/multipart-upload-metadata/" data-nb-sidebar-link><span class="break-words">Multipart upload metadata</span></a></li><li><a href="/workers/configuration/workers-with-page-rules/" data-nb-sidebar-link><span class="break-words">Page Rules</span></a></li><li><a href="/workers/configuration/placement/" data-nb-sidebar-link><span class="break-words">Placement</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-warning-muted text-warning px-2 py-0.5 text-xs">Beta</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Routes and domains</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/configuration/routing/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/configuration/routing/custom-domains/" data-nb-sidebar-link><span class="break-words">Custom Domains</span></a></li><li><a href="/workers/configuration/routing/routes/" data-nb-sidebar-link><span class="break-words">Routes</span></a></li><li><a href="/workers/configuration/routing/workers-dev/" data-nb-sidebar-link><span class="break-words">workers.dev</span></a></li></ul></div></div></div></li><li><a href="/workers/configuration/secrets/" data-nb-sidebar-link><span class="break-words">Secrets</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible data-nb-default-open="true" class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-active data-nb-state="open" aria-expanded="true"><span data-nb-sidebar-group-text><span class="break-words">Versions &amp; deployments</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="open"><div><ul data-nb-sidebar-sublist><li><a href="/workers/versions-and-deployments/" aria-current="page" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/versions-and-deployments/deployment-management/" data-nb-sidebar-link><span class="break-words">Deployment management</span></a></li><li><a href="/workers/versions-and-deployments/preview-urls/" data-nb-sidebar-link><span class="break-words">Preview URLs</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Gradual deployments</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/versions-and-deployments/gradual-deployments/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/versions-and-deployments/gradual-deployments/version-affinity/" data-nb-sidebar-link><span class="break-words">Version affinity</span></a></li><li><a href="/workers/versions-and-deployments/gradual-deployments/with-durable-objects/" data-nb-sidebar-link><span class="break-words">With Durable Objects</span></a></li></ul></div></div></div></li><li><a href="/workers/versions-and-deployments/version-overrides/" data-nb-sidebar-link><span class="break-words">Version overrides</span></a></li><li><a href="/workers/versions-and-deployments/rollbacks/" data-nb-sidebar-link><span class="break-words">Rollbacks</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">CI/CD</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/ci-cd/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Builds</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/ci-cd/builds/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/ci-cd/builds/configuration/" data-nb-sidebar-link><span class="break-words">Configuration</span></a></li><li><a href="/workers/ci-cd/builds/automatic-prs/" data-nb-sidebar-link><span class="break-words">Automatic pull requests</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Git integration</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/ci-cd/builds/git-integration/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/ci-cd/builds/git-integration/github-integration/" data-nb-sidebar-link><span class="break-words">GitHub integration</span></a></li><li><a href="/workers/ci-cd/builds/git-integration/gitlab-integration/" data-nb-sidebar-link><span class="break-words">GitLab integration</span></a></li></ul></div></div></div></li><li><a href="/workers/ci-cd/builds/build-image/" data-nb-sidebar-link><span class="break-words">Build image</span></a></li><li><a href="/workers/ci-cd/builds/build-caching/" data-nb-sidebar-link><span class="break-words">Build caching</span></a></li><li><a href="/workers/ci-cd/builds/build-branches/" data-nb-sidebar-link><span class="break-words">Build branches</span></a></li><li><a href="/workers/ci-cd/builds/build-watch-paths/" data-nb-sidebar-link><span class="break-words">Build watch paths</span></a></li><li><a href="/workers/ci-cd/builds/deploy-hooks/" data-nb-sidebar-link><span class="break-words">Deploy Hooks</span></a></li><li><a href="/workers/ci-cd/builds/advanced-setups/" data-nb-sidebar-link><span class="break-words">Advanced setups</span></a></li><li><a href="/workers/ci-cd/builds/event-subscriptions/" data-nb-sidebar-link><span class="break-words">Event subscriptions</span></a></li><li><a href="/workers/ci-cd/builds/troubleshoot/" data-nb-sidebar-link><span class="break-words">Troubleshooting builds</span></a></li><li><a href="/workers/ci-cd/builds/api-reference/" data-nb-sidebar-link><span class="break-words">Builds API reference</span></a></li><li><a href="/workers/ci-cd/builds/limits-and-pricing/" data-nb-sidebar-link><span class="break-words">Limits &amp; pricing</span></a></li><li><a href="https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/workers-builds" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">MCP server</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-info-muted text-info px-2 py-0.5 text-xs">MCP</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">External CI/CD</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/ci-cd/external-cicd/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/ci-cd/external-cicd/github-actions/" data-nb-sidebar-link><span class="break-words">GitHub Actions</span></a></li><li><a href="/workers/ci-cd/external-cicd/gitlab-cicd/" data-nb-sidebar-link><span class="break-words">GitLab CI/CD</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Workers Cache</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/cache/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/cache/configuration/" data-nb-sidebar-link><span class="break-words">Configuration</span></a></li><li><a href="/workers/cache/cache-keys/" data-nb-sidebar-link><span class="break-words">Cache keys</span></a></li><li><a href="/workers/cache/purge/" data-nb-sidebar-link><span class="break-words">Purging the cache</span></a></li><li><a href="/workers/cache/examples/" data-nb-sidebar-link><span class="break-words">Examples</span></a></li><li><a href="/workers/cache/debugging/" data-nb-sidebar-link><span class="break-words">Debugging</span></a></li><li><a href="/workers/cache/limitations/" data-nb-sidebar-link><span class="break-words">Limitations</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Runtime APIs</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/runtime-apis/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Remote-procedure call (RPC)</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/runtime-apis/rpc/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/runtime-apis/rpc/lifecycle/" data-nb-sidebar-link><span class="break-words">Lifecycle</span></a></li><li><a href="/workers/runtime-apis/rpc/reserved-methods/" data-nb-sidebar-link><span class="break-words">Reserved Methods</span></a></li><li><a href="/workers/runtime-apis/rpc/visibility/" data-nb-sidebar-link><span class="break-words">Visibility and Security Model</span></a></li><li><a href="/workers/runtime-apis/rpc/typescript/" data-nb-sidebar-link><span class="break-words">TypeScript</span></a></li><li><a href="/workers/runtime-apis/rpc/error-handling/" data-nb-sidebar-link><span class="break-words">Error handling</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">WebAssembly (Wasm)</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/runtime-apis/webassembly/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/runtime-apis/webassembly/javascript/" data-nb-sidebar-link><span class="break-words">Wasm in JavaScript</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Bindings (env)</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/runtime-apis/bindings/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers-ai/get-started/workers-wrangler/#2-connect-your-worker-to-workers-ai" data-nb-sidebar-link><span class="break-words">AI ↗</span></a></li><li><a href="/analytics/analytics-engine/" data-nb-sidebar-link><span class="break-words">Analytics Engine ↗</span></a></li><li><a href="/workers/static-assets/binding/" data-nb-sidebar-link><span class="break-words">Assets ↗</span></a></li><li><a href="/browser-run/" data-nb-sidebar-link><span class="break-words">Browser Run ↗</span></a></li><li><a href="/d1/worker-api/" data-nb-sidebar-link><span class="break-words">D1 ↗</span></a></li><li><a href="/cloudflare-for-platforms/workers-for-platforms/configuration/dynamic-dispatch/" data-nb-sidebar-link><span class="break-words">Dispatcher (Workers for Platforms) ↗</span></a></li><li><a href="/durable-objects/api/" data-nb-sidebar-link><span class="break-words">Durable Objects ↗</span></a></li><li><a href="/workers/runtime-apis/bindings/worker-loader/" data-nb-sidebar-link><span class="break-words">Dynamic Worker Loaders</span></a></li><li><a href="/workers/configuration/environment-variables/" data-nb-sidebar-link><span class="break-words">Environment Variables ↗</span></a></li><li><a href="/hyperdrive/" data-nb-sidebar-link><span class="break-words">Hyperdrive ↗</span></a></li><li><a href="/images/optimization/binding/" data-nb-sidebar-link><span class="break-words">Images ↗</span></a></li><li><a href="/kv/api/" data-nb-sidebar-link><span class="break-words">KV ↗</span></a></li><li><a href="/stream/transform-videos/bindings/" data-nb-sidebar-link><span class="break-words">Media Transformations ↗</span></a></li><li><a href="/workers/runtime-apis/bindings/mtls/" data-nb-sidebar-link><span class="break-words">mTLS</span></a></li><li><a href="/queues/configuration/javascript-apis/" data-nb-sidebar-link><span class="break-words">Queues ↗</span></a></li><li><a href="/r2/api/workers/workers-api-reference/" data-nb-sidebar-link><span class="break-words">R2 ↗</span></a></li><li><a href="/workers/runtime-apis/bindings/rate-limit/" data-nb-sidebar-link><span class="break-words">Rate Limiting</span></a></li><li><a href="/workers/configuration/secrets/" data-nb-sidebar-link><span class="break-words">Secrets ↗</span></a></li><li><a href="/secrets-store/integrations/workers/" data-nb-sidebar-link><span class="break-words">Secrets Store ↗</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-warning-muted text-warning px-2 py-0.5 text-xs">Beta</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Service bindings</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/runtime-apis/bindings/service-bindings/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/runtime-apis/bindings/service-bindings/http/" data-nb-sidebar-link><span class="break-words">HTTP</span></a></li><li><a href="/workers/runtime-apis/bindings/service-bindings/rpc/" data-nb-sidebar-link><span class="break-words">RPC (WorkerEntrypoint)</span></a></li></ul></div></div></div></li><li><a href="/stream/manage-video-library/bindings/" data-nb-sidebar-link><span class="break-words">Stream ↗</span></a></li><li><a href="/vectorize/reference/client-api/" data-nb-sidebar-link><span class="break-words">Vectorize ↗</span></a></li><li><a href="/workers/runtime-apis/bindings/version-metadata/" data-nb-sidebar-link><span class="break-words">Version metadata</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-warning-muted text-warning px-2 py-0.5 text-xs">Beta</span></a></li><li><a href="/workflows/" data-nb-sidebar-link><span class="break-words">Workflows ↗</span></a></li></ul></div></div></div></li><li><a href="/workers/runtime-apis/cache/" data-nb-sidebar-link><span class="break-words">Cache</span></a></li><li><a href="/workers/runtime-apis/console/" data-nb-sidebar-link><span class="break-words">Console</span></a></li><li><a href="/workers/runtime-apis/context/" data-nb-sidebar-link><span class="break-words">Context (ctx)</span></a></li><li><a href="/workers/runtime-apis/encoding/" data-nb-sidebar-link><span class="break-words">Encoding</span></a></li><li><a href="/workers/runtime-apis/eventsource/" data-nb-sidebar-link><span class="break-words">EventSource</span></a></li><li><a href="/workers/runtime-apis/fetch/" data-nb-sidebar-link><span class="break-words">Fetch</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Handlers</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/runtime-apis/handlers/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/durable-objects/api/alarms/" data-nb-sidebar-link><span class="break-words">Alarm Handler ↗</span></a></li><li><a href="/email-service/api/route-emails/email-handler/" data-nb-sidebar-link><span class="break-words">Email Handler ↗</span></a></li><li><a href="/workers/runtime-apis/handlers/fetch/" data-nb-sidebar-link><span class="break-words">Fetch Handler</span></a></li><li><a href="/queues/configuration/javascript-apis/#consumer" data-nb-sidebar-link><span class="break-words">Queue Handler ↗</span></a></li><li><a href="/workers/runtime-apis/handlers/scheduled/" data-nb-sidebar-link><span class="break-words">Scheduled Handler</span></a></li><li><a href="/workers/runtime-apis/handlers/tail/" data-nb-sidebar-link><span class="break-words">Tail Handler</span></a></li></ul></div></div></div></li><li><a href="/workers/runtime-apis/headers/" data-nb-sidebar-link><span class="break-words">Headers</span></a></li><li><a href="/workers/runtime-apis/html-rewriter/" data-nb-sidebar-link><span class="break-words">HTMLRewriter</span></a></li><li><a href="/workers/runtime-apis/messagechannel/" data-nb-sidebar-link><span class="break-words">MessageChannel</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Node.js compatibility</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/runtime-apis/nodejs/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/runtime-apis/nodejs/assert/" data-nb-sidebar-link><span class="break-words">assert</span></a></li><li><a href="/workers/runtime-apis/nodejs/asynclocalstorage/" data-nb-sidebar-link><span class="break-words">AsyncLocalStorage</span></a></li><li><a href="/workers/runtime-apis/nodejs/buffer/" data-nb-sidebar-link><span class="break-words">Buffer</span></a></li><li><a href="/workers/runtime-apis/nodejs/crypto/" data-nb-sidebar-link><span class="break-words">crypto</span></a></li><li><a href="/workers/runtime-apis/nodejs/diagnostics-channel/" data-nb-sidebar-link><span class="break-words">Diagnostics Channel</span></a></li><li><a href="/workers/runtime-apis/nodejs/dns/" data-nb-sidebar-link><span class="break-words">dns</span></a></li><li><a href="/workers/runtime-apis/nodejs/eventemitter/" data-nb-sidebar-link><span class="break-words">EventEmitter</span></a></li><li><a href="/workers/runtime-apis/nodejs/fs/" data-nb-sidebar-link><span class="break-words">fs</span></a></li><li><a href="/workers/runtime-apis/nodejs/http/" data-nb-sidebar-link><span class="break-words">http</span></a></li><li><a href="/workers/runtime-apis/nodejs/https/" data-nb-sidebar-link><span class="break-words">https</span></a></li><li><a href="/workers/runtime-apis/nodejs/net/" data-nb-sidebar-link><span class="break-words">net</span></a></li><li><a href="/workers/runtime-apis/nodejs/path/" data-nb-sidebar-link><span class="break-words">path</span></a></li><li><a href="/workers/runtime-apis/nodejs/process/" data-nb-sidebar-link><span class="break-words">process</span></a></li><li><a href="/workers/runtime-apis/nodejs/streams/" data-nb-sidebar-link><span class="break-words">Streams</span></a></li><li><a href="/workers/runtime-apis/nodejs/string-decoder/" data-nb-sidebar-link><span class="break-words">StringDecoder</span></a></li><li><a href="/workers/runtime-apis/nodejs/test/" data-nb-sidebar-link><span class="break-words">test</span></a></li><li><a href="/workers/runtime-apis/nodejs/timers/" data-nb-sidebar-link><span class="break-words">timers</span></a></li><li><a href="/workers/runtime-apis/nodejs/tls/" data-nb-sidebar-link><span class="break-words">tls</span></a></li><li><a href="/workers/runtime-apis/nodejs/url/" data-nb-sidebar-link><span class="break-words">url</span></a></li><li><a href="/workers/runtime-apis/nodejs/util/" data-nb-sidebar-link><span class="break-words">util</span></a></li><li><a href="/workers/runtime-apis/nodejs/zlib/" data-nb-sidebar-link><span class="break-words">zlib</span></a></li></ul></div></div></div></li><li><a href="/workers/runtime-apis/performance/" data-nb-sidebar-link><span class="break-words">Performance and timers</span></a></li><li><a href="/workers/runtime-apis/request/" data-nb-sidebar-link><span class="break-words">Request</span></a></li><li><a href="/workers/runtime-apis/response/" data-nb-sidebar-link><span class="break-words">Response</span></a></li><li><a href="/workers/runtime-apis/scheduler/" data-nb-sidebar-link><span class="break-words">Scheduler</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Streams</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/runtime-apis/streams/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/runtime-apis/streams/readablestream/" data-nb-sidebar-link><span class="break-words">ReadableStream</span></a></li><li><a href="/workers/runtime-apis/streams/readablestreambyobreader/" data-nb-sidebar-link><span class="break-words">ReadableStream BYOBReader</span></a></li><li><a href="/workers/runtime-apis/streams/readablestreamdefaultreader/" data-nb-sidebar-link><span class="break-words">ReadableStream DefaultReader</span></a></li><li><a href="/workers/runtime-apis/streams/transformstream/" data-nb-sidebar-link><span class="break-words">TransformStream</span></a></li><li><a href="/workers/runtime-apis/streams/writablestream/" data-nb-sidebar-link><span class="break-words">WritableStream</span></a></li><li><a href="/workers/runtime-apis/streams/writablestreamdefaultwriter/" data-nb-sidebar-link><span class="break-words">WritableStream DefaultWriter</span></a></li></ul></div></div></div></li><li><a href="/workers/runtime-apis/tcp-sockets/" data-nb-sidebar-link><span class="break-words">TCP sockets</span></a></li><li><a href="/workers/runtime-apis/web-crypto/" data-nb-sidebar-link><span class="break-words">Web Crypto</span></a></li><li><a href="/workers/runtime-apis/web-standards/" data-nb-sidebar-link><span class="break-words">Web standards</span></a></li><li><a href="/workers/runtime-apis/websockets/" data-nb-sidebar-link><span class="break-words">WebSockets</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Static Assets</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/static-assets/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/static-assets/get-started/" data-nb-sidebar-link><span class="break-words">Get Started</span></a></li><li><a href="/workers/static-assets/binding/" data-nb-sidebar-link><span class="break-words">Configuration and Bindings</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Routing</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/static-assets/routing/full-stack-application/" data-nb-sidebar-link><span class="break-words">Full-stack application</span></a></li><li><a href="/workers/static-assets/routing/single-page-application/" data-nb-sidebar-link><span class="break-words">Single Page Application (SPA)</span></a></li><li><a href="/workers/static-assets/routing/static-site-generation/" data-nb-sidebar-link><span class="break-words">Static Site Generation (SSG) and custom 404 pages</span></a></li><li><a href="/workers/static-assets/routing/worker-script/" data-nb-sidebar-link><span class="break-words">Worker script</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Advanced</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/versions-and-deployments/gradual-deployments/version-affinity/#static-assets" data-nb-sidebar-link><span class="break-words">Gradual rollouts ↗</span></a></li><li><a href="/workers/static-assets/routing/advanced/html-handling/" data-nb-sidebar-link><span class="break-words">HTML handling</span></a></li><li><a href="/workers/static-assets/routing/advanced/serving-a-subdirectory/" data-nb-sidebar-link><span class="break-words">Serving a subdirectory</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><a href="/workers/static-assets/headers/" data-nb-sidebar-link><span class="break-words">Headers</span></a></li><li><a href="/workers/static-assets/redirects/" data-nb-sidebar-link><span class="break-words">Redirects</span></a></li><li><a href="/workers/static-assets/direct-upload/" data-nb-sidebar-link><span class="break-words">Direct Uploads</span></a></li><li><a href="/workers/static-assets/billing-and-limitations/" data-nb-sidebar-link><span class="break-words">Billing and Limitations</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Migration Guides</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/static-assets/migration-guides/migrate-from-pages/" data-nb-sidebar-link><span class="break-words">Migrate from Pages to Workers</span></a></li><li><a href="/workers/static-assets/migration-guides/netlify-to-workers/" data-nb-sidebar-link><span class="break-words">Migrate from Netlify to Workers</span></a></li><li><a href="/workers/static-assets/migration-guides/vercel-to-workers/" data-nb-sidebar-link><span class="break-words">Migrate from Vercel to Workers</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Framework guides</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/framework-guides/automatic-configuration/" data-nb-sidebar-link><span class="break-words">Deploy an existing project</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Web applications</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/framework-guides/web-apps/react/" data-nb-sidebar-link><span class="break-words">React + Vite</span></a></li><li><a href="/workers/framework-guides/web-apps/astro/" data-nb-sidebar-link><span class="break-words">Astro</span></a></li><li><a href="/workers/framework-guides/web-apps/react-router/" data-nb-sidebar-link><span class="break-words">React Router (formerly Remix)</span></a></li><li><a href="/workers/framework-guides/web-apps/nextjs/" data-nb-sidebar-link><span class="break-words">Next.js</span></a></li><li><a href="/workers/framework-guides/web-apps/vue/" data-nb-sidebar-link><span class="break-words">Vue</span></a></li><li><a href="/workers/framework-guides/web-apps/redwoodsdk/" data-nb-sidebar-link><span class="break-words">RedwoodSDK</span></a></li><li><a href="/workers/framework-guides/web-apps/tanstack-start/" data-nb-sidebar-link><span class="break-words">TanStack Start</span></a></li><li><a href="/workers/framework-guides/web-apps/microfrontends/" data-nb-sidebar-link><span class="break-words">Microfrontends</span></a></li><li><a href="/workers/framework-guides/web-apps/sveltekit/" data-nb-sidebar-link><span class="break-words">SvelteKit</span></a></li><li><a href="/workers/framework-guides/web-apps/vike/" data-nb-sidebar-link><span class="break-words">Vike</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">More guides...</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/analog/" data-nb-sidebar-link><span class="break-words">Analog</span></a></li><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/angular/" data-nb-sidebar-link><span class="break-words">Angular</span></a></li><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/docusaurus/" data-nb-sidebar-link><span class="break-words">Docusaurus</span></a></li><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/gatsby/" data-nb-sidebar-link><span class="break-words">Gatsby</span></a></li><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/hono/" data-nb-sidebar-link><span class="break-words">Hono</span></a></li><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/nuxt/" data-nb-sidebar-link><span class="break-words">Nuxt</span></a></li><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/qwik/" data-nb-sidebar-link><span class="break-words">Qwik</span></a></li><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/solid/" data-nb-sidebar-link><span class="break-words">Solid</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-warning-muted text-warning px-2 py-0.5 text-xs">Beta</span></a></li><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/waku/" data-nb-sidebar-link><span class="break-words">Waku</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Mobile applications</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="https://docs.expo.dev/eas/hosting/reference/worker-runtime/" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Expo</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">APIs</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/languages/python/packages/fastapi/" data-nb-sidebar-link><span class="break-words">FastAPI ↗</span></a></li><li><a href="/workers/framework-guides/web-apps/more-web-frameworks/hono/" data-nb-sidebar-link><span class="break-words">Hono ↗</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">AI &amp; agents</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/agents/" data-nb-sidebar-link><span class="break-words">Agents SDK ↗</span></a></li><li><a href="/workers/languages/python/packages/langchain/" data-nb-sidebar-link><span class="break-words">LangChain ↗</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Databases</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/databases/connecting-to-databases/" data-nb-sidebar-link><span class="break-words">Connect to databases</span></a></li><li><a href="/analytics/analytics-engine/" data-nb-sidebar-link><span class="break-words">Analytics Engine ↗</span></a></li><li><a href="/vectorize/" data-nb-sidebar-link><span class="break-words">Vectorize (vector database) ↗</span></a></li><li><a href="/d1/" data-nb-sidebar-link><span class="break-words">Cloudflare D1 ↗</span></a></li><li><a href="/hyperdrive/" data-nb-sidebar-link><span class="break-words">Hyperdrive ↗</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">3rd Party Integrations</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/databases/third-party-integrations/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/databases/third-party-integrations/neon/" data-nb-sidebar-link><span class="break-words">Neon</span></a></li><li><a href="/workers/databases/third-party-integrations/planetscale/" data-nb-sidebar-link><span class="break-words">PlanetScale</span></a></li><li><a href="/workers/databases/third-party-integrations/supabase/" data-nb-sidebar-link><span class="break-words">Supabase</span></a></li><li><a href="/workers/databases/third-party-integrations/turso/" data-nb-sidebar-link><span class="break-words">Turso</span></a></li><li><a href="/workers/databases/third-party-integrations/upstash/" data-nb-sidebar-link><span class="break-words">Upstash</span></a></li><li><a href="/workers/databases/third-party-integrations/xata/" data-nb-sidebar-link><span class="break-words">Xata</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Observability</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/observability/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/observability/metrics-and-analytics/" data-nb-sidebar-link><span class="break-words">Metrics and analytics</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Logs</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/observability/logs/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/observability/logs/workers-logs/" data-nb-sidebar-link><span class="break-words">Workers Logs</span></a></li><li><a href="/workers/observability/logs/real-time-logs/" data-nb-sidebar-link><span class="break-words">Real-time logs</span></a></li><li><a href="/workers/observability/logs/tail-workers/" data-nb-sidebar-link><span class="break-words">Tail Workers</span></a></li><li><a href="/workers/observability/logs/logpush/" data-nb-sidebar-link><span class="break-words">Workers Logpush</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Traces</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-warning-muted text-warning px-2 py-0.5 text-xs">Beta</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/observability/traces/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/observability/traces/custom-spans/" data-nb-sidebar-link><span class="break-words">Custom spans</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-warning-muted text-warning px-2 py-0.5 text-xs">Beta</span></a></li><li><a href="/workers/observability/traces/spans-and-attributes/" data-nb-sidebar-link><span class="break-words">Spans and attributes</span></a></li><li><a href="/workers/observability/traces/known-limitations/" data-nb-sidebar-link><span class="break-words">Known limitations</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">DevTools</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/observability/dev-tools/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/observability/dev-tools/breakpoints/" data-nb-sidebar-link><span class="break-words">Breakpoints</span></a></li><li><a href="/workers/observability/dev-tools/cpu-usage/" data-nb-sidebar-link><span class="break-words">Profiling CPU usage</span></a></li><li><a href="/workers/observability/dev-tools/memory-usage/" data-nb-sidebar-link><span class="break-words">Profiling Memory</span></a></li></ul></div></div></div></li><li><a href="/workers/observability/query-builder/" data-nb-sidebar-link><span class="break-words">Query Builder</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Exporting OpenTelemetry Data</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/observability/exporting-opentelemetry-data/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/observability/exporting-opentelemetry-data/honeycomb/" data-nb-sidebar-link><span class="break-words">Export to Honeycomb</span></a></li><li><a href="/workers/observability/exporting-opentelemetry-data/grafana-cloud/" data-nb-sidebar-link><span class="break-words">Export to Grafana Cloud</span></a></li><li><a href="/workers/observability/exporting-opentelemetry-data/axiom/" data-nb-sidebar-link><span class="break-words">Export to Axiom</span></a></li><li><a href="/workers/observability/exporting-opentelemetry-data/sentry/" data-nb-sidebar-link><span class="break-words">Export to Sentry</span></a></li><li><a href="/workers/observability/exporting-opentelemetry-data/posthog/" data-nb-sidebar-link><span class="break-words">Export to PostHog</span></a></li></ul></div></div></div></li><li><a href="https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/workers-observability" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">MCP server</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-info-muted text-info px-2 py-0.5 text-xs">MCP</span></a></li><li><a href="/workers/observability/errors/" data-nb-sidebar-link><span class="break-words">Errors and exceptions</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Integrations</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="https://docs.sentry.io/platforms/javascript/guides/cloudflare/" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Sentry</span></a></li></ul></div></div></div></li><li><a href="/workers/observability/source-maps/" data-nb-sidebar-link><span class="break-words">Source maps and stack traces</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Testing</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/testing/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Vitest integration</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/testing/vitest-integration/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/testing/vitest-integration/write-your-first-test/" data-nb-sidebar-link><span class="break-words">Write your first test</span></a></li><li><a href="/workers/testing/vitest-integration/recipes/" data-nb-sidebar-link><span class="break-words">Recipes and examples</span></a></li><li><a href="/workers/testing/vitest-integration/configuration/" data-nb-sidebar-link><span class="break-words">Configuration</span></a></li><li><a href="/workers/testing/vitest-integration/test-apis/" data-nb-sidebar-link><span class="break-words">Test APIs</span></a></li><li><a href="/workers/testing/vitest-integration/isolation-and-concurrency/" data-nb-sidebar-link><span class="break-words">Isolation and concurrency</span></a></li><li><a href="/workers/testing/vitest-integration/debugging/" data-nb-sidebar-link><span class="break-words">Debugging</span></a></li><li><a href="/workers/testing/vitest-integration/known-issues/" data-nb-sidebar-link><span class="break-words">Known issues</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Migration guides</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/testing/vitest-integration/migration-guides/migrate-from-vitest-3-to-vitest-4/" data-nb-sidebar-link><span class="break-words">Migrate from Vitest 3 to Vitest 4</span></a></li><li><a href="/workers/testing/vitest-integration/migration-guides/migrate-from-miniflare-2/" data-nb-sidebar-link><span class="break-words">Migrate from Miniflare 2&#39;s test environments</span></a></li><li><a href="/workers/testing/vitest-integration/migration-guides/migrate-from-unstable-dev/" data-nb-sidebar-link><span class="break-words">Migrate from unstable_dev</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Integration test harness</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/testing/test-harness/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/testing/test-harness/get-started/" data-nb-sidebar-link><span class="break-words">Get started</span></a></li><li><a href="/workers/testing/test-harness/configure/" data-nb-sidebar-link><span class="break-words">Configure the test harness</span></a></li><li><a href="/workers/testing/test-harness/prepare-test-state/" data-nb-sidebar-link><span class="break-words">Prepare test state</span></a></li><li><a href="/workers/testing/test-harness/interact-with-workers/" data-nb-sidebar-link><span class="break-words">Interact with Workers</span></a></li><li><a href="/workers/testing/test-harness/integrations/" data-nb-sidebar-link><span class="break-words">Integrations</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Miniflare</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/testing/miniflare/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/testing/miniflare/get-started/" data-nb-sidebar-link><span class="break-words">Get Started</span></a></li><li><a href="/workers/testing/miniflare/writing-tests/" data-nb-sidebar-link><span class="break-words">Writing tests</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Core</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/testing/miniflare/core/compatibility/" data-nb-sidebar-link><span class="break-words">Compatibility Dates</span></a></li><li><a href="/workers/testing/miniflare/core/fetch/" data-nb-sidebar-link><span class="break-words">Fetch Events</span></a></li><li><a href="/workers/testing/miniflare/core/modules/" data-nb-sidebar-link><span class="break-words">Modules</span></a></li><li><a href="/workers/testing/miniflare/core/multiple-workers/" data-nb-sidebar-link><span class="break-words">Multiple Workers</span></a></li><li><a href="/workers/testing/miniflare/core/queues/" data-nb-sidebar-link><span class="break-words">Queues</span></a></li><li><a href="/workers/testing/miniflare/core/scheduled/" data-nb-sidebar-link><span class="break-words">Scheduled Events</span></a></li><li><a href="/workers/testing/miniflare/core/variables-secrets/" data-nb-sidebar-link><span class="break-words">Variables and Secrets</span></a></li><li><a href="/workers/testing/miniflare/core/standards/" data-nb-sidebar-link><span class="break-words">Web Standards</span></a></li><li><a href="/workers/testing/miniflare/core/web-sockets/" data-nb-sidebar-link><span class="break-words">WebSockets</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Developing</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/testing/miniflare/developing/debugger/" data-nb-sidebar-link><span class="break-words">Attaching a Debugger</span></a></li><li><a href="/workers/testing/miniflare/developing/live-reload/" data-nb-sidebar-link><span class="break-words">Live Reload</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Migrations</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/testing/miniflare/migrations/from-v2/" data-nb-sidebar-link><span class="break-words">Migrating from Version 2</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Storage</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/testing/miniflare/storage/cache/" data-nb-sidebar-link><span class="break-words">Cache</span></a></li><li><a href="/workers/testing/miniflare/storage/d1/" data-nb-sidebar-link><span class="break-words">D1</span></a></li><li><a href="/workers/testing/miniflare/storage/durable-objects/" data-nb-sidebar-link><span class="break-words">Durable Objects</span></a></li><li><a href="/workers/testing/miniflare/storage/kv/" data-nb-sidebar-link><span class="break-words">KV</span></a></li><li><a href="/workers/testing/miniflare/storage/r2/" data-nb-sidebar-link><span class="break-words">R2</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><a href="/workers/testing/unstable_startworker/" data-nb-sidebar-link><span class="break-words">Wrangler&#39;s unstable_startWorker()</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Wrangler</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/wrangler/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/wrangler/install-and-update/" data-nb-sidebar-link><span class="break-words">Install/Update Wrangler</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Migrations</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/wrangler/migration/update-v3-to-v4/" data-nb-sidebar-link><span class="break-words">Migrate from Wrangler v3 to v4</span></a></li><li><a href="/workers/wrangler/migration/update-v2-to-v3/" data-nb-sidebar-link><span class="break-words">Migrate from Wrangler v2 to v3</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Migrate from Wrangler v1 to v2</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Wrangler v1 (legacy)</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/wrangler/migration/v1-to-v2/wrangler-legacy/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/wrangler/migration/v1-to-v2/wrangler-legacy/install-update/" data-nb-sidebar-link><span class="break-words">Install / Update</span></a></li><li><a href="/workers/wrangler/migration/v1-to-v2/wrangler-legacy/authentication/" data-nb-sidebar-link><span class="break-words">Authentication</span></a></li><li><a href="/workers/wrangler/migration/v1-to-v2/wrangler-legacy/commands/" data-nb-sidebar-link><span class="break-words">Commands</span></a></li><li><a href="/workers/wrangler/migration/v1-to-v2/wrangler-legacy/configuration/" data-nb-sidebar-link><span class="break-words">Configuration</span></a></li><li><a href="/workers/wrangler/migration/v1-to-v2/wrangler-legacy/webpack/" data-nb-sidebar-link><span class="break-words">Webpack</span></a></li></ul></div></div></div></li><li><a href="/workers/wrangler/migration/v1-to-v2/eject-webpack/" data-nb-sidebar-link><span class="break-words">1. Migrate webpack projects</span></a></li><li><a href="/workers/wrangler/migration/v1-to-v2/update-v1-to-v2/" data-nb-sidebar-link><span class="break-words">2. Update to Wrangler v2</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><a href="/workers/wrangler/api/" data-nb-sidebar-link><span class="break-words">API</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Commands</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/wrangler/commands/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/wrangler/commands/workers/" data-nb-sidebar-link><span class="break-words">Workers</span></a></li><li><a href="/workers/wrangler/commands/general/" data-nb-sidebar-link><span class="break-words">General commands</span></a></li><li><a href="/workers/wrangler/commands/artifacts/" data-nb-sidebar-link><span class="break-words">Artifacts</span></a></li><li><a href="/workers/wrangler/commands/browser/" data-nb-sidebar-link><span class="break-words">Browser</span></a></li><li><a href="/workers/wrangler/commands/certificates/" data-nb-sidebar-link><span class="break-words">Certificates</span></a></li><li><a href="/workers/wrangler/commands/containers/" data-nb-sidebar-link><span class="break-words">Containers</span></a></li><li><a href="/workers/wrangler/commands/d1/" data-nb-sidebar-link><span class="break-words">D1</span></a></li><li><a href="/workers/wrangler/commands/flagship/" data-nb-sidebar-link><span class="break-words">Flagship</span></a></li><li><a href="/workers/wrangler/commands/hyperdrive/" data-nb-sidebar-link><span class="break-words">Hyperdrive</span></a></li><li><a href="/workers/wrangler/commands/kv/" data-nb-sidebar-link><span class="break-words">KV</span></a></li><li><a href="/workers/wrangler/commands/pages/" data-nb-sidebar-link><span class="break-words">Pages</span></a></li><li><a href="/workers/wrangler/commands/pipelines/" data-nb-sidebar-link><span class="break-words">Pipelines</span></a></li><li><a href="/workers/wrangler/commands/queues/" data-nb-sidebar-link><span class="break-words">Queues</span></a></li><li><a href="/workers/wrangler/commands/r2/" data-nb-sidebar-link><span class="break-words">R2</span></a></li><li><a href="/workers/wrangler/commands/secrets-store/" data-nb-sidebar-link><span class="break-words">Secrets Store</span></a></li><li><a href="/workers/wrangler/commands/tunnel/" data-nb-sidebar-link><span class="break-words">Tunnel</span></a></li><li><a href="/workers/wrangler/commands/vectorize/" data-nb-sidebar-link><span class="break-words">Vectorize</span></a></li><li><a href="/workers/wrangler/commands/vpc/" data-nb-sidebar-link><span class="break-words">VPC</span></a></li><li><a href="/workers/wrangler/commands/workers-for-platforms/" data-nb-sidebar-link><span class="break-words">Workers for Platforms</span></a></li><li><a href="/workers/wrangler/commands/workflows/" data-nb-sidebar-link><span class="break-words">Workflows</span></a></li></ul></div></div></div></li><li><a href="/workers/wrangler/profiles/" data-nb-sidebar-link><span class="break-words">Authentication profiles</span></a></li><li><a href="/workers/wrangler/bundling/" data-nb-sidebar-link><span class="break-words">Bundling</span></a></li><li><a href="/workers/wrangler/configuration/" data-nb-sidebar-link><span class="break-words">Configuration</span></a></li><li><a href="/workers/wrangler/custom-builds/" data-nb-sidebar-link><span class="break-words">Custom builds</span></a></li><li><a href="/workers/wrangler/deprecations/" data-nb-sidebar-link><span class="break-words">Deprecations</span></a></li><li><a href="/workers/wrangler/environments/" data-nb-sidebar-link><span class="break-words">Environments</span></a></li><li><a href="/workers/wrangler/system-environment-variables/" data-nb-sidebar-link><span class="break-words">System environment variables</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Vite plugin</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/vite-plugin/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/vite-plugin/get-started/" data-nb-sidebar-link><span class="break-words">Get started</span></a></li><li><a href="/workers/vite-plugin/tutorial/" data-nb-sidebar-link><span class="break-words">Tutorial - React SPA with an API</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Reference</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/vite-plugin/reference/api/" data-nb-sidebar-link><span class="break-words">API</span></a></li><li><a href="/workers/vite-plugin/reference/static-assets/" data-nb-sidebar-link><span class="break-words">Static Assets</span></a></li><li><a href="/workers/vite-plugin/reference/debugging/" data-nb-sidebar-link><span class="break-words">Debugging</span></a></li><li><a href="/workers/vite-plugin/reference/migrating-from-wrangler-dev/" data-nb-sidebar-link><span class="break-words">Migrating from wrangler dev</span></a></li><li><a href="/workers/vite-plugin/reference/secrets/" data-nb-sidebar-link><span class="break-words">Secrets</span></a></li><li><a href="/workers/vite-plugin/reference/vite-environments/" data-nb-sidebar-link><span class="break-words">Vite Environments</span></a></li><li><a href="/workers/vite-plugin/reference/cloudflare-environments/" data-nb-sidebar-link><span class="break-words">Cloudflare Environments</span></a></li><li><a href="/workers/vite-plugin/reference/non-javascript-modules/" data-nb-sidebar-link><span class="break-words">Non-JavaScript modules</span></a></li><li><a href="/workers/vite-plugin/reference/programmatic-configuration/" data-nb-sidebar-link><span class="break-words">Programmatic configuration</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Languages</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/languages/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">JavaScript</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/languages/javascript/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/examples/?languages=JavaScript" data-nb-sidebar-link><span class="break-words">Examples ↗</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">TypeScript</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/languages/typescript/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/examples/?languages=TypeScript" data-nb-sidebar-link><span class="break-words">Examples ↗</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Python Workers</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-warning-muted text-warning px-2 py-0.5 text-xs">Beta</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/languages/python/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/languages/python/basics/" data-nb-sidebar-link><span class="break-words">The Basics</span></a></li><li><a href="/workers/languages/python/how-python-workers-work/" data-nb-sidebar-link><span class="break-words">How Python Workers Work</span></a></li><li><a href="/workers/languages/python/ffi/" data-nb-sidebar-link><span class="break-words">Foreign Function Interface (FFI)</span></a></li><li><a href="/workers/languages/python/stdlib/" data-nb-sidebar-link><span class="break-words">Standard Library</span></a></li><li><a href="/workers/languages/python/examples/" data-nb-sidebar-link><span class="break-words">Examples</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Packages</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/languages/python/packages/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/languages/python/packages/fastapi/" data-nb-sidebar-link><span class="break-words">FastAPI</span></a></li><li><a href="/workers/languages/python/packages/langchain/" data-nb-sidebar-link><span class="break-words">Langchain</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Rust</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-warning-muted text-warning px-2 py-0.5 text-xs">Beta</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/languages/rust/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/languages/rust/crates/" data-nb-sidebar-link><span class="break-words">Supported crates</span></a></li></ul></div></div></div></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Platform</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/platform/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/platform/pricing/" data-nb-sidebar-link><span class="break-words">Pricing</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Changelog</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/platform/changelog/" data-nb-sidebar-link><span class="break-words">Overview</span></a></li><li><a href="/workers/platform/changelog/historical-changelog/" data-nb-sidebar-link><span class="break-words">Workers (Historic)</span></a></li><li><a href="https://github.com/cloudflare/workers-sdk/releases" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Wrangler</span></a></li></ul></div></div></div></li><li><a href="/workers/platform/limits/" data-nb-sidebar-link><span class="break-words">Limits</span></a></li><li><a href="/workers/platform/storage-options/" data-nb-sidebar-link><span class="break-words">Choose a data or storage product</span></a></li><li><a href="/workers/platform/betas/" data-nb-sidebar-link><span class="break-words">Betas</span></a></li><li><a href="/workers/platform/deploy-buttons/" data-nb-sidebar-link><span class="break-words">Deploy to Cloudflare buttons</span></a></li><li><a href="/workers/platform/claim-deployments/" data-nb-sidebar-link><span class="break-words">Claim deployments (temporary accounts)</span></a></li><li><a href="/workers/platform/built-with-cloudflare/" data-nb-sidebar-link><span class="break-words">Built with Cloudflare button</span></a></li><li><a href="/workers/platform/known-issues/" data-nb-sidebar-link><span class="break-words">Known issues</span></a></li><li><a href="/cloudflare-for-platforms/workers-for-platforms/" data-nb-sidebar-link><span class="break-words">Workers for Platforms ↗</span></a></li><li><a href="/workers/platform/infrastructure-as-code/" data-nb-sidebar-link><span class="break-words">Infrastructure as Code (IaC)</span></a></li></ul></div></div></div></li><li><a href="/workers/glossary/" data-nb-sidebar-link><span class="break-words">Glossary</span></a></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Reference</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/workers/reference/how-the-cache-works/" data-nb-sidebar-link><span class="break-words">How the Cache works</span></a></li><li><a href="/workers/reference/how-workers-works/" data-nb-sidebar-link><span class="break-words">How Workers works</span></a></li><li><a href="/workers/reference/migrate-to-module-workers/" data-nb-sidebar-link><span class="break-words">Migrate from Service Workers to ES Modules</span></a></li><li><a href="/workers/reference/protocols/" data-nb-sidebar-link><span class="break-words">Protocols</span></a></li><li><a href="/workers/reference/security-model/" data-nb-sidebar-link><span class="break-words">Security model</span></a></li></ul></div></div></div></li><li><div data-nb-collapsible class data-nb-sidebar-group="true"><button type="button" data-nb-collapsible-trigger class data-nb-sidebar-group-label="true" data-nb-state="closed" aria-expanded="false"><span data-nb-sidebar-group-text><span class="break-words">Agent resources</span></span><span data-nb-caret aria-hidden="true"></span></button><div data-nb-collapsible-content class data-nb-state="closed"><div><ul data-nb-sidebar-sublist><li><a href="/agent-setup/" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Agent setup ↗</span></a></li><li><a href="https://github.com/cloudflare/skills" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Cloudflare Skills ↗</span></a></li><li><a href="https://github.com/cloudflare/mcp" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Code Mode MCP Server ↗</span></a></li><li><a href="https://github.com/cloudflare/mcp-server-cloudflare" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Domain-specific MCP Servers ↗</span><span class="inline-flex items-center rounded-full font-medium whitespace-nowrap bg-info-muted text-info px-2 py-0.5 text-xs">MCP</span></a></li><li><a href="/workers/llms.txt" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Workers llms.txt ↗</span></a></li><li><a href="/workers/llms-full.txt" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Workers llms-full.txt ↗</span></a></li><li><a href="/llms.txt" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Cloudflare Docs llms.txt ↗</span></a></li><li><a href="/llms-full.txt" data-nb-sidebar-link target="_blank" rel="noopener"><span class="break-words">Cloudflare Docs llms-full.txt ↗</span></a></li></ul></div></div></div></li></ul></div><script type="module" src="/_astro/Sidebar.astro_astro_type_script_index_0_lang.C_-ZeN4J.js"></script></div></nav></div><div class="from-base pointer-events-none sticky bottom-0 h-8 bg-gradient-to-t to-transparent"></div></aside><script>
	(function () {
		try {
			if (!matchMedia("(min-width: 64rem)").matches) return;
			const sidebar = document.getElementById("desktop-sidebar");
			if (!sidebar) return;
			const content = sidebar.querySelector("[data-nb-sidebar]");
			if (!content) return;

			function setGroupOpen(group, open) {
				group.setAttribute("data-nb-default-open", open ? "true" : "false");
				const trigger = group.querySelector("[data-nb-collapsible-trigger]");
				const panel = group.querySelector("[data-nb-collapsible-content]");
				const state = open ? "open" : "closed";
				if (trigger) {
					trigger.setAttribute("data-nb-state", state);
					trigger.setAttribute("aria-expanded", String(open));
				}
				if (panel) panel.setAttribute("data-nb-state", state);
			}

			const raw = sessionStorage.getItem("sidebar-state");
			let state;
			if (raw) {
				state = JSON.parse(raw);
				if (state && content.dataset.nbSidebarHash === state.hash) {
					const groups = content.querySelectorAll("[data-nb-sidebar-group]");
					for (let i = 0; i < groups.length; i++) {
						if (typeof state.open[i] === "boolean") {
							setGroupOpen(groups[i], state.open[i]);
						}
					}
				}
			}

			// Active page's group must always be open, regardless of stored state
			const active = sidebar.querySelector("[aria-current='page']");
			if (active) {
				let d = active.closest("[data-nb-sidebar-group]");
				while (d) {
					setGroupOpen(d, true);
					d =
						d.parentElement &&
						d.parentElement.closest("[data-nb-sidebar-group]");
				}
			}

			// Restore scroll or center active item
			if (raw && state && state.scroll) {
				sidebar.scrollTop = state.scroll;
			} else if (active) {
				const sr = sidebar.getBoundingClientRect();
				const ar = active.getBoundingClientRect();
				sidebar.scrollTop += ar.top - sr.top - sr.height / 2 + ar.height / 2;
			}
		} catch {
			// Never let state restore break navigation.
		}
	})();
</script><div class="flex min-w-0 flex-1 flex-col"><div class="flex min-w-0 flex-1"><main id="main-content" class="min-w-0 flex-1"><div class="mx-auto px-4 pt-6 pb-12 lg:px-6 max-w-(--nb-content-max)"><nav aria-label="Breadcrumb" class="min-w-0 text-xs font-medium pb-2"><ol class="text-muted-foreground flex items-center"><li class="flex items-center flex-shrink-0"><a href="/" class="hover:text-foreground whitespace-nowrap transition-colors">Home</a></li><li class="flex items-center flex-shrink-0"><span class="text-muted-foreground/50 mx-1.5 flex-shrink-0">/</span><a href="/workers/" class="hover:text-foreground whitespace-nowrap transition-colors">Workers</a></li><li class="flex items-center min-w-0"><span class="text-muted-foreground/50 mx-1.5 flex-shrink-0">/</span><span class="text-foreground min-w-0 truncate" aria-current="page">Versions &amp; deployments</span></li></ol></nav><div id="_top"><div class="mt-6 flex flex-wrap items-center gap-3"><h1 class="text-foreground mb-0 leading-tight" style="font-size:var(--nb-h1-size);font-weight:var(--nb-h1-weight);letter-spacing:var(--nb-h1-tracking)">Versions &amp; deployments</h1></div><div data-nb-page-actions class="not-prose -ml-2 flex flex-wrap items-center gap-y-1 text-[0.8125rem] mt-3"><span data-nb-page-actions-updated class="text-muted-foreground inline-flex items-center gap-1.5 px-2 py-1 max-[900px]:hidden"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-3.5 w-3.5" data-icon="ph:clock-counter-clockwise"><path fill="currentColor" d="M136 80v43.47l36.12 21.67a8 8 0 0 1-8.24 13.72l-40-24A8 8 0 0 1 120 128V80a8 8 0 0 1 16 0m-8-48a95.44 95.44 0 0 0-67.92 28.15C52.81 67.51 46.35 74.59 40 82V64a8 8 0 0 0-16 0v40a8 8 0 0 0 8 8h40a8 8 0 0 0 0-16H49c7.15-8.42 14.27-16.35 22.39-24.57a80 80 0 1 1 1.66 114.75a8 8 0 1 0-11 11.64A96 96 0 1 0 128 32"/></svg>Last updated <time datetime="2026-07-03T13:51:53.000Z">Jul 3, 2026</time></span><span aria-hidden="true" class="select-none text-muted-foreground/40 max-[900px]:hidden">|</span><button type="button" data-nb-page-actions-copy class="inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-transparent px-2 py-1 text-muted-foreground no-underline transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2" aria-label="Copy Page as Markdown"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-3.5 w-3.5" data-nb-page-actions-copy-icon="true" data-icon="ph:copy"><path fill="currentColor" d="M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z"/></svg><svg width="1em" height="1em" viewBox="0 0 256 256" class="text-success hidden h-3.5 w-3.5" data-nb-page-actions-check-icon="true" data-icon="ph:check-circle"><path fill="currentColor" d="M173.66 98.34a8 8 0 0 1 0 11.32l-56 56a8 8 0 0 1-11.32 0l-24-24a8 8 0 0 1 11.32-11.32L112 148.69l50.34-50.35a8 8 0 0 1 11.32 0M232 128A104 104 0 1 1 128 24a104.11 104.11 0 0 1 104 104m-16 0a88 88 0 1 0-88 88a88.1 88.1 0 0 0 88-88"/></svg><span data-nb-page-actions-label aria-live="polite">Copy as Markdown</span></button><span aria-hidden="true" class="select-none text-muted-foreground/40">|</span><a href="index.md" target="_blank" rel="noopener noreferrer" class="inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-transparent px-2 py-1 text-muted-foreground no-underline transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2" data-nb-page-actions-view aria-label="View Page as Markdown"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-3.5 w-3.5" data-icon="ph:markdown-logo"><path fill="currentColor" d="M232 48H24A16 16 0 0 0 8 64v128a16 16 0 0 0 16 16h208a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16m0 144H24V64h208zm-104-88v48a8 8 0 0 1-16 0v-28.69l-18.34 18.35a8 8 0 0 1-11.32 0L64 123.31V152a8 8 0 0 1-16 0v-48a8 8 0 0 1 13.66-5.66L88 124.69l26.34-26.35A8 8 0 0 1 128 104m77.66 18.34a8 8 0 0 1 0 11.32l-24 24a8 8 0 0 1-11.32 0l-24-24a8 8 0 0 1 11.32-11.32L168 132.69V104a8 8 0 0 1 16 0v28.69l10.34-10.35a8 8 0 0 1 11.32 0"/></svg>View as Markdown</a><span aria-hidden="true" class="select-none text-muted-foreground/40 max-[700px]:hidden">|</span><a href="/agent-setup/" target="_blank" rel="noopener noreferrer" class="inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-transparent px-2 py-1 text-muted-foreground no-underline transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 max-[700px]:hidden" data-nb-page-actions-agent aria-label="Setup your agent to build on Cloudflare"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-3.5 w-3.5" data-icon="ph:robot"><path fill="currentColor" d="M200 48h-64V16a8 8 0 0 0-16 0v32H56a32 32 0 0 0-32 32v112a32 32 0 0 0 32 32h144a32 32 0 0 0 32-32V80a32 32 0 0 0-32-32m16 144a16 16 0 0 1-16 16H56a16 16 0 0 1-16-16V80a16 16 0 0 1 16-16h144a16 16 0 0 1 16 16Zm-52-56H92a28 28 0 0 0 0 56h72a28 28 0 0 0 0-56m-24 16v24h-24v-24Zm-60 12a12 12 0 0 1 12-12h8v24h-8a12 12 0 0 1-12-12m84 12h-8v-24h8a12 12 0 0 1 0 24m-92-68a12 12 0 1 1 12 12a12 12 0 0 1-12-12m88 0a12 12 0 1 1 12 12a12 12 0 0 1-12-12"/></svg>Agent setup</a></div><script type="module" src="/_astro/PageActions.astro_astro_type_script_index_0_lang.CSwLBMJT.js"></script><div class="border-border bg-background/95 supports-[backdrop-filter]:bg-background/80 sticky top-14 z-20 -mx-4 mt-3 border-y px-4 py-2 backdrop-blur lg:-mx-6 lg:px-6 xl:hidden"><nav data-nb-mobile-toc aria-label="On this page" class="relative"><select data-nb-mobile-toc-select aria-label="Jump to section" class="border-border bg-background text-foreground hover:border-foreground/20 focus-visible:ring-primary/50 w-full appearance-none rounded-md border py-2.5 pr-9 pl-3 text-sm font-medium transition-colors focus-visible:ring-2 focus-visible:outline-none"><option value="_top">Overview</option><option value="versions">Versions</option><option value="deployments">Deployments</option><option value="default-behavior">Default behavior</option><option value="view-versions-and-deployments">View versions and deployments</option><option value="via-wrangler"> Via Wrangler</option><option value="via-the-cloudflare-dashboard"> Via the Cloudflare dashboard</option><option value="next-steps">Next steps</option></select><svg width="1em" height="1em" viewBox="0 0 256 256" aria-hidden="true" class="text-muted-foreground pointer-events-none absolute top-1/2 right-3 h-4 w-4 -translate-y-1/2" data-icon="ph:caret-down"><path fill="currentColor" d="m213.66 101.66l-80 80a8 8 0 0 1-11.32 0l-80-80a8 8 0 0 1 11.32-11.32L128 164.69l74.34-74.35a8 8 0 0 1 11.32 11.32"/></svg></nav><script type="module" src="/_astro/MobileTOC.astro_astro_type_script_index_0_lang.GkAFZ1Wq.js"></script></div><div class="xl:bg-border mt-3 mb-6 h-px w-full bg-transparent" role="none"></div><article class="docs-content max-w-none">
<p>Every time you change your Worker's code or configuration, Workers creates a <strong>version</strong>. A <strong>deployment</strong> determines which version(s) are actively serving traffic.</p>
<img src="/cdn-cgi/image/onerror=redirect,width=1338,height=878,format=webp/_astro/versions-and-deployments.Dnwtp7bX.png" alt="Versions and Deployments" loading="lazy" decoding="async" width="1338" height="878">
<div tabindex="-1" class="heading-wrapper level-h2"><h2 id="versions">Versions</h2><a class="anchor-link" href="#versions"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div>
<p>A version captures the complete state of your Worker at a point in time: its <a href="/workers/wrangler/bundling/">bundled code</a>, <a href="/workers/static-assets/">static assets</a>, <a href="/workers/runtime-apis/bindings/">bindings</a>, and <a href="/workers/configuration/compatibility-dates/">compatibility settings</a>. Each version has a unique ID and tracks who created it, when, and from where.</p>
<p>You can optionally attach a message and tag to a version when you upload it.</p>
<aside role="note" aria-label="Note" class="aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4" style="--_c: var(--nb-info); --_t: var(--nb-info-muted);" data-astro-cid-znle5jil><span class="flex h-[1.375em] shrink-0 items-center" aria-hidden="true" data-astro-cid-znle5jil><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-[1em] w-[1em]" data-astro-cid-znle5jil="true" data-icon="ph:info"><path fill="currentColor" d="M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12"/></svg></span><div class="flex min-w-0 flex-1 flex-col gap-0.5" data-astro-cid-znle5jil><p class="m-0 text-base leading-snug font-semibold" data-astro-cid-znle5jil>Note</p><div class="aside-card-body text-sm leading-normal" data-astro-cid-znle5jil><p>State changes for associated <a href="/workers/platform/storage-options/">storage resources</a> such as <a href="/kv/">KV</a>, <a href="/r2/">R2</a>, <a href="/durable-objects/">Durable Objects</a>, and <a href="/d1/">D1</a> are not tracked with versions.</p></div></div></aside>
<div tabindex="-1" class="heading-wrapper level-h2"><h2 id="deployments">Deployments</h2><a class="anchor-link" href="#deployments"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div>
<p>A deployment determines which version(s) of your Worker are actively serving traffic. A deployment can reference one version (serving 100% of traffic) or two versions (with traffic split between them during a <a href="/workers/versions-and-deployments/gradual-deployments/">gradual deployment</a>).</p>
<p>Each deployment tracks who created it, when, and which version(s) it includes.</p>
<div tabindex="-1" class="heading-wrapper level-h2"><h2 id="default-behavior">Default behavior</h2><a class="anchor-link" href="#default-behavior"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div>
<p>By default, these two concepts are coupled together - when you run <a href="/workers/wrangler/commands/workers/#deploy"><code>wrangler deploy</code></a>, Workers creates a new version and immediately deploys it to 100% of traffic in a single step.</p>
<p>You can decouple them so that uploading a version and deploying it are independent actions. This gives you control over when new code goes live, and lets you use strategies like <a href="/workers/versions-and-deployments/gradual-deployments/">gradual deployments</a> or manual promotion. Refer to <a href="/workers/versions-and-deployments/deployment-management/">Deployment management</a> for details.</p>
<div tabindex="-1" class="heading-wrapper level-h2"><h2 id="view-versions-and-deployments">View versions and deployments</h2><a class="anchor-link" href="#view-versions-and-deployments"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div>
<div tabindex="-1" class="heading-wrapper level-h3"><h3 id="via-wrangler">Via Wrangler</h3><a class="anchor-link" href="#via-wrangler"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div>
<p>Wrangler allows you to view the 100 most recent versions and deployments. Refer to the <a href="/workers/wrangler/commands/workers/#versions-list"><code>versions list</code></a> and <a href="/workers/wrangler/commands/workers/#deployments-list"><code>deployments list</code></a> documentation for the commands.</p>
<div tabindex="-1" class="heading-wrapper level-h3"><h3 id="via-the-cloudflare-dashboard">Via the Cloudflare dashboard</h3><a class="anchor-link" href="#via-the-cloudflare-dashboard"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div>
<ol><li>
<p>In the Cloudflare dashboard, go to the <strong>Workers &amp; Pages</strong> page.</p>
<a href="https://dash.cloudflare.com/?to=/:account/workers-and-pages" data-nb-button class="group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm" target="_blank">Go to <strong>Workers &amp; Pages</strong>&nbsp;&#8599;</a></li>
<li>
<p>Select your Worker &gt; <strong>Deployments</strong>.</p>
</li>
</ol>
<div tabindex="-1" class="heading-wrapper level-h2"><h2 id="next-steps">Next steps</h2><a class="anchor-link" href="#next-steps"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div>
<ul>
<li><a href="/workers/versions-and-deployments/deployment-management/">Deployment management</a> - Upload versions without deploying them and control when they go live</li>
<li><a href="/workers/versions-and-deployments/preview-urls/">Preview URLs</a> - Test new versions before deploying them to production</li>
<li><a href="/workers/versions-and-deployments/gradual-deployments/">Gradual deployments</a> - Split traffic between two versions using percentage-based routing</li>
<li><a href="/workers/versions-and-deployments/gradual-deployments/version-affinity/">Version affinity</a> - Consistently route users to the same version across page loads during a gradual deployment</li>
<li><a href="/workers/versions-and-deployments/version-overrides/">Version overrides</a> - Send a request to a specific version by ID for smoke testing and pinning between Workers</li>
<li><a href="/workers/versions-and-deployments/rollbacks/">Rollbacks</a> - Revert to a previously deployed version</li>
</ul></article></div><nav aria-label="Pagination" class="border-border mt-12 flex items-center justify-between border-t pt-6"><a href="/workers/configuration/secrets/" class="group text-muted-foreground hover:text-foreground flex items-center gap-2 text-sm transition-colors"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-4 w-4 transition-transform group-hover:-translate-x-0.5" data-icon="ph:caret-left"><path fill="currentColor" d="M165.66 202.34a8 8 0 0 1-11.32 11.32l-80-80a8 8 0 0 1 0-11.32l80-80a8 8 0 0 1 11.32 11.32L91.31 128Z"/></svg><span><span class="text-muted-foreground block text-xs">Previous</span><span class="text-foreground font-medium">Secrets</span></span></a><a href="/workers/versions-and-deployments/deployment-management/" class="group text-muted-foreground hover:text-foreground flex items-center gap-2 text-right text-sm transition-colors"><span><span class="text-muted-foreground block text-xs">Next</span><span class="text-foreground font-medium">Deployment management</span></span><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-4 w-4 transition-transform group-hover:translate-x-0.5" data-icon="ph:caret-right"><path fill="currentColor" d="m181.66 133.66l-80 80a8 8 0 0 1-11.32-11.32L164.69 128L90.34 53.66a8 8 0 0 1 11.32-11.32l80 80a8 8 0 0 1 0 11.32"/></svg></a></nav><div class="mt-10 flex flex-col gap-5 xl:hidden"><style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value=="object"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};"requestIdleCallback"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event("astro:idle"));})();</script><script>(()=>{var g=Object.defineProperty;var w=(a,s,c)=>s in a?g(a,s,{enumerable:!0,configurable:!0,writable:!0,value:c}):a[s]=c;var l=(a,s,c)=>w(a,typeof s!="symbol"?s+"":s,c);var E=new Set(["__proto__","constructor","prototype"]);{let a={0:t=>y(t),1:t=>c(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(c(t)),5:t=>new Set(c(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>Number.POSITIVE_INFINITY*t},s=t=>{let[p,e]=t;return p in a?a[p](e):void 0},c=t=>t.map(s),y=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([p,e])=>[p,s(e)]));class f extends HTMLElement{constructor(){super(...arguments);l(this,"Component");l(this,"hydrator");l(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let r=this.querySelectorAll("astro-slot"),n={},d=this.querySelectorAll("template[data-astro-template]");for(let o of d){let i=o.closest(this.tagName);i!=null&&i.isSameNode(this)&&(n[o.getAttribute("data-astro-template")||"default"]=o.innerHTML,o.remove())}for(let o of r){let i=o.closest(this.tagName);i!=null&&i.isSameNode(this)&&(n[o.getAttribute("name")||"default"]=o.innerHTML)}let u;try{u=this.hasAttribute("props")?y(JSON.parse(this.getAttribute("props"))):{}}catch(o){let i=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(i+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${i}`,this.getAttribute("props"),o),o}let h;await this.hydrator(this)(this.Component,u,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});l(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),r.disconnect(),this.childrenConnectedCallback()},r=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});r.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}getRetryImportUrl(e){let r=new URL(e,document.baseURI);return r.searchParams.set("astro-retry",Date.now().toString()),r.toString()}async importWithRetry(e){try{return await import(e)}catch(r){return await new Promise(n=>setTimeout(n,1e3)),import(this.getRetryImportUrl(e))}}handleHydrationError(e){let r=this.getAttribute("component-url"),n=new CustomEvent("astro:hydration-error",{cancelable:!0,bubbles:!0,composed:!0,detail:{error:e,componentUrl:r}});this.dispatchEvent(n)&&console.error(`[astro-island] Error hydrating ${r}`,e)}async start(){let e=JSON.parse(this.getAttribute("opts")),r=this.getAttribute("client");if(Astro[r]===void 0){window.addEventListener(`astro:${r}`,()=>this.start(),{once:!0});return}try{await Astro[r](async()=>{let n=this.getAttribute("renderer-url");try{let[d,{default:u}]=await Promise.all([this.importWithRetry(this.getAttribute("component-url")),n?this.importWithRetry(n):Promise.resolve({default:()=>()=>{}})]),h=this.getAttribute("component-export")||"default";if(h.includes(".")){this.Component=d;for(let m of h.split(".")){if(E.has(m)||!this.Component||typeof this.Component!="object"&&typeof this.Component!="function"||!Object.hasOwn(this.Component,m))throw new Error(`Invalid component export path: ${h}`);this.Component=this.Component[m]}}else{if(E.has(h))throw new Error(`Invalid component export path: ${h}`);this.Component=d[h]}return this.hydrator=u,this.hydrate}catch(d){return this.handleHydrationError(d),()=>{}}},e,this)}catch(n){this.handleHydrationError(n)}}attributeChangedCallback(){this.hydrate()}}l(f,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",f)}})();</script><astro-island uid="Z1D1dIe" prefix="r4" component-url="/_astro/FeedbackPrompt.BxkL36rV.js" component-export="default" renderer-url="/_astro/client.Cv6qbuNH.js" props="{&quot;id&quot;:[0,&quot;feedback-form-content&quot;]}" ssr client="idle" opts="{&quot;name&quot;:&quot;FeedbackPrompt&quot;,&quot;value&quot;:true}" await-children><div id="feedback-form-content"><p class="text-muted-foreground m-0 text-[11px] font-semibold tracking-widest uppercase">Was this helpful?</p><div class="mt-3 flex gap-2"><button class="border-border bg-background text-foreground hover:bg-accent hover:text-foreground inline-flex h-8 cursor-pointer items-center gap-1.5 rounded-lg border px-3 text-[13px] font-medium shadow-none transition-colors duration-150"><span aria-hidden="true" class="size-[18px] opacity-70"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M234,80.12A24,24,0,0,0,216,72H160V56a40,40,0,0,0-40-40,8,8,0,0,0-7.16,4.42L75.06,96H32a16,16,0,0,0-16,16v88a16,16,0,0,0,16,16H204a24,24,0,0,0,23.82-21l12-96A24,24,0,0,0,234,80.12ZM32,112H72v88H32ZM223.94,97l-12,96a8,8,0,0,1-7.94,7H88V105.89l36.71-73.43A24,24,0,0,1,144,56V80a8,8,0,0,0,8,8h64a8,8,0,0,1,7.94,9Z"/></svg></span><span>Yes</span></button><button class="border-border bg-background text-foreground hover:bg-accent hover:text-foreground inline-flex h-8 cursor-pointer items-center gap-1.5 rounded-lg border px-3 text-[13px] font-medium shadow-none transition-colors duration-150"><span aria-hidden="true" class="size-[18px] opacity-70"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M239.82,157l-12-96A24,24,0,0,0,204,40H32A16,16,0,0,0,16,56v88a16,16,0,0,0,16,16H75.06l37.78,75.58A8,8,0,0,0,120,240a40,40,0,0,0,40-40V184h56a24,24,0,0,0,23.82-27ZM72,144H32V56H72Zm150,21.29a7.88,7.88,0,0,1-6,2.71H152a8,8,0,0,0-8,8v24a24,24,0,0,1-19.29,23.54L88,150.11V56H204a8,8,0,0,1,7.94,7l12,96A7.87,7.87,0,0,1,222,165.29Z"/></svg></span><span>No</span></button></div></div><!--astro:end--></astro-island><nav aria-label="Page actions" class="flex flex-col gap-3"><a href="https://github.com/cloudflare/cloudflare-docs/edit/production/src/content/docs/workers/versions-and-deployments/index.mdx" target="_blank" rel="noopener" class="group inline-flex items-center gap-2 text-[13px] text-muted-foreground no-underline transition-colors hover:text-foreground"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-3.5 w-3.5" aria-hidden="true" data-icon="ph:pencil-simple"><path fill="currentColor" d="m227.31 73.37l-44.68-44.69a16 16 0 0 0-22.63 0L36.69 152A15.86 15.86 0 0 0 32 163.31V208a16 16 0 0 0 16 16h44.69a15.86 15.86 0 0 0 11.31-4.69L227.31 96a16 16 0 0 0 0-22.63M92.69 208H48v-44.69l88-88L180.69 120ZM192 108.68L147.31 64l24-24L216 84.68Z"/></svg><span>Edit page</span></a><a href="https://github.com/cloudflare/cloudflare-docs/issues/new/choose" target="_blank" rel="noopener" class="group inline-flex items-center gap-2 text-[13px] text-muted-foreground no-underline transition-colors hover:text-foreground"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-3.5 w-3.5" aria-hidden="true" data-icon="ph:github-logo"><path fill="currentColor" d="M208.31 75.68A59.78 59.78 0 0 0 202.93 28a8 8 0 0 0-6.93-4a59.75 59.75 0 0 0-48 24h-24a59.75 59.75 0 0 0-48-24a8 8 0 0 0-6.93 4a59.78 59.78 0 0 0-5.38 47.68A58.14 58.14 0 0 0 56 104v8a56.06 56.06 0 0 0 48.44 55.47A39.8 39.8 0 0 0 96 192v8H72a24 24 0 0 1-24-24a40 40 0 0 0-40-40a8 8 0 0 0 0 16a24 24 0 0 1 24 24a40 40 0 0 0 40 40h24v16a8 8 0 0 0 16 0v-40a24 24 0 0 1 48 0v40a8 8 0 0 0 16 0v-40a39.8 39.8 0 0 0-8.44-24.53A56.06 56.06 0 0 0 216 112v-8a58.14 58.14 0 0 0-7.69-28.32M200 112a40 40 0 0 1-40 40h-48a40 40 0 0 1-40-40v-8a41.74 41.74 0 0 1 6.9-22.48a8 8 0 0 0 1.1-7.69a43.8 43.8 0 0 1 .79-33.58a43.88 43.88 0 0 1 32.32 20.06a8 8 0 0 0 6.71 3.69h32.35a8 8 0 0 0 6.74-3.69a43.87 43.87 0 0 1 32.32-20.06a43.8 43.8 0 0 1 .77 33.58a8.09 8.09 0 0 0 1 7.65a41.7 41.7 0 0 1 7 22.52Z"/></svg><span>Report issue</span></a></nav></div></div></main><aside data-nb-toc-scroll-host class="sticky top-14 hidden max-h-[calc(100vh-3.5rem)] w-(--nb-toc-width) shrink-0 overflow-y-auto xl:block"><div class="pt-6 pr-6 pb-8 pl-8"><div data-nb-toc class="toc-container"><h2 id="nb-on-this-page" class="text-foreground mb-2 text-sm font-semibold">On this page</h2><nav aria-labelledby="nb-on-this-page" class="relative"><svg data-nb-toc-rail aria-hidden="true" class="pointer-events-none absolute inset-0 h-full w-full overflow-visible" fill="none"><path data-nb-toc-rail-active class="stroke-primary opacity-0 transition-[stroke-dasharray,stroke-dashoffset,opacity] duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] data-[initial=true]:transition-opacity data-[ready=true]:opacity-100 motion-reduce:transition-opacity" stroke-width="2" stroke-linecap="round"></path></svg><ul class="m-0 flex list-none flex-col p-0"><li><a href="#_top" data-nb-toc-link data-nb-slug="_top" class="border-border text-muted-foreground hover:border-foreground/20 hover:text-foreground aria-[current=true]:text-foreground block border-l-2 py-1.5 pl-5 text-[0.8125rem] leading-snug no-underline transition-colors duration-150" style="margin-left: calc(0rem - 0.125rem);">Overview</a></li><li><a href="#versions" data-nb-toc-link data-nb-slug="versions" class="border-border text-muted-foreground hover:border-foreground/20 hover:text-foreground aria-[current=true]:text-foreground block border-l-2 py-1.5 pl-5 text-[0.8125rem] leading-snug no-underline transition-colors duration-150" style="margin-left: calc(0rem - 0.125rem);">Versions</a></li><li><a href="#deployments" data-nb-toc-link data-nb-slug="deployments" class="border-border text-muted-foreground hover:border-foreground/20 hover:text-foreground aria-[current=true]:text-foreground block border-l-2 py-1.5 pl-5 text-[0.8125rem] leading-snug no-underline transition-colors duration-150" style="margin-left: calc(0rem - 0.125rem);">Deployments</a></li><li><a href="#default-behavior" data-nb-toc-link data-nb-slug="default-behavior" class="border-border text-muted-foreground hover:border-foreground/20 hover:text-foreground aria-[current=true]:text-foreground block border-l-2 py-1.5 pl-5 text-[0.8125rem] leading-snug no-underline transition-colors duration-150" style="margin-left: calc(0rem - 0.125rem);">Default behavior</a></li><li><a href="#view-versions-and-deployments" data-nb-toc-link data-nb-slug="view-versions-and-deployments" class="border-border text-muted-foreground hover:border-foreground/20 hover:text-foreground aria-[current=true]:text-foreground block border-l-2 py-1.5 pl-5 text-[0.8125rem] leading-snug no-underline transition-colors duration-150" style="margin-left: calc(0rem - 0.125rem);">View versions and deployments</a></li><li><svg aria-hidden="true" class="text-border block h-2" style="margin-left: calc(0rem - 0.0625rem); width: 1rem;" viewBox="0 0 1 1" preserveAspectRatio="none" fill="none" stroke="currentColor" stroke-width="2" overflow="visible"><path d="M 0 0 C 0 0.5, 1 0.5, 1 1" vector-effect="non-scaling-stroke"></path></svg><a href="#via-wrangler" data-nb-toc-link data-nb-slug="via-wrangler" class="border-border text-muted-foreground hover:border-foreground/20 hover:text-foreground aria-[current=true]:text-foreground block border-l-2 py-1.5 pl-5 text-[0.8125rem] leading-snug no-underline transition-colors duration-150" style="margin-left: calc(1rem - 0.125rem);">Via Wrangler</a></li><li><a href="#via-the-cloudflare-dashboard" data-nb-toc-link data-nb-slug="via-the-cloudflare-dashboard" class="border-border text-muted-foreground hover:border-foreground/20 hover:text-foreground aria-[current=true]:text-foreground block border-l-2 py-1.5 pl-5 text-[0.8125rem] leading-snug no-underline transition-colors duration-150" style="margin-left: calc(1rem - 0.125rem);">Via the Cloudflare dashboard</a><svg aria-hidden="true" class="text-border block h-2" style="margin-left: calc(0rem - 0.0625rem); width: 1rem;" viewBox="0 0 1 1" preserveAspectRatio="none" fill="none" stroke="currentColor" stroke-width="2" overflow="visible"><path d="M 1 0 C 1 0.5, 0 0.5, 0 1" vector-effect="non-scaling-stroke"></path></svg></li><li><a href="#next-steps" data-nb-toc-link data-nb-slug="next-steps" class="border-border text-muted-foreground hover:border-foreground/20 hover:text-foreground aria-[current=true]:text-foreground block border-l-2 py-1.5 pl-5 text-[0.8125rem] leading-snug no-underline transition-colors duration-150" style="margin-left: calc(0rem - 0.125rem);">Next steps</a></li></ul></nav></div><script type="module" src="/_astro/TOC.astro_astro_type_script_index_0_lang.BcrJgROZ.js"></script><div class="border-border mt-8 flex flex-col gap-5 border-t pt-6"><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><astro-island uid="Z2j5UfC" component-url="/_astro/FeedbackPrompt.BxkL36rV.js" component-export="default" renderer-url="/_astro/client.Cv6qbuNH.js" props="{&quot;id&quot;:[0,&quot;feedback-form-toc&quot;]}" ssr client="only" opts="{&quot;name&quot;:&quot;FeedbackPrompt&quot;,&quot;value&quot;:&quot;react&quot;}"></astro-island><nav aria-label="Page actions" class="flex flex-col gap-3"><a href="https://github.com/cloudflare/cloudflare-docs/edit/production/src/content/docs/workers/versions-and-deployments/index.mdx" target="_blank" rel="noopener" class="group inline-flex items-center gap-2 text-[13px] text-muted-foreground no-underline transition-colors hover:text-foreground"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-3.5 w-3.5" aria-hidden="true" data-icon="ph:pencil-simple"><path fill="currentColor" d="m227.31 73.37l-44.68-44.69a16 16 0 0 0-22.63 0L36.69 152A15.86 15.86 0 0 0 32 163.31V208a16 16 0 0 0 16 16h44.69a15.86 15.86 0 0 0 11.31-4.69L227.31 96a16 16 0 0 0 0-22.63M92.69 208H48v-44.69l88-88L180.69 120ZM192 108.68L147.31 64l24-24L216 84.68Z"/></svg><span>Edit page</span></a><a href="https://github.com/cloudflare/cloudflare-docs/issues/new/choose" target="_blank" rel="noopener" class="group inline-flex items-center gap-2 text-[13px] text-muted-foreground no-underline transition-colors hover:text-foreground"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-3.5 w-3.5" aria-hidden="true" data-icon="ph:github-logo"><path fill="currentColor" d="M208.31 75.68A59.78 59.78 0 0 0 202.93 28a8 8 0 0 0-6.93-4a59.75 59.75 0 0 0-48 24h-24a59.75 59.75 0 0 0-48-24a8 8 0 0 0-6.93 4a59.78 59.78 0 0 0-5.38 47.68A58.14 58.14 0 0 0 56 104v8a56.06 56.06 0 0 0 48.44 55.47A39.8 39.8 0 0 0 96 192v8H72a24 24 0 0 1-24-24a40 40 0 0 0-40-40a8 8 0 0 0 0 16a24 24 0 0 1 24 24a40 40 0 0 0 40 40h24v16a8 8 0 0 0 16 0v-40a24 24 0 0 1 48 0v40a8 8 0 0 0 16 0v-40a39.8 39.8 0 0 0-8.44-24.53A56.06 56.06 0 0 0 216 112v-8a58.14 58.14 0 0 0-7.69-28.32M200 112a40 40 0 0 1-40 40h-48a40 40 0 0 1-40-40v-8a41.74 41.74 0 0 1 6.9-22.48a8 8 0 0 0 1.1-7.69a43.8 43.8 0 0 1 .79-33.58a43.88 43.88 0 0 1 32.32 20.06a8 8 0 0 0 6.71 3.69h32.35a8 8 0 0 0 6.74-3.69a43.87 43.87 0 0 1 32.32-20.06a43.8 43.8 0 0 1 .77 33.58a8.09 8.09 0 0 0 1 7.65a41.7 41.7 0 0 1 7 22.52Z"/></svg><span>Report issue</span></a></nav></div></div></aside></div></div></div><footer class="nb-footer z-10 w-full overflow-x-clip px-px" data-astro-cid-jo6i4kqk><svg class="block h-px w-full relative left-1/2 w-screen -translate-x-1/2" preserveAspectRatio="none" aria-hidden="true"><line x1="0" y1="0.5" x2="100%" y2="0.5" stroke="var(--nb-border)" stroke-width="1" stroke-dasharray="16,16"></line></svg><div class="footer-scroll-host bg-background-100 px-section relative mx-auto flex w-full flex-col justify-between overflow-visible bg-linear-to-b pt-8 select-none [@media(max-height:924px)]:min-h-screen" data-astro-cid-jo6i4kqk><div class="pointer-events-none relative mx-auto flex h-full w-full max-w-[1480px] flex-col items-start gap-8 pb-8 lg:justify-between" data-astro-cid-jo6i4kqk><div class="flex justify-start lg:block lg:justify-center" data-astro-cid-jo6i4kqk><div class="flex flex-col items-start justify-start transition-opacity duration-200 ease-out lg:flex-row" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 719 59" fill="none" class="footer-cf-wordmark text-foreground-200 h-[12px] w-auto" aria-label="Cloudflare wordmark" role="img" data-astro-cid-jo6i4kqk="true"><path d="M77.1016 1.09961H92.7015V43.5996H119.802V57.1996H77.1016V1.09961Z" fill="currentColor"></path><path d="M135.898 29.3V29.2C135.898 13.1 148.898 0 166.198 0C183.498 0 196.298 12.9 196.298 29V29.2C196.298 45.3 183.298 58.4 165.998 58.4C148.798 58.3 135.898 45.4 135.898 29.3ZM180.498 29.3V29.2C180.498 21.1 174.698 14.1 166.098 14.1C157.598 14.1 151.898 21 151.898 29.1V29.3C151.898 37.4 157.698 44.4 166.198 44.4C174.798 44.3 180.498 37.4 180.498 29.3Z" fill="currentColor"></path><path d="M215.398 32.5996V1.09961H231.198V32.2996C231.198 40.3996 235.298 44.1996 241.498 44.1996C247.698 44.1996 251.798 40.4996 251.798 32.6996V1.09961H267.598V32.1996C267.598 50.2996 257.298 58.1996 241.298 58.1996C225.398 58.2996 215.398 50.1996 215.398 32.5996Z" fill="currentColor"></path><path d="M291.398 1.09961H313.098C333.098 1.09961 344.798 12.5996 344.798 28.7996V28.9996C344.798 45.1996 332.998 57.1996 312.798 57.1996H291.498L291.398 1.09961ZM313.298 43.3996C322.598 43.3996 328.798 38.2996 328.798 29.1996V28.9996C328.798 19.9996 322.598 14.7996 313.298 14.7996H306.998V43.2996L313.298 43.3996Z" fill="currentColor"></path><path d="M367.297 1.09961H412.197V14.7996H382.797V24.2996H409.397V37.1996H382.797V57.1996H367.297V1.09961Z" fill="currentColor"></path><path d="M433.797 1.09961H449.297V43.5996H476.497V57.1996H433.797V1.09961Z" fill="currentColor"></path><path d="M517.097 0.699219H532.097L555.997 57.1992H539.297L535.197 47.1992H513.597L509.597 57.1992H493.297L517.097 0.699219ZM530.797 35.0992L524.597 19.1992L518.297 35.0992H530.797Z" fill="currentColor"></path><path d="M576 1.09961H602.5C611.1 1.09961 617 3.29962 620.8 7.19962C624.1 10.3996 625.8 14.6996 625.8 20.2996V20.4996C625.8 29.0996 621.2 34.7996 614.3 37.6996L627.7 57.2996H609.7L598.4 40.2996H591.6V57.2996H576.1L576 1.09961ZM601.8 28.0996C607.1 28.0996 610.1 25.4996 610.1 21.4996V21.1996C610.1 16.7996 606.9 14.5996 601.7 14.5996H591.5V28.0996H601.8Z" fill="currentColor"></path><path d="M648.203 1.09961H693.303V14.3996H663.603V22.7996H690.503V35.0996H663.603V43.9996H693.703V57.1996H648.203V1.09961Z" fill="currentColor"></path><path d="M43.1 35.9C40.9 40.8 36.3 44.3 30.3 44.3C21.8 44.3 16 37.2 16 29.2V29C16 20.9 21.7 14 30.2 14C36.6 14 41.5 17.9 43.5 23.3H59.9C57.3 9.9 45.5 0 30.3 0C13 0 0 13.1 0 29.2V29.4C0 45.5 12.8 58.4 30.1 58.4C44.9 58.4 56.5 48.8 59.5 36L43.1 35.9Z" fill="currentColor"></path></svg></div></div><div class="grid w-full grid-cols-1 justify-start gap-8 lg:ml-auto lg:w-auto lg:grid-cols-4 lg:items-stretch" data-astro-cid-jo6i4kqk><div class="grid w-full grid-cols-2 gap-8 lg:h-full lg:max-w-[264px] lg:grid-cols-1 lg:grid-rows-2 lg:gap-y-10" data-astro-cid-jo6i4kqk><div class="flex w-full flex-col lg:min-h-0" data-astro-cid-jo6i4kqk><div class="flex w-full pb-2 lg:pb-3" data-astro-cid-jo6i4kqk><span class="text-tertiary hover:text-foreground-200/70 text-[13px] leading-none font-medium transition-colors duration-200 max-lg:text-xs" data-astro-cid-jo6i4kqk>Getting started</span></div><a href="https://www.cloudflare.com/plans/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Plans</a><a href="https://www.cloudflare.com/resource/contact-enterprise-sales/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Contact sales</a><a href="https://www.cloudflare.com/partners/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Partners</a><a href="https://partnerlocator.cloudflare.com/dashboard" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Find a partner</a><a href="https://www.cloudflare.com/startups/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Startups</a><a href="https://www.cloudflare.com/under-attack-hotline/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Under attack?</a><a href="https://domains.cloudflare.com/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Domain name search</a></div><div class="flex w-full flex-col lg:min-h-0" data-astro-cid-jo6i4kqk><div class="flex w-full pb-2 lg:pb-3" data-astro-cid-jo6i4kqk><span class="text-tertiary hover:text-foreground-200/70 text-[13px] leading-none font-medium transition-colors duration-200 max-lg:text-xs" data-astro-cid-jo6i4kqk>Company</span></div><a href="https://www.cloudflare.com/about/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>About</a><a href="https://www.cloudflare.com/careers/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Careers</a><a href="https://cloudflare.net/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Investors</a><a href="https://www.cloudflare.com/press/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Press</a><a href="https://www.cloudflare.com/press/press-kit/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Press kit</a><a href="https://www.cloudflare.com/network/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Global network</a></div></div><div class="grid w-full grid-cols-2 gap-8 lg:h-full lg:max-w-[264px] lg:grid-cols-1 lg:grid-rows-2 lg:gap-y-10" data-astro-cid-jo6i4kqk><div class="flex w-full flex-col lg:min-h-0" data-astro-cid-jo6i4kqk><div class="flex w-full pb-2 lg:pb-3" data-astro-cid-jo6i4kqk><span class="text-tertiary hover:text-foreground-200/70 text-[13px] leading-none font-medium transition-colors duration-200 max-lg:text-xs" data-astro-cid-jo6i4kqk>Public interest</span></div><a href="https://www.cloudflare.com/galileo/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Project Galileo</a><a href="https://www.cloudflare.com/athenian/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Athenian Project</a><a href="https://www.cloudflare.com/campaigns/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Cloudflare for Campaigns</a><a href="https://www.cloudflare.com/fair-shot/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Project Fairshot</a><a href="https://www.cloudflare.com/impact/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Impact/ESG</a></div><div class="flex w-full flex-col lg:min-h-0" data-astro-cid-jo6i4kqk><div class="flex w-full pb-2 lg:pb-3" data-astro-cid-jo6i4kqk><span class="text-tertiary hover:text-foreground-200/70 text-[13px] leading-none font-medium transition-colors duration-200 max-lg:text-xs" data-astro-cid-jo6i4kqk>Compliance</span></div><a href="https://www.cloudflare.com/trust-hub/compliance-resources/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Compliance resources</a><a href="https://www.cloudflare.com/trust-hub/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Trust Hub</a><a href="https://www.cloudflare.com/trust-hub/gdpr/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Data Protection</a><a href="https://www.cloudflare.com/trust-hub/responsible-ai/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Responsible AI</a><a href="https://www.cloudflare.com/transparency/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Transparency report</a><a href="https://www.cloudflare.com/trust-hub/abuse-approach/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Report abuse</a></div></div><div class="grid w-full grid-cols-2 gap-8 lg:h-full lg:max-w-[264px] lg:grid-cols-1 lg:grid-rows-2 lg:gap-y-10" data-astro-cid-jo6i4kqk><div class="flex w-full flex-col lg:min-h-0" data-astro-cid-jo6i4kqk><div class="flex w-full pb-2 lg:pb-3" data-astro-cid-jo6i4kqk><span class="text-tertiary hover:text-foreground-200/70 text-[13px] leading-none font-medium transition-colors duration-200 max-lg:text-xs" data-astro-cid-jo6i4kqk>Resources</span></div><a href="https://www.cloudflare.com/resource/app-innovation-report/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>App innovation report</a><a href="https://radar.cloudflare.com/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Cloudflare Radar</a><a href="https://www.cloudflare.com/case-studies/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Case studies</a><a href="https://www.cloudflarestatus.com/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Status</a><a href="https://support.cloudflare.com/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Support</a><a href="https://www.cloudflare.com/events/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Events</a><a href="https://blog.cloudflare.com/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Blog</a></div><div class="flex w-full flex-col lg:min-h-0" data-astro-cid-jo6i4kqk><div class="flex w-full pb-2 lg:pb-3" data-astro-cid-jo6i4kqk><span class="text-tertiary hover:text-foreground-200/70 text-[13px] leading-none font-medium transition-colors duration-200 max-lg:text-xs" data-astro-cid-jo6i4kqk>Developers</span></div><a href="https://developers.cloudflare.com/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Documentation</a><a href="https://www.cloudflare.com/learning/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Learning center</a><a href="https://community.cloudflare.com/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Community</a></div></div><div class="grid w-full grid-cols-2 gap-8 lg:h-full lg:max-w-[264px] lg:grid-cols-1 lg:grid-rows-2 lg:gap-y-10" data-astro-cid-jo6i4kqk><div class="flex w-full flex-col lg:min-h-0" data-astro-cid-jo6i4kqk><div class="flex w-full pb-2 lg:pb-3" data-astro-cid-jo6i4kqk><span class="text-tertiary hover:text-foreground-200/70 text-[13px] leading-none font-medium transition-colors duration-200 max-lg:text-xs" data-astro-cid-jo6i4kqk>Solutions</span></div><a href="https://www.cloudflare.com/sase/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>SSE and SASE platform</a><a href="https://www.cloudflare.com/solutions/ai/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Cloudflare AI Cloud</a><a href="https://www.cloudflare.com/solutions/ai-security/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>AI Security</a><a href="https://www.cloudflare.com/solutions/frontends/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Frontend Development Platform</a><a href="https://www.cloudflare.com/solutions/platforms/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Multi-Tenant Platform Development</a><a href="https://www.cloudflare.com/solutions/security/" class="text-foreground-200 hover:text-tertiary pointer-events-auto py-1 text-[15px] leading-snug transition-colors duration-200 ease-out lg:py-1.5" data-astro-cid-jo6i4kqk>Web Security Platform</a></div></div><div class="pointer-events-auto flex flex-col items-start gap-2 lg:hidden" data-astro-cid-jo6i4kqk><a href="https://dash.cloudflare.com/sign-up" class="pointer-events-auto inline-flex w-fit items-center justify-center gap-0 whitespace-nowrap p-0 text-[14px] leading-[20px] font-medium text-foreground-100 underline-offset-2 transition-colors duration-200 ease-out hover:text-accent-100 hover:underline" data-astro-cid-jo6i4kqk>Start Building<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="size-4 shrink-0" aria-hidden="true" data-astro-cid-jo6i4kqk><path d="M7 17 17 7m0 0H7m10 0v10" data-astro-cid-jo6i4kqk></path></svg></a><a href="https://dash.cloudflare.com/login" class="pointer-events-auto inline-flex w-fit items-center justify-center gap-0 whitespace-nowrap p-0 text-[14px] leading-[20px] font-medium text-foreground-100 underline-offset-2 transition-colors duration-200 ease-out hover:text-accent-100 hover:underline" data-astro-cid-jo6i4kqk>Log In<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="size-4 shrink-0" aria-hidden="true" data-astro-cid-jo6i4kqk><path d="M7 17 17 7m0 0H7m10 0v10" data-astro-cid-jo6i4kqk></path></svg></a></div></div><div class="pointer-events-none relative flex w-full flex-1 items-end" data-astro-cid-jo6i4kqk><div class="text-accent-100 aspect-561/250 w-full overflow-hidden pb-5 lg:hidden" data-astro-cid-jo6i4kqk><svg aria-hidden="true" viewBox="0 0 561 250" fill="none" xmlns="http://www.w3.org/2000/svg" class="block h-full w-full" data-astro-cid-jo6i4kqk><g opacity="0.42" stroke="currentColor" stroke-width="0.75" stroke-dasharray="3.11 3.11" data-astro-cid-jo6i4kqk><ellipse cx="303.718" cy="134.931" rx="134.906" ry="134.556" data-astro-cid-jo6i4kqk></ellipse><ellipse cx="140.739" cy="138.82" rx="60.8247" ry="60.6667" data-astro-cid-jo6i4kqk></ellipse><ellipse cx="89.2726" cy="238.375" rx="88.8976" ry="88.6667" data-astro-cid-jo6i4kqk></ellipse><ellipse cx="455.776" cy="215.042" rx="106.053" ry="105.778" data-astro-cid-jo6i4kqk></ellipse><circle cx="467.797" cy="264.875" r="71.5" data-astro-cid-jo6i4kqk></circle><ellipse cx="355.961" cy="109.264" rx="71.7419" ry="71.5556" data-astro-cid-jo6i4kqk></ellipse><ellipse cx="358.524" cy="224.375" rx="31.1921" ry="31.1111" data-astro-cid-jo6i4kqk></ellipse><ellipse cx="465.579" cy="149.708" rx="31.1921" ry="31.1111" data-astro-cid-jo6i4kqk></ellipse></g><g fill="none" stroke="currentColor" stroke-width="0.75" data-astro-cid-jo6i4kqk><path d="M452.193 109.264C511.94 109.264 560.375 156.622 560.375 215.042C560.375 225.456 558.837 235.519 555.969 245.025C555.199 247.577 552.76 249.264 550.039 249.264H399.529C397.297 249.264 395.758 247.075 396.559 245.038L399.435 237.713C408.625 214.212 434.844 194.96 459.101 193.832L505.082 191.529C507.538 191.406 509.466 189.422 509.466 187.017C509.466 184.625 507.558 182.646 505.116 182.506L461.938 180.023C438.725 178.868 427.384 158.791 433.627 137.869L440.812 113.789C441.543 111.34 443.728 109.558 446.334 109.42C448.274 109.317 450.227 109.264 452.193 109.264Z" data-astro-cid-jo6i4kqk></path><path d="M302.648 0.375C364.95 0.375 417.285 42.0634 432.087 98.4665C432.709 100.835 432.514 103.334 431.626 105.62L419.772 136.131C410.583 159.631 386.966 180.011 360.244 180.011L154.404 182.323C151.92 182.352 149.921 184.33 149.92 186.759C149.92 189.186 151.916 191.166 154.398 191.198L357.338 193.82C380.602 193.82 391.892 215.052 385.652 235.975L383.033 244.779C382.243 247.436 379.753 249.264 376.922 249.264H6.79428C3.62784 249.264 0.918159 246.989 0.664591 243.902C0.47264 241.566 0.375 239.204 0.375 236.819C0.375 191.386 35.9484 154.08 81.3467 150.07C80.4151 145.946 79.9205 141.662 79.9205 137.264C79.9205 104.618 106.987 78.1528 140.375 78.1528C153.663 78.1528 165.947 82.347 175.925 89.4518C193.691 37.6773 243.713 0.375 302.648 0.375Z" data-astro-cid-jo6i4kqk></path></g></svg></div></div></div><div class="bg-background-100 flex flex-col pb-4" data-astro-cid-jo6i4kqk><svg class="block h-px w-full relative left-1/2 w-screen -translate-x-1/2" preserveAspectRatio="none" aria-hidden="true"><line x1="0" y1="0.5" x2="100%" y2="0.5" stroke="var(--nb-border)" stroke-width="1" stroke-dasharray="16,16"></line></svg><section class="animate-in mx-auto fade-in transition-opacity delay-100 duration-2000 ease-out relative z-0 bg-background-100 -mt-0.5 flex w-full flex-col overflow-hidden md:hidden "><svg class="corner-line top-line absolute top-0 left-1/2 h-1 -translate-x-1/2 transition-opacity duration-2000 ease-out w-[200dvw]" preserveAspectRatio="none" aria-hidden="true"><line x1="0" y1="0.5" x2="100%" y2="0.5" stroke="var(--nb-border)" stroke-width="1" stroke-dasharray="16,16"></line></svg><div class="relative mb-2 h-20 w-full"><svg class="pointer-events-none absolute inset-0 z-0 h-full w-full" aria-hidden="true"><pattern id="nb-dots-6r0" x="0" y="0" width="12" height="12" patternUnits="userSpaceOnUse"><circle cx="6" cy="6" r="0.75" fill="var(--nb-grid-line)"></circle></pattern><rect x="0" y="0" width="100%" height="100%" fill="url(#nb-dots-6r0)"></rect></svg></div><svg class="corner-line bottom-line absolute bottom-0 left-1/2 h-1 w-[200dvw] -translate-x-1/2 transition-opacity duration-2000 ease-out" preserveAspectRatio="none" aria-hidden="true"><line x1="0" y1="0.5" x2="100%" y2="0.5" stroke="var(--nb-border)" stroke-width="1" stroke-dasharray="16,16"></line></svg></section><div class="pointer-events-auto relative z-10 mx-auto mt-4 flex w-full max-w-[1480px] flex-col justify-between gap-3 md:flex-row md:items-center md:gap-4 lg:gap-8" data-astro-cid-jo6i4kqk><span class="text-tertiary text-center text-[13px] leading-tight sm:text-left lg:text-[14px]" data-astro-cid-jo6i4kqk>© 2026 Cloudflare, Inc.</span><div class="text-tertiary mr-4 flex flex-col flex-wrap items-center justify-center gap-y-2 text-center text-[13px] leading-tight sm:justify-end sm:text-right md:flex-row lg:text-[14px]" data-astro-cid-jo6i4kqk><div class="max-w-[32ch] sm:max-w-none" data-astro-cid-jo6i4kqk><a href="https://www.cloudflare.com/policies/privacy/" class="hover:text-foreground-100/70 transition-colors duration-400 ease-out font-medium text-foreground-100">Privacy policy</a><span class="mx-1.5">|</span> <a href="https://www.cloudflare.com/disclosure/" class="hover:text-foreground-100/70 transition-colors duration-400 ease-out">Report security issues</a><span class="mx-1.5">|</span> <a href="https://www.cloudflare.com/policies/terms/" class="hover:text-foreground-100/70 transition-colors duration-400 ease-out">Terms of use</a><span class="mx-1.5">|</span> <a href="https://www.cloudflare.com/trademark/" class="hover:text-foreground-100/70 transition-colors duration-400 ease-out">Trademark</a></div><span aria-hidden="true" class="mx-1.5 hidden sm:inline" data-astro-cid-jo6i4kqk>|</span><script src="https://ot.www.cloudflare.com/public/vendor/onetrust/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="b1e05d49-f072-4bae-9116-bdb78af15448"></script><script type="text/javascript">
	window.OptanonWrapper = () => {};
</script><!-- OneTrust Cookies Settings button start --><div class="inline-flex items-center gap-2" data-astro-cid-sbh7lytb><img src="/cdn-cgi/image/onerror=redirect,width=26,height=12,format=svg/_astro/privacyoptions.BWXSiJOZ.svg" alt="privacy options" data-astro-cid-sbh7lytb="true" loading="lazy" decoding="async" width="26" height="12"><button id="ot-sdk-btn" class="ot-sdk-show-settings" data-astro-cid-sbh7lytb>Your privacy choices</button></div><!-- OneTrust Cookies Settings button end --></div></div></div></div></footer></div></div><dialog data-mobile-sidebar data-state="closed" class="group fixed inset-0 m-0 h-full max-h-full w-full max-w-full border-0 bg-transparent p-0 data-[state=closing]:bg-black/40 data-[state=open]:bg-black/40" aria-label="Site navigation"><div data-mobile-sidebar-panel class="bg-background h-full w-full -translate-x-full overflow-y-auto shadow-lg transition-transform duration-250 ease-out group-data-[state=open]:translate-x-0 motion-reduce:transition-none"><div class="border-border sticky top-0 z-[1] flex items-center justify-between border-b bg-inherit px-4 py-3"><a href="/" aria-label="Cloudflare Docs" class="group flex items-center gap-2 no-underline"><img src="/_astro/logo.te5VL_aD.svg" alt="" width="51" height="23" class="h-[20px] w-auto"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 719 59" fill="none" role="img" aria-label="Cloudflare" class="text-foreground group-hover:text-primary hidden h-[11px] w-auto transition-colors sm:block"><path d="M77.1016 1.09961H92.7015V43.5996H119.802V57.1996H77.1016V1.09961Z" fill="currentColor"></path><path d="M135.898 29.3V29.2C135.898 13.1 148.898 0 166.198 0C183.498 0 196.298 12.9 196.298 29V29.2C196.298 45.3 183.298 58.4 165.998 58.4C148.798 58.3 135.898 45.4 135.898 29.3ZM180.498 29.3V29.2C180.498 21.1 174.698 14.1 166.098 14.1C157.598 14.1 151.898 21 151.898 29.1V29.3C151.898 37.4 157.698 44.4 166.198 44.4C174.798 44.3 180.498 37.4 180.498 29.3Z" fill="currentColor"></path><path d="M215.398 32.5996V1.09961H231.198V32.2996C231.198 40.3996 235.298 44.1996 241.498 44.1996C247.698 44.1996 251.798 40.4996 251.798 32.6996V1.09961H267.598V32.1996C267.598 50.2996 257.298 58.1996 241.298 58.1996C225.398 58.2996 215.398 50.1996 215.398 32.5996Z" fill="currentColor"></path><path d="M291.398 1.09961H313.098C333.098 1.09961 344.798 12.5996 344.798 28.7996V28.9996C344.798 45.1996 332.998 57.1996 312.798 57.1996H291.498L291.398 1.09961ZM313.298 43.3996C322.598 43.3996 328.798 38.2996 328.798 29.1996V28.9996C328.798 19.9996 322.598 14.7996 313.298 14.7996H306.998V43.2996L313.298 43.3996Z" fill="currentColor"></path><path d="M367.297 1.09961H412.197V14.7996H382.797V24.2996H409.397V37.1996H382.797V57.1996H367.297V1.09961Z" fill="currentColor"></path><path d="M433.797 1.09961H449.297V43.5996H476.497V57.1996H433.797V1.09961Z" fill="currentColor"></path><path d="M517.097 0.699219H532.097L555.997 57.1992H539.297L535.197 47.1992H513.597L509.597 57.1992H493.297L517.097 0.699219ZM530.797 35.0992L524.597 19.1992L518.297 35.0992H530.797Z" fill="currentColor"></path><path d="M576 1.09961H602.5C611.1 1.09961 617 3.29962 620.8 7.19962C624.1 10.3996 625.8 14.6996 625.8 20.2996V20.4996C625.8 29.0996 621.2 34.7996 614.3 37.6996L627.7 57.2996H609.7L598.4 40.2996H591.6V57.2996H576.1L576 1.09961ZM601.8 28.0996C607.1 28.0996 610.1 25.4996 610.1 21.4996V21.1996C610.1 16.7996 606.9 14.5996 601.7 14.5996H591.5V28.0996H601.8Z" fill="currentColor"></path><path d="M648.203 1.09961H693.303V14.3996H663.603V22.7996H690.503V35.0996H663.603V43.9996H693.703V57.1996H648.203V1.09961Z" fill="currentColor"></path><path d="M43.1 35.9C40.9 40.8 36.3 44.3 30.3 44.3C21.8 44.3 16 37.2 16 29.2V29C16 20.9 21.7 14 30.2 14C36.6 14 41.5 17.9 43.5 23.3H59.9C57.3 9.9 45.5 0 30.3 0C13 0 0 13.1 0 29.2V29.4C0 45.5 12.8 58.4 30.1 58.4C44.9 58.4 56.5 48.8 59.5 36L43.1 35.9Z" fill="currentColor"></path></svg><span class="text-foreground/70 border-border-strong hidden rounded-md border px-1.5 py-0.5 text-[11px] leading-none font-semibold tracking-[0.08em] uppercase sm:inline-block">Docs</span></a><button data-close-sidebar class="text-muted-foreground hover:bg-accent hover:text-foreground flex h-8 w-8 items-center justify-center rounded-md transition-colors" aria-label="Close sidebar"><svg width="1em" height="1em" viewBox="0 0 256 256" class="h-5 w-5" data-icon="ph:x"><path fill="currentColor" d="M205.66 194.34a8 8 0 0 1-11.32 11.32L128 139.31l-66.34 66.35a8 8 0 0 1-11.32-11.32L116.69 128L50.34 61.66a8 8 0 0 1 11.32-11.32L128 116.69l66.34-66.35a8 8 0 0 1 11.32 11.32L139.31 128Z"/></svg></button></div><div data-mobile-sidebar-slot></div></div></dialog><button type="button" data-nb-scroll-top aria-label="Scroll to top" class="border-border bg-background text-foreground hover:text-primary hover:border-primary focus-visible:ring-primary pointer-events-none fixed right-6 bottom-6 z-40 grid size-11 translate-y-2 place-items-center rounded-full border opacity-0 shadow-md transition-[opacity,transform] duration-200 focus-visible:ring-2 focus-visible:outline-none data-[nb-visible]:pointer-events-auto data-[nb-visible]:translate-y-0 data-[nb-visible]:opacity-100 motion-reduce:transition-none print:hidden" data-astro-cid-yfiougcv><svg class="nb-scroll-ring pointer-events-none absolute inset-0 size-full -rotate-90" viewBox="0 0 44 44" fill="none" aria-hidden="true" data-astro-cid-yfiougcv><circle class="nb-scroll-track" cx="22" cy="22" r="20" stroke-width="2" data-astro-cid-yfiougcv></circle><circle class="nb-scroll-progress" cx="22" cy="22" r="20" stroke-width="2" pathLength="1" data-astro-cid-yfiougcv></circle></svg><svg width="1em" height="1em" viewBox="0 0 256 256" class="relative size-4" data-astro-cid-yfiougcv="true" data-icon="ph:arrow-up-bold"><path fill="currentColor" d="M208.49 120.49a12 12 0 0 1-17 0L140 69v147a12 12 0 0 1-24 0V69l-51.51 51.49a12 12 0 0 1-17-17l72-72a12 12 0 0 1 17 0l72 72a12 12 0 0 1 0 17"/></svg></button><script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.DFmdEaGn.js"></script><script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"0589387b238e41af8aafea4d88cd2c64"}' crossorigin="anonymous"></script>
</body></html>