CINXE.COM
Cloudflare Workers logo (horizontal combination mark)
<!DOCTYPE html><html lang="en" theme="light"><head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://workers.cloudflare.com/sites","20201028091044","https://web.archive.org/","web","/_static/", "1603876244"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/styles.1034f7c5647308129fbe.css">*{box-sizing:inherit;margin:0}img,svg{display:block}img{max-width:100%}svg{height:100%;width:100%}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6{font-weight:400}a,button,input,select,textarea{-webkit-tap-highlight-color:transparent}html{--html-font-size:17px;--line-height:1.5;--form-field-line-height:1.3;--focus-size:.1875em;--button-top-padding:.55em;--button-bottom-padding:.65em;--button-horizontal-padding:.9em;--button-line-height:var(--form-field-line-height);--button-border-radius:.375em;--section-vertical-padding:6em;--header-height:4.5rem;--code-font-size:.9em;--inline-code-font-size:.85em}@media (max-width:1280px){html{--html-font-size:16px}}@media (max-width:1024px){html{--section-vertical-padding:4em}}@media (max-width:414px){html{--header-height:4rem;--code-font-size:.8em;--inline-code-font-size:var(--code-font-size)}}html{--sans-serif-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;--monospace-font-family:Menlo,"SF Mono","Andale Mono","Roboto Mono",Monaco,monospace;--font-family:var(--sans-serif-font-family);--cloudflare-logo-gray-rgb:64,64,65;--cloudflare-logo-orange-rgb:243,128,32;--cloudflare-logo-light-orange-rgb:248,173,76;--orange-rgb:var(--cloudflare-logo-orange-rgb);--orange:rgb(var(--orange-rgb));--orange-for-use-as-selection-color:#ef9530;--light-blue-rgb:79,140,200;--light-blue:rgb(var(--light-blue-rgb));--blue-rgb:0,81,127;--blue:rgb(var(--blue-rgb));--red-0:#430c15;--red-0-rgb:67,12,21;--red-1:#711423;--red-1-rgb:113,20,35;--red-2:#a01c32;--red-2-rgb:160,28,50;--red-3:#bf223c;--red-3-rgb:191,34,60;--red-4:#da304c;--red-4-rgb:218,48,76;--red-5:#e35f75;--red-5-rgb:227,95,117;--red-6:#ec93a2;--red-6-rgb:236,147,162;--red-7:#f3bac3;--red-7-rgb:243,186,195;--red-8:#f9dce1;--red-8-rgb:249,220,225;--red-9:#fcf0f2;--red-9-rgb:252,240,242;--orange-0:#341a04;--orange-0-rgb:52,26,4;--orange-1:#5b2c06;--orange-1-rgb:91,44,6;--orange-2:#813f09;--orange-2-rgb:129,63,9;--orange-3:#a24f0b;--orange-3-rgb:162,79,11;--orange-4:#b6590d;--orange-4-rgb:182,89,13;--orange-5:#e06d10;--orange-5-rgb:224,109,16;--orange-6:#f4a15d;--orange-6-rgb:244,161,93;--orange-7:#f8c296;--orange-7-rgb:248,194,150;--orange-8:#fbdbc1;--orange-8-rgb:251,219,193;--orange-9:#fdf1e7;--orange-9-rgb:253,241,231;--gold-0:#2c1c02;--gold-0-rgb:44,28,2;--gold-1:#573905;--gold-1-rgb:87,57,5;--gold-2:#744c06;--gold-2-rgb:116,76,6;--gold-3:#8e5c07;--gold-3-rgb:142,92,7;--gold-4:#a26a09;--gold-4-rgb:162,106,9;--gold-5:#c7820a;--gold-5-rgb:199,130,10;--gold-6:#f4a929;--gold-6-rgb:244,169,41;--gold-7:#f8cd81;--gold-7-rgb:248,205,129;--gold-8:#fbe2b6;--gold-8-rgb:251,226,182;--gold-9:#fdf3e2;--gold-9-rgb:253,243,226;--green-0:#0f2417;--green-0-rgb:15,36,23;--green-1:#1c422b;--green-1-rgb:28,66,43;--green-2:#285d3d;--green-2-rgb:40,93,61;--green-3:#31724b;--green-3-rgb:49,114,75;--green-4:#398557;--green-4-rgb:57,133,87;--green-5:#46a46c;--green-5-rgb:70,164,108;--green-6:#79c698;--green-6-rgb:121,198,152;--green-7:#b0ddc2;--green-7-rgb:176,221,194;--green-8:#d8eee1;--green-8-rgb:216,238,225;--green-9:#eff8f3;--green-9-rgb:239,248,243;--cyan-0:#0c2427;--cyan-0-rgb:12,36,39;--cyan-1:#164249;--cyan-1-rgb:22,66,73;--cyan-2:#1d5962;--cyan-2-rgb:29,89,98;--cyan-3:#26727e;--cyan-3-rgb:38,114,126;--cyan-4:#2b818e;--cyan-4-rgb:43,129,142;--cyan-5:#35a0b1;--cyan-5-rgb:53,160,177;--cyan-6:#66c3d1;--cyan-6-rgb:102,195,209;--cyan-7:#a5dce4;--cyan-7-rgb:165,220,228;--cyan-8:#d0edf1;--cyan-8-rgb:208,237,241;--cyan-9:#e9f7f9;--cyan-9-rgb:233,247,249;--blue-0:#0c2231;--blue-0-rgb:12,34,49;--blue-1:#163d57;--blue-1-rgb:22,61,87;--blue-2:#1f567a;--blue-2-rgb:31,86,122;--blue-3:#276d9b;--blue-3-rgb:39,109,155;--blue-4:#2c7cb0;--blue-4-rgb:44,124,176;--blue-5:#479ad1;--blue-5-rgb:71,154,209;--blue-6:#7cb7de;--blue-6-rgb:124,183,222;--blue-7:#add2eb;--blue-7-rgb:173,210,235;--blue-8:#d6e9f5;--blue-8-rgb:214,233,245;--blue-9:#ebf4fa;--blue-9-rgb:235,244,250;--indigo-0:#181e34;--indigo-0-rgb:24,30,52;--indigo-1:#2c365e;--indigo-1-rgb:44,54,94;--indigo-2:#404e88;--indigo-2-rgb:64,78,136;--indigo-3:#5062aa;--indigo-3-rgb:80,98,170;--indigo-4:#6373b6;--indigo-4-rgb:99,115,182;--indigo-5:#8794c7;--indigo-5-rgb:135,148,199;--indigo-6:#a5aed5;--indigo-6-rgb:165,174,213;--indigo-7:#c8cde5;--indigo-7-rgb:200,205,229;--indigo-8:#e0e3f0;--indigo-8-rgb:224,227,240;--indigo-9:#f1f3f8;--indigo-9-rgb:241,243,248;--violet-0:#2d1832;--violet-0-rgb:45,24,50;--violet-1:#502b5a;--violet-1-rgb:80,43,90;--violet-2:#753f83;--violet-2-rgb:117,63,131;--violet-3:#8e4c9e;--violet-3-rgb:142,76,158;--violet-4:#9f5bb0;--violet-4-rgb:159,91,176;--violet-5:#b683c3;--violet-5-rgb:182,131,195;--violet-6:#c9a2d2;--violet-6-rgb:201,162,210;--violet-7:#dbc1e1;--violet-7-rgb:219,193,225;--violet-8:#ebddee;--violet-8-rgb:235,221,238;--violet-9:#f7f1f8;--violet-9-rgb:247,241,248;--gray-00-rgb:23,23,24;--gray-00:rgb(var(--gray-00-rgb));--gray-0F-rgb:25,27,29;--gray-0F:rgb(var(--gray-0F-rgb));--gray-0-rgb:29,31,32;--gray-0:rgb(var(--gray-0-rgb));--gray-05-rgb:36,38,40;--gray-05:rgb(var(--gray-05-rgb));--gray-1-rgb:54,57,58;--gray-1:rgb(var(--gray-1-rgb));--gray-2-rgb:78,82,85;--gray-2:rgb(var(--gray-2-rgb));--gray-3-rgb:98,103,106;--gray-3:rgb(var(--gray-3-rgb));--gray-4-rgb:114,119,123;--gray-4:rgb(var(--gray-4-rgb));--gray-5-rgb:146,151,155;--gray-5:rgb(var(--gray-5-rgb));--gray-6-rgb:183,187,189;--gray-6:rgb(var(--gray-6-rgb));--gray-7-rgb:213,215,216;--gray-7:rgb(var(--gray-7-rgb));--gray-8-rgb:234,235,235;--gray-8:rgb(var(--gray-8-rgb));--gray-9-rgb:243,243,244;--gray-9:rgb(var(--gray-9-rgb));--gray-A-rgb:247,247,248;--gray-A:rgb(var(--gray-A-rgb));--code-gray:#a7a7a3;--code-red:#ed8978;--code-orange:#fba056;--code-gold:#fdda68;--code-green:#57c78f;--code-blue:#78c0ed;--code-cyan:#71e4f4;--code-indigo:#7b99ea;--code-lilac:#d188dd;--code-violet:#a68adb;--code-gray-light-theme:var(--gray-3);--code-red-light-theme:#8f1500;--code-orange-light-theme:#b35000;--code-gold-light-theme:#b35300;--code-green-light-theme:#007a3d;--code-blue-light-theme:#00588f;--code-cyan-light-theme:#006c7a;--code-indigo-light-theme:#00268f;--code-lilac-light-theme:#7c008f;--code-violet-light-theme:#32008f;--diff-indicator-red:var(--code-red);--diff-indicator-green:var(--code-green);--diff-indicator-red-light-theme:#eb0052;--diff-indicator-green-light-theme:#0c6}html[theme=light]{--color-rgb:var(--gray-0-rgb);--color:rgb(var(--color-rgb));--background-color-rgb:255,255,255;--background-color:rgb(var(--background-color-rgb));--selection-background-color:var(--orange-for-use-as-selection-color);--selection-color:#fff;--code-block-color:#fff;--code-block-background-color:var(--color);--code-block-background-color-light-theme:var(--gray-9);--code-block-scrollbar-color:hsla(0,0%,100%,0.25);--tab-background-color:var(--gray-9);--shadow-color-rgb:var(--color-rgb);--section-tiger-stripe-background-color:var(--gray-9);--deemphasized-color:var(--gray-1)}html[theme=dark],html[theme=light]{--cloudflare-logo-wordmark-color:rgb(var(--cloudflare-logo-gray-rgb));--focus-color:rgba(var(--orange-rgb),.5)}html[theme=dark]{--color-rgb:255,255,255;--color:rgb(var(--color-rgb));--background-color-rgb:var(--gray-0-rgb);--background-color:rgb(var(--background-color-rgb));--selection-background-color:#ff9e40;--selection-color:rgb(var(--color-rgb));--code-block-color:rgb(var(--color-rgb));--code-block-background-color:var(--gray-05);--code-block-scrollbar-color:hsla(0,0%,100%,0.25);--tab-background-color:var(--gray-1);--shadow-color-rgb:0,0,0;--section-tiger-stripe-background-color:var(--gray-05);--deemphasized-color:var(--gray-7)}[theme=dark] [light-theme-only],[theme=light] [dark-theme-only]{display:none}::-moz-selection{background:var(--selection-background-color);color:var(--selection-color)}::selection{background:var(--selection-background-color);color:var(--selection-color)}html{box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;font-size:var(--html-font-size);font-family:var(--font-family);line-height:var(--line-height);color:var(--color);background:var(--background-color)}@media (max-width:414px){[desktop-only]{display:none!important}}@media (min-width:415px){[mobile-only]{display:none!important}}@media (prefers-reduced-motion:no-preference){[is-smooth-scrolling]{scroll-behavior:smooth}}[is-visually-hidden]{position:absolute;height:1px;width:1px;padding:0;border:0;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden}[with-styled-webkit-scrollbars]{--scrollbar-thumb-background-color:var(--gray-6);--scrollbar-thumb-background-color-active:var(--gray-4)}[theme=dark][with-styled-webkit-scrollbars],[theme=dark] [with-styled-webkit-scrollbars]{--scrollbar-thumb-background-color:var(--gray-2);--scrollbar-thumb-background-color-active:var(--gray-5)}[with-styled-webkit-scrollbars]::-webkit-scrollbar,[with-styled-webkit-scrollbars] ::-webkit-scrollbar{width:1em}[with-styled-webkit-scrollbars]::-webkit-scrollbar-track,[with-styled-webkit-scrollbars] ::-webkit-scrollbar-track{background:none;border:none}[with-styled-webkit-scrollbars]::-webkit-scrollbar-thumb,[with-styled-webkit-scrollbars] ::-webkit-scrollbar-thumb{min-height:3.5em;background-color:var(--scrollbar-thumb-background-color);background-clip:padding-box;border:.25em solid transparent;border-radius:.5em;box-shadow:none}[with-styled-webkit-scrollbars]::-webkit-scrollbar-thumb:active,[with-styled-webkit-scrollbars] ::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb-background-color-active)}.CloudflareWorkersLogo{display:block}.CloudflareWorkersLogo-horizontal-combination-mark{width:10em;height:2.75em}.CloudflareWorkersLogoCombinationMark--cloudflare-wordmark,.CloudflareWorkersLogoCombinationMark--workers-wordmark{fill:currentColor}.CloudflareWorkersLogoCombinationMark--cloudflare-wordmark{opacity:.6}.Button{cursor:pointer;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:manipulation;position:relative;border:0;background:transparent;color:inherit;line-height:var(--button-line-height);padding:var(--button-top-padding) var(--button-horizontal-padding) var(--button-bottom-padding);border-radius:var(--button-border-radius);text-decoration:none;-webkit-tap-highlight-color:transparent;--active-box-shadow-color:transparent;--active-box-shadow:inset 0 .0625em .1875em var(--active-box-shadow-color);--active-overlay-box-shadow-color:transparent;--active-overlay-box-shadow:inset 0 0 0 9999em var(--active-overlay-box-shadow-color);--hover-box-shadow-color:transparent;--hover-box-shadow:inset 0 0 0 9999em var(--hover-box-shadow-color);--focus-box-shadow:0 0 0 var(--focus-size) var(--focus-color);--border-color:transparent;--border-box-shadow:inset 0 0 0 1px var(--border-color);--shadow-box-shadow:0 1px 1px rgba(var(--shadow-color-rgb),.075),0 .1333em .26667em rgba(var(--shadow-color-rgb),.075),0 .2222em .66667em 0 rgba(var(--shadow-color-rgb),.075),0 .4444em 1.3333em 0 rgba(var(--shadow-color-rgb),.075);--box-shadow:0 0 0 0 transparent;box-shadow:var(--active-box-shadow),var(--active-overlay-box-shadow),var(--hover-box-shadow),var(--focus-box-shadow),var(--border-box-shadow),var(--box-shadow);--box-shadow-transition-duration:.3s;transition:box-shadow var(--box-shadow-transition-duration) ease}.Button[disabled]{cursor:not-allowed;opacity:.5}@media (hover:hover){.Button:hover{--hover-box-shadow-color:hsla(0,0%,100%,0.2)}[theme=dark] .Button:hover{--hover-box-shadow-color:hsla(0,0%,100%,0.05)}}.Button:not([disabled]):active{--box-shadow-transition-duration:0s;--hover-box-shadow-color:transparent;--box-shadow:0 0 0 0 transparent;--active-overlay-box-shadow-color:rgba(0,0,0,0.08);--active-box-shadow-color:rgba(0,0,0,0.2)}@media (hover:none){.Button:not([disabled]):active{--active-overlay-box-shadow-color:rgba(0,0,0,0.3)}}[js-focus-visible-polyfill-available] .Button:focus{outline:none}.Button[is-focus-visible]{--box-shadow-transition-duration:0s}.Button:not([is-focus-visible]){--focus-size:0}.Button-is-primary{--box-shadow:var(--shadow-box-shadow);background:linear-gradient(25deg,rgb(var(--cloudflare-logo-orange-rgb)),rgb(var(--cloudflare-logo-light-orange-rgb)));color:#fff}.Button-is-secondary{background:var(--gray-9)}[theme=dark] .Button-is-secondary{background:var(--gray-05)}.Button-is-secondary-orange{--color-rgb:var(--orange-3-rgb);background:rgba(var(--cloudflare-logo-light-orange-rgb),.12);color:rgb(var(--color-rgb))}[theme=dark] .Button-is-secondary-orange{--color-rgb:var(--orange-7-rgb)}[theme=light] .Button-is-secondary-orange:not([disabled]):active{--active-box-shadow-color:rgba(var(--color-rgb),.4)}.Button-is-docs-primary{background:var(--orange-5);color:#fff}[theme=dark] .Button-is-docs-primary{--border-color:rgba(var(--orange-rgb),.7);color:inherit;background:transparent}.Button-is-docs-secondary{background:var(--gray-9)}[theme=dark] .Button-is-docs-secondary{--border-color:rgba(var(--color-rgb),.3);color:inherit;background:transparent}[theme=dark] .Button-is-docs-secondary[is-focus-visible]{--border-color:rgba(var(--orange-rgb),.7)}.Button-is-white{background:#fff}.Button-is-inverted{background:var(--color);color:var(--background-color)}.Nav{display:flex;height:100%}.Nav--link-logo{border-bottom-right-radius:.3125em}.Nav--item,.Nav--link-logo{display:flex;align-items:center;flex-shrink:0}.Nav--link{color:inherit;text-decoration:none;transition:box-shadow .3s ease}.Nav--link:hover{background:rgba(var(--color-rgb),.05)}.Nav--link:active{background:rgba(var(--color-rgb),.1)}[js-focus-visible-polyfill-available] .Nav--link:focus{outline:none}.Nav--link[is-focus-visible]:focus{box-shadow:0 0 0 var(--focus-size) var(--focus-color)}.Nav--link:not([is-focus-visible]){--focus-size:0}.Nav--main-links{display:flex;height:100%;margin-left:0;margin-right:auto}.Nav--main-links .Nav--link{padding:.5em 1em;border-radius:10em}@media (min-width:1280px){.Nav--main-links .Nav--item{padding-left:.25em;padding-right:.25em}}.Nav--main-links .Nav--link.Nav--link-is-active{background:rgba(var(--gray-5-rgb),.2)}[theme=dark] .Nav--main-links .Nav--link.Nav--link-is-active{background:rgba(var(--orange-rgb),.08);color:#fba056}.Nav--item-sign-up,.Nav--link.Nav--link-logo{padding-left:1em;padding-right:1em}.Nav--account-management{display:flex;height:100%}.Nav--item-sign-in{padding-right:0}@media (max-width:1136px){.Nav--link-home{display:none}}@media (max-width:768px){.Nav--main-links{display:none}.Nav--link.Nav--link-logo:first-child{margin-right:auto}}@media (max-width:414px){.Nav--link-logo{font-size:.85em}.Nav--item-sign-up{display:none}.Nav--item-sign-in,.Nav--link.Nav--link-logo{padding-left:.75em;padding-right:.75em}}.Header{position:absolute;z-index:10;width:100%;height:var(--header-height)}svg.Icon{overflow:visible}.Footer{padding:var(--section-vertical-padding) 3em 3em}.Footer-with-top-separator,[theme=light] .Footer-with-top-separator-light-theme-only{box-shadow:inset 0 .125em .5em -.5em}[theme=dark] .Footer-with-top-separator{box-shadow:inset 0 1px rgba(var(--color-rgb),.05)}.Footer--columns{display:flex;justify-content:center;width:64em;max-width:100%;margin-left:auto;margin-right:auto;margin-bottom:var(--section-vertical-padding)}.Footer--column{width:14em}.Footer--column-title{font-family:var(--monospace-font-family);font-size:.9em;margin-bottom:1.5em;color:rgba(var(--color-rgb),.75)}.Footer--column-list-item:not(:last-child){margin-bottom:.5em}.Footer--column-logo{margin-left:5em}.Footer--logo-link{color:inherit;text-decoration:none;display:inline-block}.Footer--logo-link-image{width:5em}.Footer--column-list{list-style:none;padding:0}.Footer--legal{text-align:center;font-size:.8em;color:rgba(var(--color-rgb),.75);margin-left:-1.5em;margin-right:-1.5em}@media (max-width:900px){.Footer--columns{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;grid-gap:2.5em;width:50em;margin-left:auto;margin-right:auto}.Footer--column{width:auto}.Footer--column-logo{grid-column:1/-1;margin:auto}.Footer--logo-link{display:block;margin-left:auto;margin-right:auto;margin-bottom:1em}}@media (max-width:768px){.Footer--columns{grid-template-columns:1fr 1fr;width:24em}}.WorkersBetaTeaserLink{display:inline-block;color:inherit;font-weight:500;text-decoration:none;background:linear-gradient(25deg,rgb(var(--cloudflare-logo-orange-rgb)),rgb(var(--cloudflare-logo-light-orange-rgb)));border-radius:.5em;transform:skew(-9deg)}.WorkersBetaTeaserLink--inner{padding:.85em 1.25em;border:2px solid transparent;background:var(--background-color);background-clip:padding-box;border-radius:.5em;transition:background-color .3s}.WorkersBetaTeaserLink:hover .WorkersBetaTeaserLink--inner{background-color:rgba(var(--background-color-rgb),.9)}.WorkersBetaTeaserLink--content{transform:skew(9deg)}.WorkersBetaTeaserLink--beta{position:relativ;top:-1px;font-size:.8em;font-weight:700}.Number{line-height:1.5;white-space:nowrap}.Number--dollars{display:inline-block;font-size:.75em;vertical-align:top;line-height:1;margin-top:.45em;padding-right:.05em}.Number--per,.Number--per-unit,.Number--unit{font-size:.8em}.Number.Number-is-strong .Number--dollars,.Number.Number-is-strong .Number--number{font-weight:500}.Superscript{position:relative;vertical-align:initial;font-size:.8em;top:-.5em}.Link{text-decoration:none;color:inherit;--accent-color:var(--orange);--underline-size:-.16em;--underline-color:var(--accent-color);--underline-shadow:inset 0 var(--underline-size) var(--underline-color);--focus-size:3px;--focus-shadow:0 0 0 var(--focus-size) var(--focus-color);box-shadow:var(--focus-shadow),var(--underline-shadow)}.Link-is-blue{--accent-color:var(--blue-6)}.Link-is-cyan{--accent-color:var(--cyan-6)}.Link-is-gray{--accent-color:var(--gray-6)}.Link-is-green{--accent-color:var(--green-6)}.Link-is-gold{--accent-color:var(--gold-6)}.Link-is-orange{--accent-color:var(--orange)}.Link-is-indigo{--accent-color:var(--indigo-6)}.Link-is-violet{--accent-color:var(--violet-6)}@media (hover:hover){.Link:hover{color:var(--accent-color)}}.Link-is-juicy{padding:.5em;margin:-.5em}.Link-with-left-arrow,.Link-with-right-arrow,.Link-without-underline{--underline-size:0}.Link-with-left-arrow:before{content:"\2190\A0"}.Link-with-right-arrow:after{content:"\A0\2192"}[js-focus-visible-polyfill-available] .Link:focus{outline:none}.Link[is-focus-visible]{--underline-size:0}.Link:not([is-focus-visible]){--focus-size:0}.InlineCode{font-family:var(--monospace-font-family);font-size:var(--inline-code-font-size);--default-padding:.2em .3em;padding:var(--padding,var(--default-padding));--default-background:rgba(var(--color-rgb),.05);background:var(--background,var(--default-background));border-radius:.25em;max-width:100%}.InlineCode.InlineCode-is-nowrap{white-space:nowrap}.InlineCode--type,.InlineCode.InlineCode-is-type{font-weight:700;font-size:.7rem;border-radius:.2em;opacity:.75;--border-opacity:.4;box-shadow:0 0 0 1px rgba(var(--color-rgb),var(--border-opacity));-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}[theme=dark] .InlineCode.InlineCode-is-type{--border-opacity:.3}.InlineCode.InlineCode-is-type{padding:1px 4px;--background:transparent}.InlineCode--type{padding:0 3px;margin-left:.5em;--border-opacity:.25}@media (max-width:768px){.InlineCode--type,.InlineCode.InlineCode-is-type{padding:0 2px}}.CodeBlock{-webkit-font-smoothing:antialiased;position:relative;display:block;white-space:pre-wrap;word-break:break-word;font-family:var(--monospace-font-family);font-size:var(--code-font-size);margin:0;--padding-vertical:.9em;--padding-horizontal:1.25em;--border-radius:.5em;border-radius:var(--border-radius);background:var(--code-block-background-color);color:var(--code-block-color);--outdent:0rem;margin-left:calc(-1*var(--outdent));width:calc(100% + 2*var(--outdent));max-width:calc(100% + 2*var(--outdent));cursor:text}[theme=light] .CodeBlock-is-light-in-light-theme{--code-block-background-color:var(--code-block-background-color-light-theme);--code-block-color:currentColor;--code-block-scrollbar-color:var(--gray-6);--code-gray:var(--code-gray-light-theme);--code-red:var(--code-red-light-theme);--code-orange:var(--code-orange-light-theme);--code-gold:var(--code-gold-light-theme);--code-green:var(--code-green-light-theme);--code-blue:var(--code-blue-light-theme);--code-cyan:var(--code-cyan-light-theme);--code-indigo:var(--code-indigo-light-theme);--code-lilac:var(--code-lilac-light-theme);--code-violet:var(--code-violet-light-theme);--diff-indicator-red:var(--diff-indicator-red-light-theme);--diff-indicator-green:var(--diff-indicator-green-light-theme)}.CodeBlock>code{display:block;padding:var(--padding-vertical) var(--padding-horizontal);font-family:inherit;cursor:default}.CodeBlock>code>*{cursor:text}.CodeBlock>code::-webkit-scrollbar{height:14px}.CodeBlock>code::-webkit-scrollbar-track-piece{background:transparent;border-radius:var(--border-radius)}.CodeBlock>code::-webkit-scrollbar-thumb{border-radius:var(--border-radius);box-shadow:inset 0 1px 1px rgba(var(--background-color-rgb),.1);background-color:var(--code-block-scrollbar-color);background-clip:padding-box;border:4px solid transparent;border-radius:calc(20*var(--border-radius))}[theme=dark] .CodeBlock>code::-webkit-scrollbar-thumb{box-shadow:inset 0 1px 1px rgba(var(--color-rgb),.1)}.CodeBlock-is-one-liner>code{border-radius:calc(0.625*var(--border-radius));white-space:nowrap}.CodeBlock-is-one-liner>code,.CodeBlock-scrolls-horizontally>code{word-break:normal;overflow-x:auto;-webkit-overflow-scrolling:touch}.CodeBlock-scrolls-horizontally>code{white-space:pre}.CodeBlock-is-hero{--padding-vertical:1.25em;--padding-horizontal:1.5em;box-shadow:0 1px 1px rgba(var(--shadow-color-rgb),.075),0 .1333em .26667em rgba(var(--shadow-color-rgb),.075),0 .2222em .66667em 0 rgba(var(--shadow-color-rgb),.075),0 .4444em 1.3333em 0 rgba(var(--shadow-color-rgb),.075)}.CodeBlock--filename,.CodeBlock--header{display:block;background:rgba(var(--color-rgb),.05);box-shadow:0 1px rgba(var(--shadow-color-rgb),.12);padding:.4em var(--padding-horizontal);border-radius:var(--border-radius) var(--border-radius) 0 0;opacity:.9;font-weight:700}[theme=light] .CodeBlock-is-light-in-light-theme .CodeBlock--filename,[theme=light] .CodeBlock-is-light-in-light-theme .CodeBlock--header{background:transparent}.CodeBlock--header{font-family:var(--font-family)}.CodeBlock--filename{padding-top:.45em;font-size:.9em;padding-left:calc(var(--padding-horizontal)/.9);padding-right:calc(var(--padding-horizontal)/.9)}.CodeBlock b{font-weight:400}.CodeBlock u{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;text-decoration:none;transition:opacity .25s ease}@media (hover:hover){.CodeBlock:hover u{opacity:.25}}.CodeBlock[has-selection-contained-within] u{opacity:.25}@media (hover:none){.CodeBlock:hover u{opacity:.25}}.CodeBlock.CodeBlock-with-rows.CodeBlock-scrolls-horizontally>code{display:block}.CodeBlock.CodeBlock-with-rows,.CodeBlock.CodeBlock-with-rows>code{white-space:normal}.CodeBlock-with-rows>code{padding-left:0;padding-right:0}.CodeBlock-with-rows .CodeBlock--rows{display:block}.CodeBlock-with-rows .CodeBlock--rows-content{display:inline-block;min-width:100%}.CodeBlock-with-rows .CodeBlock--row{position:relative;display:block;width:100%}.CodeBlock-with-rows .CodeBlock--row-content{display:block;white-space:pre-wrap;padding:0 var(--padding-horizontal)}.CodeBlock-with-rows.CodeBlock-scrolls-horizontally .CodeBlock--row-content{white-space:pre}.CodeBlock--row-is-highlighted{background:rgba(var(--color-rgb),.05);box-shadow:inset 2px 0 rgba(var(--color-rgb),.3)}.CodeBlock--row-diff-add{--row-diff-background-color:rgba(var(--color-rgb),.05);background:var(--row-diff-background-color)}[theme=light] .CodeBlock-is-light-in-light-theme.CodeBlock-with-rows .CodeBlock--row-diff-add{--row-diff-background-color:rgba(var(--background-color-rgb),.8)}.CodeBlock--row-diff-remove{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;text-decoration:none}.CodeBlock-with-rows .CodeBlock--row-diff-add .CodeBlock--row-indicator,.CodeBlock-with-rows .CodeBlock--row-diff-remove .CodeBlock--row-indicator{position:-webkit-sticky;position:sticky;left:0;display:flex;border-left:.125em solid;--width:.75em;width:var(--width);margin-right:calc(-1*var(--width));background:linear-gradient(90deg,var(--row-diff-background-color),transparent),linear-gradient(90deg,var(--code-block-background-color),transparent)}.CodeBlock-with-rows .CodeBlock--row-diff-add .CodeBlock--row-indicator{border-left-color:var(--diff-indicator-green)}.CodeBlock-with-rows .CodeBlock--row-diff-remove .CodeBlock--row-indicator{border-left-color:var(--diff-indicator-red)}[theme=light] .CodeBlock-with-rows.CodeBlock-is-light-in-light-theme .CodeBlock--row-diff-add .CodeBlock--row-indicator{background:transparent}.CodeBlock-with-rows .CodeBlock--word-remove{opacity:.5;position:relative}.CodeBlock-with-rows .CodeBlock--word-remove:after{content:"";display:block;position:absolute;top:.125em;right:-.5em;bottom:0;left:-.5em;height:1px;margin-top:auto;margin-bottom:auto;background:linear-gradient(90deg,rgba(var(--color-rgb),0),rgba(var(--color-rgb),0) 1em,rgba(var(--color-rgb),.5) 2em,rgba(var(--color-rgb),.5) calc(100% - 2em),rgba(var(--color-rgb),0) calc(100% - .5em),rgba(var(--color-rgb),0))}.CodeBlock--token-punctuation,.CodeBlock--token-template-string.CodeBlock--token-interpolation{color:inherit}.CodeBlock--token-block-comment,.CodeBlock--token-cdata,.CodeBlock--token-comment,.CodeBlock--token-doctype,.CodeBlock--token-prolog{font-style:italic;color:var(--code-gray)}.CodeBlock--token-keyword,.CodeBlock--token-operator,.CodeBlock--token-template-string.CodeBlock--token-interpolation.CodeBlock--token-interpolation-punctuation{color:var(--code-red)}.CodeBlock--token-class,.CodeBlock--token-class-name,.CodeBlock--token-function,.CodeBlock--token-function-name,.CodeBlock--token-template-string.CodeBlock--token-interpolation.CodeBlock--token-function{color:var(--code-green)}.CodeBlock--token-constant,.CodeBlock--token-symbol,.CodeBlock--token-template-string.CodeBlock--token-interpolation.CodeBlock--token-interpolation-constant{color:var(--code-indigo)}.CodeBlock--token-arrow,.CodeBlock--token-declaration-keyword{color:var(--code-cyan)}.CodeBlock--token-function-parameter,.CodeBlock--token-parameter{font-style:italic;color:var(--code-lilac)}.CodeBlock--token-boolean,.CodeBlock--token-builtin,.CodeBlock--token-method,.CodeBlock--token-null-undefined,.CodeBlock--token-number{color:var(--code-violet)}.CodeBlock--token-api{color:var(--code-orange)}.CodeBlock--token-char,.CodeBlock--token-object-property,.CodeBlock--token-regex,.CodeBlock--token-string,.CodeBlock--token-template-string{color:var(--code-gold)}.CodeBlock--token-bold,.CodeBlock--token-important{font-weight:700}.CodeBlock--token-italic{font-style:italic}.CodeBlock--token-deleted,.CodeBlock--token-namespace{color:var(--code-red)}.CodeBlock--token-entity{color:var(--code-blue);cursor:help}.CodeBlock--token-inserted{color:var(--code-green)}.CodeBlock--token-link,.CodeBlock--token-url{color:var(--code-violet)}.CodeBlock--token-link.CodeBlock--token-content,.CodeBlock--token-url.CodeBlock--token-content{color:inherit}.CodeBlock--token-tag{color:var(--code-red)}.CodeBlock--token-tag.CodeBlock--token-punctuation{color:inherit}.CodeBlock--token-tag.CodeBlock--token-attr-name{color:var(--code-green)}.CodeBlock--token-tag.CodeBlock--token-attr-name+.CodeBlock--token-punctuation{color:inherit}.CodeBlock--token-tag.CodeBlock--token-attr-value{color:var(--code-gold)}.CodeBlock--language-css.CodeBlock--token-plain,.CodeBlock--language-css.CodeBlock--token-property,.CodeBlock--language-css.CodeBlock--token-style,[language=css] .CodeBlock--token-plain,[language=css] .CodeBlock--token-property{color:var(--code-blue)}.CodeBlock--language-css.CodeBlock--token-style.CodeBlock--token-punctuation{color:inherit}.CodeBlock--language-css.CodeBlock--token-selector,[language=css] .CodeBlock--token-selector{color:var(--code-red)}.CodeBlock--language-css.CodeBlock--token-attribute,.CodeBlock--language-css.CodeBlock--token-class,[language=css] .CodeBlock--token-attribute,[language=css] .CodeBlock--token-class{color:var(--code-green)}.CodeBlock--language-css.CodeBlock--token-function,[language=css] .CodeBlock--token-function{color:var(--code-lilac)}.CodeBlock--language-css.CodeBlock--token-variable,[language=css] .CodeBlock--token-variable{color:var(--code-violet)}.CodeBlock--language-css.CodeBlock--token-attribute.CodeBlock--token-value,[language=css] .CodeBlock--token-attribute.CodeBlock--token-value{color:var(--code-gold)}.CodeBlock--language-css.CodeBlock--token-color,[language=css] .CodeBlock--token-color{color:var(--code-violet)}.CodeBlock--language-css.CodeBlock--token-attribute.CodeBlock--token-punctuation,[language=css] .CodeBlock--token-attribute.CodeBlock--token-punctuation{color:inherit}.CodeBlock--language-css.CodeBlock--token-atrule.CodeBlock--token-rule,.CodeBlock--language-css.CodeBlock--token-attribute.CodeBlock--token-operator,.CodeBlock--language-css.CodeBlock--token-important,.CodeBlock--language-css.CodeBlock--token-unit,[language=css] .CodeBlock--token-atrule.CodeBlock--token-rule,[language=css] .CodeBlock--token-attribute.CodeBlock--token-operator,[language=css] .CodeBlock--token-important,[language=css] .CodeBlock--token-unit{color:var(--code-red)}.CodeBlock--language-css.CodeBlock--token-pseudo-class,.CodeBlock--language-css.CodeBlock--token-pseudo-element,[language=css] .CodeBlock--token-pseudo-class,[language=css] .CodeBlock--token-pseudo-element{color:var(--code-violet)}[language=markdown] .CodeBlock--token-header,[language=markdown] .CodeBlock--token-title{color:var(--code-orange)}[language=markdown] .CodeBlock--token-list{color:var(--code-red)}[language=markdown] .CodeBlock--token-blockquote{color:var(--code-blue)}[language=markdown] .CodeBlock--token-code{color:var(--code-green)}[language=markdown] .CodeBlock--token-hr{color:var(--code-gold)}[language=sh] .CodeBlock--token-directory{color:var(--code-orange)}[language=sh] .CodeBlock--token-prompt{color:var(--code-orange);opacity:.7}[language=sh] .CodeBlock--token-value{color:var(--code-cyan)}[language=sh] .CodeBlock--token-success{color:var(--code-green)}.ErrorPage{--extra-vertical-padding:var(--header-height,0);--vertical-padding:var(--section-vertical-padding,3em);display:flex;align-items:center;justify-content:center}.ErrorPage--content{text-align:center;padding:calc(var(--extra-vertical-padding) + var(--vertical-padding)) 1em calc(var(--extra-vertical-padding)/2 + var(--vertical-padding))}.ErrorPage--title{line-height:1;font-size:3em;font-weight:700;margin-bottom:.333em}@media (max-width:768px){.ErrorPage--title{font-size:2em}}.ErrorPage--description{margin-bottom:2em}.ErrorPage--action{font-size:1.3em}.AspectRatio{--aspect-ratio:1;position:relative;display:block;width:100%;height:0;padding-bottom:calc(100%/var(--aspect-ratio))}.AspectRatio--content{position:absolute;display:block;left:0;top:0;width:100%;height:100%}.MarkdownLite>ol:not(:last-child),.MarkdownLite>p:not(:last-child),.MarkdownLite>ul:not(:last-child){margin-bottom:.5em}.MarkdownLite>figure:not(:last-child),.MarkdownLite>pre:not(:last-child){margin-bottom:1.5em}.UnorderedList{padding:0;list-style:none}.UnorderedList>li{padding-left:2em;background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 17" height="16" width="17"><path fill="%23232324" d="M9.5.4l5 2.8c1 .5 1.5 1.5 1.5 2.5v5.6c0 1-.6 2-1.5 2.5l-5 2.8a3 3 0 0 1-3 0l-5-2.8A2.8 2.8 0 0 1 0 11.3V5.7c0-1 .6-2 1.5-2.5l5-2.8a3 3 0 0 1 3 0z"/></svg>') no-repeat .25em .4em;background-size:.6em .6em}[theme=dark] .UnorderedList>li{background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 17" height="16" width="17"><path fill="%23fff" d="M9.5.4l5 2.8c1 .5 1.5 1.5 1.5 2.5v5.6c0 1-.6 2-1.5 2.5l-5 2.8a3 3 0 0 1-3 0l-5-2.8A2.8 2.8 0 0 1 0 11.3V5.7c0-1 .6-2 1.5-2.5l5-2.8a3 3 0 0 1 3 0z"/></svg>') no-repeat .25em .4em;background-size:.6em .6em}.UnorderedList>li:not(:last-child){margin-bottom:.5em}.UnorderedList.UnorderedList-is-primary>li,[theme=dark] .UnorderedList.UnorderedList-is-primary>li{background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 17" height="16" width="17"><defs><linearGradient id="g" x1="87%" x2="13.7%" y1="0%" y2="100%"><stop offset="0%" stop-color="%23faae40"/><stop offset="100%" stop-color="%23f38020"/></linearGradient></defs><path fill="url(%23g)" d="M9.5.4l5 2.8c1 .5 1.5 1.5 1.5 2.5v5.6c0 1-.6 2-1.5 2.5l-5 2.8a3 3 0 0 1-3 0l-5-2.8A2.8 2.8 0 0 1 0 11.3V5.7c0-1 .6-2 1.5-2.5l5-2.8a3 3 0 0 1 3 0z"/></svg>') no-repeat 0 .275em;background-size:1em 1em;padding-left:2em}.Markdown>*,.UnorderedList.UnorderedList-is-primary>li:not(:last-child){margin-bottom:.75em}.Markdown>*{margin-top:.75em}.Markdown>*+h1,.Markdown>*+h2,.Markdown>*+h3,.Markdown>*+h4,.Markdown>*+h5,.Markdown>*+h6{margin-top:1.5em}.Markdown>h1,.Markdown>h2{font-weight:700;font-size:1.333em;line-height:1.2em;margin-bottom:.5em}.Markdown>h3,.Markdown>h4,.Markdown>h5,.Markdown>h6{font-weight:700;font-size:1.15em;line-height:1.333em;margin-bottom:.5em}.Markdown>h1+*,.Markdown>h2+*,.Markdown>h3+*,.Markdown>h4+*,.Markdown>h5+*,.Markdown>h6+*{margin-top:0}.Markdown>h1+h2,.Markdown>h2+h3,.Markdown>h3+h4,.Markdown>h4+h5,.Markdown>h5+h6{margin-top:1em}.Markdown>ol:not(:last-child),.Markdown>ul:not(:last-child){margin-bottom:1.5em}.Markdown>:first-child{margin-top:0}.Markdown>:last-child{margin-bottom:0}.Markdown blockquote{border-left:.25em solid var(--gray-8);padding-left:1em}.Project---link{display:block;text-decoration:none;color:inherit;--accent-color:var(--orange-6);--focus-size:5px;--focus-shadow:0 0 0 var(--focus-size) var(--focus-color);box-shadow:var(--focus-shadow);transition:box-shadow .3s ease;--border-radius:.5em;border-radius:var(--border-radius)}[theme=dark] .Project---link{background:rgba(var(--gray-1-rgb),.5)}[js-focus-visible-polyfill-available] .Project---link:focus{outline:none}.Project---link:not([is-focus-visible]):hover{transition-duration:0s}.Project---link:not([is-focus-visible]):not(:hover){--focus-size:0}@media (hover:none){.Project---link:not([is-focus-visible]):hover{--focus-size:0}}.Project{position:relative;width:var(--project-width,20em);border-radius:var(--border-radius,.5em)}.Project---link-fills-height,.Project-fills-height{height:100%}.Project:after{content:"";display:block;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border-radius:var(--border-radius);border:1px solid rgba(var(--shadow-color-rgb),.25);transition:border .3s ease}[theme=dark] .Project:after{border-color:transparent}@media (hover:hover){[theme] .Project---link:hover .Project:after,[theme] .Project---link[is-focus-visible] .Project:after{border-color:rgba(var(--orange-3-rgb),.4)}}@media (hover:none){.Project---link:active .Project:after,.Project---link:focus .Project:after{background:rgba(var(--shadow-color-rgb),.25)}}.Project--image{position:relative;border-radius:var(--border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0;overflow:hidden}.Project--image>.gatsby-image-wrapper>div:not([style*="padding-bottom: 62.5%"]):first-child{padding-bottom:62.5%!important}[domain=localhost] .Project--image>.gatsby-image-wrapper>div:not([style*="padding-bottom: 62.5%"]):first-child{background:var(--red-8);color:var(--red-3)}[domain=localhost] .Project--image>.gatsby-image-wrapper>div:not([style*="padding-bottom: 62.5%"]):first-child~*{opacity:0}[domain=localhost] .Project--image>.gatsby-image-wrapper>div:not([style*="padding-bottom: 62.5%"]):first-child:before{position:absolute;content:"Please use a 16:10 image.";height:1em;line-height:1;top:0;right:0;bottom:0;left:0;margin:auto;text-align:center}.Project--image:after{content:"";display:block;position:absolute;left:0;right:0;bottom:0;height:1px;background:rgba(var(--color-rgb),.13)}.Project--image picture img{-o-object-position:top center!important;object-position:top center!important}.Project--content{padding:1.33em}.Project--title{font-size:1.3em;line-height:1.25;margin-bottom:.33em;margin-top:-.1em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.Project--features{display:none}.Project--description{font-size:.9em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.Project--bookmark{position:absolute;top:-2px;right:26px;width:26px;height:34px;border-radius:2px 2px 5px 5px;z-index:1}.Project--bookmark-should-fade-in{opacity:0;-webkit-animation:project-bookmark-fade-in .5s ease forwards;animation:project-bookmark-fade-in .5s ease forwards}@-webkit-keyframes project-bookmark-fade-in{to{opacity:1}}@keyframes project-bookmark-fade-in{to{opacity:1}}.BuiltWithWorkersPage{--vertical-padding-top:2em;padding:calc(var(--header-height) + var(--vertical-padding-top)) 0 var(--section-vertical-padding);width:100%}.BuiltWithWorkersPage--hero{text-align:center;width:38em;max-width:100%;margin-left:auto;margin-right:auto;margin-bottom:2.5em;padding:1em 1em 0}.BuiltWithWorkersPage--hero>h1{line-height:1;font-size:2.75em;font-weight:600;margin-bottom:.25em}@media (max-width:768px){.BuiltWithWorkersPage--hero{padding-top:0}.BuiltWithWorkersPage--hero>h1{font-size:2em}}.BuiltWithWorkersPage--hero>p{font-size:1.1em}.BuiltWithWorkersPage--hero>p:not(:last-child){margin-bottom:1em}.ProjectPage{--column-width:44em;--horizontal-padding:1em}.ProjectPage--header{display:flex;padding:0 var(--horizontal-padding);width:calc(var(--column-width) + 2*var(--horizontal-padding));align-items:center;max-width:100%;margin:0 auto 3em}.ProjectPage--back-link{color:rgba(var(--color-rgb),.8)}.ProjectPage--header-content{flex:1}.ProjectPage--header-actions{margin-left:3em;padding-top:1.666em}.ProjectPage--header-action-button{font-size:1.2em;white-space:nowrap;text-align:center}.ProjectPage--header-action-primary{margin-bottom:.75em}.ProjectPage--header-action-bookmark{font-size:.85em;text-align:center}.ProjectPage--header-action-bookmark-icon{position:relative;top:-.05em;display:inline-block;height:1.2em;width:1em;vertical-align:middle;margin-right:.7em}.ProjectPage--header-action-bookmark-text{font-size:.9em}.ProjectPage--header-action-bookmark[data-bookmark-state=loading]{opacity:0}.ProjectPage--header-action-bookmark[data-bookmark-state=bookmarked] .ProjectPage--header-action-bookmark-text{font-size:.9em}@media (max-width:768px){.ProjectPage{--column-width:32em}.ProjectPage--header{flex-direction:column;text-align:center}.ProjectPage--back-link{display:none}.ProjectPage--header-content{margin-bottom:2em}.ProjectPage--header-actions{padding-top:0;margin-left:0}.ProjectPage--header-action-button{width:100%}}.ProjectPage--title{font-size:2.5em;font-weight:600;margin-bottom:.25em;line-height:1.2}@media (max-width:414px){.ProjectPage--title{font-size:2em}}.ProjectPage--description{font-size:1.1em}.ProjectPage--image{position:relative;width:calc(var(--column-width) + 10em);max-width:100%;margin:0 auto 3em}.ProjectPage--image:after{content:"";display:block;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;--border-opacity:0.15;border:1px solid rgba(var(--color-rgb),var(--border-opacity))}[theme=dark] .ProjectPage--image:after{--border-opacity:0.1}.ProjectPage--body{position:relative;display:flex;align-items:flex-start;padding:0 var(--horizontal-padding);width:calc(var(--column-width) + 2*var(--horizontal-padding));max-width:100%;margin:0 auto}.ProjectPage--about{width:30em;max-width:100%;margin-right:3em;word-wrap:break-word}.ProjectPage--metadata{position:-webkit-sticky;position:sticky;top:2em;width:13em;flex-shrink:0;padding-left:2em;margin-top:-.5em;margin-bottom:-.5em;padding-top:.5em;padding-bottom:.5em;background-image:linear-gradient(0deg,rgba(var(--shadow-color-rgb),0),rgba(var(--shadow-color-rgb),.2),rgba(var(--shadow-color-rgb),0));background-repeat:no-repeat;background-size:1px}@media (max-width:768px){.ProjectPage--body{flex-direction:column}.ProjectPage--about{width:100%;margin-right:0;margin-bottom:2em}.ProjectPage--metadata{padding:1.5em;background:var(--section-tiger-stripe-background-color);border-radius:.25em;width:100%}}.ProjectPage--metadata-link{display:block}.ProjectPage--more{margin-top:var(--section-vertical-padding);--separator-opacity:0.1;border-top:1px solid rgba(var(--color-rgb),var(--separator-opacity));padding-top:var(--section-vertical-padding)}[theme=dark] .ProjectPage--more{--separator-opacity:0.05}.DefinitionList{margin:0}.DefinitionList--term{font-size:.9em;margin-bottom:.125em;color:var(--gray-4)}.DefinitionList--definition{font-size:1em;display:block;max-width:100%;margin-left:0}.DefinitionList--definition:not(:last-child){margin-bottom:1em}.Collections>.Collections--collection:not(:last-child){margin-bottom:4em}.Collection{--content-horizontal-padding:4.5em;--gutter:3em;--project-width:20em}@media (max-width:576px){.Collection{--content-horizontal-padding:2.5em;--gutter:1.5em}}@media (max-width:375px){.Collection{--content-horizontal-padding:3em;--gutter:2em}}@media (max-width:2400px){.Collection{--columns:6}}@media (max-width:2100px){.Collection{--columns:5}}@media (max-width:1800px){.Collection{--columns:4}}@media (max-width:1500px){.Collection{--columns:3}}@media (max-width:1200px){.Collection{--columns:2}}@media (max-width:768px) and (min-height:600px){.Collection{--columns:1}}@media (max-width:375px){.Collection{--columns:1}}@media (max-width:2400px){.Collection{--project-width:calc((100vw - var(--content-horizontal-padding) - var(--columns)*var(--gutter))/(var(--columns) + 0.5))}}@media (max-width:375px){.Collection{--project-width:calc(100vw - 2*var(--content-horizontal-padding))}}.Collection--header{display:flex;align-items:center;padding:0 var(--content-horizontal-padding) .5em}.Collection--title{font-size:1.5em}.Collection--projects{display:flex;overflow-x:scroll;-webkit-overflow-scrolling:touch;-ms-scroll-snap-type:x proximity;scroll-snap-type:x proximity;scroll-padding:var(--content-horizontal-padding);margin-top:-1em}@supports (-webkit-font-smoothing:antialiased){@media (any-pointer){.Collection--projects::-webkit-scrollbar{border:0;height:0;width:0}}}@media (max-width:375px){.Collection--projects{-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scroll-snap-align:center}}.Collection--project{display:flex;width:var(--project-width);flex-direction:column;scroll-snap-align:start;margin:1em calc(var(--gutter)/2);--border-radius:.5em;border-radius:var(--border-radius)}.Collection--project:first-child{margin-left:var(--content-horizontal-padding)}.Collection--spacer{flex-shrink:0;width:calc(100vw - var(--project-width) - var(--content-horizontal-padding) - var(--gutter)/2)}.Collection-is-centered{--scroll-padding:calc(50vw - var(--project-width)/2)}.Collection-is-centered .Collection--projects{scroll-padding:var(--scroll-padding)}.Collection-is-centered .Collection--project:first-child{margin-left:var(--scroll-padding)}.Collection-is-centered .Collection--spacer{width:calc(50vw - var(--project-width)/2 - var(--gutter)/2)}.Collection-is-centered .Collection--header{justify-content:center}.Collection-is-centered .Collection--title{text-align:center;font-size:2em;font-weight:700;margin-bottom:1em}@media (max-width:768px){.Collection-is-centered .Collection--title{font-size:1.4em}}.HeroSection--column{display:flex;align-items:center;justify-content:center;--vertical-padding-top:3.5em;--horizontal-gap:4em;--illustration-width-ems:28.8;--illustration-font-size:1em;padding:calc(var(--header-height) + var(--vertical-padding-top)) 2em var(--section-vertical-padding);width:100%}.HeroSection--content{flex:1;position:relative;z-index:2;max-width:29em;margin-right:var(--horizontal-gap)}.HeroSection--title{font-size:3.1em;line-height:1.2;font-weight:700;margin-bottom:.2em}.HeroSection--title-first-line{font-size:.9em;line-height:.9}.HeroSection--description{font-size:1.5em;margin-bottom:1.25em}.HeroSection--actions{font-size:1.333em;display:flex;justify-content:flex-start;margin-bottom:2em}.HeroSection--actions-mobile{display:none}.HeroSection--key-points{text-align:left;font-size:.95em}.HeroSection--new-badge{position:relative;top:-1px;margin-left:2px;font-size:.8em;font-weight:800;color:rgb(var(--cloudflare-logo-orange-rgb))}[theme=dark] .HeroSection--key-points{color:var(--gray-7)}.HeroSection--actions-item:not(:last-child){margin-right:1em}.HeroSection--illustration{flex-shrink:0;font-size:var(--illustration-font-size);width:calc(1em*var(--illustration-width-ems))}.HeroSection--workers-teaser-wrap{display:block;margin:calc(-1*var(--section-vertical-padding) + 2.75em) auto 7em;padding:0 10vw;text-align:center}@media (min-width:1001px) and (max-width:1300px){.HeroSection--column{--illustration-font-size:1.4vw}}@media (min-width:1001px){.HeroSection--illustration{perspective:1500px;margin-bottom:1em}.HeroSection--illustration-card{transform:rotate3d(.5,-.866,0,15deg) rotate(1deg);box-shadow:2em 4em 6em -2em rgba(0,0,0,.5),1em 2em 3.5em -2.5em rgba(0,0,0,.5);border-radius:.5em;will-change:transform;transition:transform .4s ease,box-shadow .4s ease}}@media (min-width:1001px) and (hover:hover){.HeroSection--illustration:hover .HeroSection--illustration-card,.HeroSection--illustration[has-selection-contained-within] .HeroSection--illustration-card{transform:rotate3d(0,0,0,0deg) rotate(0deg)}}@media (max-width:1000px){.HeroSection--column{flex-direction:column;width:32em;max-width:100%;padding-left:1em;padding-right:1em;margin-left:auto;margin-right:auto}.HeroSection--content{margin-right:0;margin-bottom:3em;flex:0}.HeroSection--key-points{font-size:1em}.HeroSection--illustration{width:100%}.HeroSection--workers-teaser-wrap{width:38em;max-width:100%;margin-top:0}}@media (max-width:414px){.HeroSection--column{--vertical-padding-top:2em}.HeroSection--content{text-align:center}.HeroSection--title{font-size:8.8vw}.HeroSection--description{font-size:1.25em;margin-left:auto;margin-right:auto}.HeroSection--actions{justify-content:center;font-size:1.2em;margin-bottom:2em}.HeroSection--actions-desktop{display:none}.HeroSection--actions-mobile{display:flex}.HeroSection--illustration{font-size:.75em}}.QuoteSection{padding:var(--section-vertical-padding) 3em;background:var(--section-tiger-stripe-background-color)}.QuoteSection--column{display:flex;justify-content:center}.QuoteSection--cite{font-style:normal;margin-right:4em}.QuoteSection--cite-name{font-size:2em;font-weight:700}.QuoteSection--cite-title{margin-bottom:1em}.QuoteSection--cite-company-logo{width:7em}.QuoteSection--quote{font-size:2em;width:19.5em;max-width:100%}@media (max-width:1001px){.QuoteSection--quote{font-size:1.75em}}.QuoteSection--quote strong{font-weight:600}.QuoteSection--quote>p{text-indent:-.425em}@media (max-width:768px){.QuoteSection--column{flex-direction:column;align-items:center}.QuoteSection--quote{order:0;font-size:1.25em;margin:0 0 1em}.QuoteSection--cite{order:1;margin:0;padding-left:3em;font-style:italic}.QuoteSection--cite-name{position:relative;font-size:1.25em}.QuoteSection--cite-name:before{position:absolute;content:"\2014";top:0;right:calc(100% + .4em)}}.SitesHeroSection--column{display:flex;align-items:center;justify-content:center;--vertical-padding-top:4em;padding:calc(var(--header-height) + var(--vertical-padding-top)) 2em var(--section-vertical-padding);width:100%}.SitesHeroSection--content{flex:1;position:relative;z-index:2;width:34em;max-width:100%;margin-left:auto;margin-right:auto;text-align:center}.SitesHeroSection--logo{width:11.5em;max-width:100%;margin-left:auto;margin-right:auto;margin-bottom:.5em}.SitesHeroSection--title{font-size:3.1em;line-height:1.2;font-weight:700;margin-bottom:.2em}.SitesHeroSection--description{font-size:1.5em;width:19em;max-width:100%;margin-left:auto;margin-right:auto;margin-bottom:1.25em}@media (min-width:1340px){.SitesHeroSection--title{font-size:3.8em;margin-bottom:.15em}.SitesHeroSection--description{width:26.5em}}.SitesHeroSection--plan{font-size:1.75em;font-weight:700;margin-bottom:.25em}.SitesHeroSection--plan-note{font-size:.85em;margin-bottom:2.25em}.SitesHeroSection--plan-note-link-style-refinement{--underline-size:-.1em;display:inline-block;text-indent:-.1em;margin-left:.1em;line-height:1.3}.SitesHeroSection--actions{font-size:1.333em;display:flex;width:100%;justify-content:center}.SitesHeroSection--actions-mobile{display:none}.SitesHeroSection--actions-item:not(:last-child){margin-right:1em}@media (max-width:960px){.SitesHeroSection--column{max-width:100%;padding-left:1em;padding-right:1em;margin-left:auto;margin-right:auto}}@media (max-width:414px){.SitesHeroSection--column{--vertical-padding-top:2em}.SitesHeroSection--logo{width:9em}.SitesHeroSection--title{font-size:3em}.SitesHeroSection--description{font-size:1.25em;margin-left:auto;margin-right:auto}.SitesHeroSection--actions{font-size:1.2em}.SitesHeroSection--actions-desktop{display:none}.SitesHeroSection--actions-mobile{display:flex}}.SetupSection{padding:var(--section-vertical-padding) 0;background:var(--section-tiger-stripe-background-color)}.SetupSection.SetupSection-is-first-section{--vertical-padding-top:2em;padding:calc(var(--header-height) + var(--vertical-padding-top)) 0 var(--section-vertical-padding)}[theme=dark] .SetupSection{background:var(--gray-00)}.SetupSection--title{font-size:2em;line-height:1.2;text-align:center;padding-left:1rem;padding-right:1rem;margin-top:-.25em;margin-bottom:1em}@media (max-width:414px){.SetupSection--title{font-size:1.55em}}.SetupSection--subtitle{font-size:1.15em;text-align:center;padding-left:1.5rem;padding-right:1.5rem;margin-top:-1em;margin-bottom:2em}@media (max-width:414px){.SetupSection--subtitle{font-size:1em}}.SetupSection--steps{--step-content-width:36em;--step-content-padding:1.5em;display:flex;flex-direction:column;align-items:center;justify-content:center;padding-left:1em;padding-right:1em;width:100%}.SetupSection--step{position:relative;width:100%}.SetupSection--step-number{--size-ems:2;--font-size-ems:1.25;--width:calc(var(--size-ems)*1em);position:absolute;font-size:calc(var(--font-size-ems)*1em);width:var(--width);top:1em;height:100%;left:calc(50% - var(--width) - (var(--step-content-width)/2 + var(--step-content-padding))/var(--font-size-ems))}.SetupSection--step-number-connector{position:absolute;top:0;right:0;bottom:0;left:0;margin-left:auto;margin-right:auto;width:1px;background:var(--gray-7)}[theme=dark] .SetupSection--step-number-connector{background:var(--background-color)}.SetupSection--step:last-child .SetupSection--step-number-connector{display:none}.SetupSection--step-number-text{position:absolute;top:0;left:0;width:calc(var(--size-ems)*1em);height:calc(var(--size-ems)*1em);line-height:var(--size-ems);text-align:center;background:var(--gray-7);color:var(--gray-1);border-radius:50%}[theme=dark] .SetupSection--step-number-text{background:var(--background-color);color:var(--gray-7)}.SetupSection--step-content{padding:var(--step-content-padding);width:var(--step-content-width);max-width:100%;margin-left:auto;margin-right:auto;background:var(--background-color);box-shadow:0 .15em .3em -.1em rgba(var(--shadow-color-rgb),.1);border-radius:.5em}.SetupSection--step:not(:last-child) .SetupSection--step-content{margin-bottom:2em}.SetupSection--step-title{font-size:1.25em;font-weight:600;margin-bottom:1em}.SetupSection--step-title-mobile{display:none}@media (max-width:414px){.SetupSection--step-title-desktop{display:none}.SetupSection--step-title-mobile{display:block}}.SetupSection--step-title-number{display:none}@media (max-width:52em){.SetupSection--step-number{display:none}.SetupSection--step-title-number{display:inline}}@media (max-width:320px){.SetupSection--step-content{padding:1em}.SetupSection--step:not(:last-child) .SetupSection--step-content{margin-bottom:1em}.SetupSection--step-title{margin-bottom:.5em}}.SetupSection--step-details{word-wrap:break-word}[theme=dark] .SetupSection--step-details{color:var(--gray-7)}.SetupSection--step-details-mobile{display:none}@media (max-width:414px){.SetupSection--step-details-desktop{display:none}.SetupSection--step-details-mobile{display:block}}.SetupSection--button-and-text{display:flex}.SetupSection--button-and-text-button{flex-shrink:0;margin-right:1.4em}.SetupSection--button-and-text-text{flex:1}.GreatPowerSection{padding-top:var(--section-vertical-padding);display:flex;justify-content:center;max-width:100%;text-align:center;margin-left:auto;margin-right:auto}.GreatPowerSection--title{font-size:3.25em;line-height:1.2;font-weight:700;margin-top:-.25em;margin-left:auto;margin-right:auto}.GreatPowerSection--title-first-line{font-size:1.5em}[theme=dark] .GreatPowerSection--title-second-line{color:var(--gray-4)}@media (max-width:500px){.GreatPowerSection--title{font-size:8vw}}.BenefitsSection--column{padding:var(--section-vertical-padding) 3em;width:86em;max-width:100%;margin-left:auto;margin-right:auto}.BenefitsSection--benefits{--benefit-width:22em;--gutter:4em;display:flex;align-items:stretch;justify-content:center;flex-wrap:wrap;width:calc((var(--benefit-width) + var(--gutter))*2);margin:calc(-1*var(--gutter)/2);max-width:100%;margin-left:auto;margin-right:auto}.BenefitsSection--benefit{width:var(--benefit-width);margin:calc(var(--gutter)/2);max-width:100%}.BenefitsSection--cta{margin-top:calc(var(--section-vertical-padding)*0.5);font-size:1.333em;text-align:center}.BenefitsSection--cta-title{font-size:1.5em;font-weight:700;margin-bottom:1em}@media (max-width:50em){.BenefitsSection--column{padding-left:1em;padding-right:1em}.BenefitsSection--benefits{--gutter:4em}.BenefitsSection--benefit{margin-left:auto;margin-right:auto}}.BenefitsSection--benefit-illustration{margin-bottom:.5em}.BenefitsSection--benefit-title{font-size:1.333em;font-weight:700;margin-bottom:.3333em}[theme=dark] .BenefitsSection--benefit-description{color:var(--gray-6)}.BenefitsSection--benefit-description-footnote-p{padding-right:2em;font-size:.9em;font-style:italic}.BenefitsSection--benefit-description-latency-test{display:flex;align-items:center}.BenefitsSection--benefit-description-latency-test-value{font-family:var(--monospace-font-family);font-size:.925em;font-weight:700;margin-left:.5em;margin-right:1.5em}.BenefitsSection--benefit-description-latency-test-value>span{-webkit-animation:benefit-section-latency-test-flash .3s ease;animation:benefit-section-latency-test-flash .3s ease}@-webkit-keyframes benefit-section-latency-test-flash{0%{color:var(--orange-6)}to{color:inherit}}@keyframes benefit-section-latency-test-flash{0%{color:var(--orange-6)}to{color:inherit}}.BenefitsSection--benefit-description-latency-test-button{margin-left:auto;font-size:.8em}@media (max-width:414px){.BenefitsSection--benefit-illustration>img{margin:auto}.BenefitsSection--benefit-description,.BenefitsSection--benefit-title{text-align:center}.BenefitsSection--benefit-description{padding-left:1em;padding-right:1em}.BenefitsSection--benefit-description-footnote-p{padding-right:0}.BenefitsSection--cta{font-size:1em}.BenefitsSection--cta-cta{font-size:1.333em}}@media (max-width:320px){.BenefitsSection--benefit-description{padding-left:0;padding-right:0}}.CustomerLogosSection{padding-top:3em;padding-bottom:3.5em;background:var(--section-tiger-stripe-background-color);color:var(--deemphasized-color)}.CustomerLogosSection--title{font-family:var(--monospace-font-family);font-weight:700;text-transform:uppercase;text-align:center;margin-bottom:2em}.CustomerLogosSection--logos{display:flex;align-items:center;justify-content:center;padding-left:1em;padding-right:1em;width:100%}.CustomerLogosSection--logo{--height:2em;--vertical-adjust:0;position:relative;height:var(--height);width:calc(var(--height)/var(--aspect-ratio));margin:0 calc(var(--height)*0.875);top:calc(var(--height)*var(--vertical-adjust))}[theme=dark] .CustomerLogosSection--logo{-webkit-filter:brightness(3.2)}@media (min-width:901px){[theme=dark] .CustomerLogosSection{padding-top:var(--section-vertical-padding);padding-bottom:0}}@media (max-width:1000px){.CustomerLogosSection--logo{--height:3vw}}@media (max-width:600px){.CustomerLogosSection--title{margin-bottom:3em}.CustomerLogosSection--logos{flex-wrap:wrap;margin-top:-.75em;margin-bottom:-.75em}.CustomerLogosSection--logo{--height:1.25em;margin-top:.75em;margin-bottom:.75em}}.PlansSection--column{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--section-vertical-padding) 1em;width:100%}[theme=light] .PlansSection-is-top-abutted .PlansSection--column{padding-top:0}.PlansSection--plans{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;width:100%}.PlansSection--plan{width:26em;padding:3em;border:1px solid rgba(var(--cloudflare-logo-orange-rgb),.4);background:#fff;border-radius:1em}@media (min-width:901px){.PlansSection--plan-is-free{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.PlansSection--plan-is-bundled{padding-top:5em;padding-bottom:5em;box-shadow:0 .5em 1em -.75em rgba(var(--cloudflare-logo-orange-rgb),.5)}[theme=dark] .PlansSection--plan-is-free{margin-right:0}[theme=dark] .PlansSection{background:var(--section-tiger-stripe-background-color)}[theme=dark] .PlansSection-is-after-customer-logos-section .PlansSection--column{padding-top:3em}[theme=dark] .PlansSection--plan{border:0;background:rgba(0,0,0,.1);box-shadow:inset 0 .25em .75em rgba(0,0,0,.05)}[theme=dark] .PlansSection--plan-is-bundled{background:hsla(0,0%,100%,.03);box-shadow:0 .5em 1em rgba(var(--gray-0-rgb),.5)}}.PlansSection--plan-header{text-align:center;margin-bottom:2em}.PlansSection--plan-title{font-size:3.25em;line-height:1;margin-bottom:.5em;font-weight:700}.PlansSection--plan-subtitle{font-size:1.333em}.PlansSection--plan-subtitle-note{font-size:.8em;margin-bottom:1.5em}.PlansSection--plan-plus-symbol{font-size:1.5em;font-weight:700;margin-left:.25em;margin-right:.25em;line-height:.5}.PlansSection--plan-details{margin-bottom:2em;padding-left:1em;display:inline-block;text-align:left}.PlansSection--plan-details-list-alignment-item{opacity:0}.PlansSection--plan-cta{font-size:1.333em;text-align:center}@media (max-width:900px){.PlansSection--plans{display:block;max-width:100%}.PlansSection--plan{width:30em;padding:0;border:0;background:transparent;max-width:100%;margin-left:auto;margin-right:auto;text-align:center}.PlansSection--plan-details{margin-bottom:1em;padding-left:.5em}.PlansSection--plan:not(:last-child){margin-bottom:var(--section-vertical-padding)}.PlansSection--plan-details-list-alignment-item{height:0;margin-top:-1em}}.PlansSection--workers-teaser-wrap{display:block;margin:var(--section-vertical-padding) auto 0;padding:0 10vw;text-align:center}@media (max-width:900px){.PlansSection--workers-teaser-wrap{width:38em;max-width:100%}}</style><meta name="generator" content="Gatsby 2.16.1"/><title data-react-helmet="true">Workers Sites 路 Cloudflare Workers庐</title><link data-react-helmet="true" rel="icon" type="image/png" href="/web/20201028091044im_/https://workers.cloudflare.com/favicon.ico" sizes="48x48"/><meta data-react-helmet="true" name="description" content="Build your next application with Cloudflare Workers"/><meta data-react-helmet="true" name="image" content="https://repository-images.githubusercontent.com/215130914/0a128400-41f5-11ea-8dc8-b1c09a48fa06"/><meta data-react-helmet="true" property="og:description" content="Build your next application with Cloudflare Workers"/><meta data-react-helmet="true" name="og:image" content="https://web.archive.org/web/20201028091044im_/https://repository-images.githubusercontent.com/215130914/0a128400-41f5-11ea-8dc8-b1c09a48fa06"/><meta data-react-helmet="true" property="og:title" content="Workers Sites 路 Cloudflare Workers庐"/><meta data-react-helmet="true" property="og:type" content="website"/><meta data-react-helmet="true" name="twitter:card" content="summary"/><meta data-react-helmet="true" name="twitter:creator" content="@cloudflaredev"/><meta data-react-helmet="true" name="twitter:description" content="Build your next application with Cloudflare Workers"/><meta data-react-helmet="true" name="twitter:image:src" content="https://repository-images.githubusercontent.com/215130914/0a128400-41f5-11ea-8dc8-b1c09a48fa06"/><meta data-react-helmet="true" name="twitter:title" content="Workers Sites 路 Cloudflare Workers庐"/><link rel="preconnect" href="https://web.archive.org/web/20201028091044/https://cdn.sanity.io/"/><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://web.archive.org/web/20201028091044/https://www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f); })(window,document,'script','cfDataLayer', 'GTM-PKQFGQB');</script><link as="script" rel="preload" href="/web/20201028091044/https://workers.cloudflare.com/webpack-runtime-b747c9398a10bdc222d7.js"/><link as="script" rel="preload" href="/web/20201028091044/https://workers.cloudflare.com/app-8242b837ce44299f1867.js"/><link as="script" rel="preload" href="/web/20201028091044/https://workers.cloudflare.com/styles-016375ac1294eeeb5596.js"/><link as="script" rel="preload" href="/web/20201028091044/https://workers.cloudflare.com/commons-4112fd79a273fd5e9e80.js"/><link as="script" rel="preload" href="/web/20201028091044/https://workers.cloudflare.com/component---src-pages-sites-js-6916bf0496ed1fa84047.js"/><link as="fetch" rel="preload" href="/web/20201028091044/https://workers.cloudflare.com/page-data/sites/page-data.json" crossorigin="anonymous"/><script> document.documentElement.setAttribute('domain', document.domain) </script><script> (() => { const setTheme = (theme) => { document.documentElement.setAttribute("theme", theme) localStorage.theme = theme } document.documentElement.addEventListener("dblclick", () => { const theme = document.documentElement.getAttribute("theme") setTheme(theme === "dark" ? "light" : "dark") }) const query = window.matchMedia("(prefers-color-scheme: dark)") query.addListener(() => { setTheme(query.matches ? "dark" : "light") }) if (["dark", "light"].includes(localStorage.theme)) { setTheme(localStorage.theme) } else { setTheme(query.matches ? "dark" : "light") } })() </script></head><body> <script id="edge_state" type="application/json"> {"bookmarks":[]} </script> <noscript><iframe src="https://web.archive.org/web/20201028091044if_/https://www.googletagmanager.com/ns.html?id=GTM-PKQFGQB" height="0" width="0" style="display: none; visibility: hidden"></iframe></noscript><noscript id="gatsby-noscript">This app works best with JavaScript enabled.</noscript><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><header class="Header"><nav class="Nav"><a class="Nav--link Nav--link-logo" href="/web/20201028091044/https://workers.cloudflare.com/"><div class="CloudflareWorkersLogo CloudflareWorkersLogo-horizontal-combination-mark"><svg viewbox="0 0 1430 375"><title>Cloudflare Workers logo (horizontal combination mark)</title><defs><lineargradient id="CloudflareWorkersLogoCombinationMarkHorizontal--gradient-a" x1="50%" x2="25.7%" y1="100%" y2="8.7%"><stop offset="0%" stop-color="#eb6f07"></stop><stop offset="100%" stop-color="#fab743"></stop></lineargradient><lineargradient id="CloudflareWorkersLogoCombinationMarkHorizontal--gradient-b" x1="81%" x2="40.5%" y1="83.7%" y2="29.5%"><stop offset="0%" stop-color="#d96504"></stop><stop offset="100%" stop-color="#d96504" stop-opacity="0"></stop></lineargradient><lineargradient id="CloudflareWorkersLogoCombinationMarkHorizontal--gradient-c" x1="42%" x2="84%" y1="8.7%" y2="79.9%"><stop offset="0%" stop-color="#eb6f07"></stop><stop offset="100%" stop-color="#eb720a" stop-opacity="0"></stop></lineargradient><lineargradient id="CloudflareWorkersLogoCombinationMarkHorizontal--gradient-d" x1="50%" x2="25.7%" y1="100%" y2="8.7%"><stop offset="0%" stop-color="#ee6f05"></stop><stop offset="100%" stop-color="#fab743"></stop></lineargradient><lineargradient id="CloudflareWorkersLogoCombinationMarkHorizontal--gradient-e" x1="-33.2%" x2="91.7%" y1="100%" y2="0%"><stop offset="0%" stop-color="#d96504" stop-opacity=".8"></stop><stop offset="49.8%" stop-color="#d96504" stop-opacity=".2"></stop><stop offset="100%" stop-color="#d96504" stop-opacity="0"></stop></lineargradient><lineargradient id="CloudflareWorkersLogoCombinationMarkHorizontal--gradient-f" x1="50%" x2="25.7%" y1="100%" y2="8.7%"><stop offset="0%" stop-color="#ffa95f"></stop><stop offset="100%" stop-color="#ffebc8"></stop></lineargradient><lineargradient id="CloudflareWorkersLogoCombinationMarkHorizontal--gradient-g" x1="8.1%" x2="96.5%" y1="1.1%" y2="48.8%"><stop offset="0%" stop-color="#fff" stop-opacity=".5"></stop><stop offset="100%" stop-color="#fff" stop-opacity=".1"></stop></lineargradient><lineargradient id="CloudflareWorkersLogoCombinationMarkHorizontal--gradient-h" x1="-13.7%" y1="104.2%" y2="46.2%"><stop offset="0%" stop-color="#fff" stop-opacity=".5"></stop><stop offset="100%" stop-color="#fff" stop-opacity=".1"></stop></lineargradient></defs><path class="CloudflareWorkersLogoCombinationMark--workers-wordmark" fill="#232324" d="M553.2 320.1L500.6 165h36.3l31.9 104.3 34.5-104.7h29L667 269.3 699 165h35.3l-52.5 155.1h-29.5l-34.8-100.8-34.7 100.8h-29.5zm246.2 1.5c-36.6 0-63.6-27-63.6-60.9v-.4c0-34 27.3-61.4 64-61.4 36.5 0 63.6 27 63.6 61v.4c0 33.8-27.3 61.3-64 61.3zm.4-28.8c19.1 0 30.6-14.7 30.6-32.1v-.4c0-17.4-12.6-32.6-31-32.6-19.2 0-30.6 14.7-30.6 32.1v.5c0 17.3 12.5 32.5 31 32.5zm87.8 26.2V201H921v23.8c6.8-16.2 17.8-26.8 37.6-26v35H957c-22.2 0-35.9 13.5-35.9 41.6V319h-33.4zm92 0V158.4h33.4V244l39.1-43h40l-44.8 46.5 46.4 71.5h-38.3l-30.8-48.2-11.6 12.3V319h-33.5zm180.6 2.6c-35.5 0-61.6-24.8-61.6-60.9v-.4c0-33.7 24-61.4 58.3-61.4 39.3 0 57.4 30.6 57.4 64 0 2.6-.2 5.7-.5 8.8h-82c3.3 15.2 13.8 23.1 28.8 23.1 11.2 0 19.4-3.5 28.6-12.1l19.1 17a59 59 0 0 1-48.1 22zm-28.9-70.8h50.4c-2-15-10.8-25-24.8-25-13.9 0-23 9.8-25.6 25zm107.8 68.2V201h33.5v23.8c6.8-16.2 17.8-26.8 37.6-26v35h-1.8c-22.2 0-35.8 13.5-35.8 41.6V319H1239zm133.4 2.2c-16.5 0-35-5.5-50.6-17.8l14.3-22a66.7 66.7 0 0 0 37.1 14c9.7 0 14.1-3.5 14.1-8.7v-.5c0-7.2-11.4-9.7-24.4-13.6-16.5-4.9-35.2-12.6-35.2-35.4v-.5c0-24 19.4-37.4 43.1-37.4 15 0 31.3 5 44 13.7l-12.7 23a69.9 69.9 0 0 0-32-11c-8 0-12.3 3.6-12.3 8.2v.4c0 6.6 11.3 9.7 24 14.1 16.5 5.5 35.7 13.4 35.7 35v.4c0 26.2-19.6 38.1-45.1 38.1z"></path><path class="CloudflareWorkersLogoCombinationMark--cloudflare-wordmark" fill="#656566" fill-rule="nonzero" d="M1210.9 78.9a6 6 0 1 1 0-12.1c3.3 0 6.1 2.7 6.1 6s-2.8 6-6.1 6zm0-11a4.9 4.9 0 0 0-4.9 5c0 2.6 2.2 4.8 4.9 4.8s4.9-2.2 4.9-4.9c0-2.6-2.2-4.8-4.9-4.8zm3.1 8.1h-1.4l-1.2-2.3h-1.6V76h-1.3v-6.6h3.2c1.4 0 2.3.9 2.3 2.1a2 2 0 0 1-1.4 2l1.4 2.5zm-2.4-3.5c.5 0 1-.3 1-1s-.4-1-1-1h-2v2h2zm-636.5-6.3h15.6v42.1H618v13.5H575V66.2zm58.9 28V94c0-16 13-29 30.3-29a29 29 0 0 1 30 28.8v.2c0 16-13 28.9-30.2 28.9A29 29 0 0 1 634 94.1zm44.6 0V94c0-8-5.8-15-14.4-15-8.5 0-14.2 6.8-14.2 14.9v.1c0 8 5.8 15 14.3 15 8.6 0 14.3-6.8 14.3-14.9zm34.9 3.2V66.2h15.8v31c0 8 4.1 11.7 10.3 11.7 6.2 0 10.3-3.6 10.3-11.4V66.2h15.8V97c0 18-10.3 25.8-26.3 25.8s-26-8-26-25.4zm76-31.2h21.6c20 0 31.7 11.4 31.7 27.5v.2c0 16-11.8 28-32 28h-21.3V66.1zm22 42c9.2 0 15.4-5.1 15.4-14.2V94c0-9-6.2-14.1-15.5-14.1h-6.3V108h6.3v.1zm54-42h44.9v13.5H881v9.5h26.6V102H881v19.8h-15.5V66.2zm66.5 0h15.5v42.1h27.2v13.5H932V66.2zm83.3-.4h15l24 56h-16.8l-4-9.9h-21.7l-4 10h-16.3l23.8-56.1zm13.7 34.1l-6.2-15.8-6.3 15.8h12.5zm45.2-33.7h26.6c8.6 0 14.5 2.2 18.3 6 3.3 3.2 5 7.5 5 13v.2c0 8.6-4.6 14.2-11.5 17L1126 122h-18l-11.4-16.8h-6.8v16.8h-15.6V66.2zm25.9 26.7c5.3 0 8.3-2.6 8.3-6.6v-.2c0-4.3-3.2-6.5-8.4-6.5h-10.3v13.3h10.4zm46.4-26.7h45v13H1162v8.5h26.9v12.2h-27v8.8h30.2v13.1h-45.5V66.2zM541 100.7a13.8 13.8 0 0 1-12.8 8.3c-8.5 0-14.3-7-14.3-15V94c0-8 5.7-15 14.2-15a14 14 0 0 1 13.3 9.3H558a29.2 29.2 0 0 0-29.6-23.1c-17.3 0-30.3 13-30.3 29v.1a29 29 0 0 0 30.1 28.8c14.8 0 26.4-9.5 29.4-22.2l-16.4-.1z"></path><path fill="url(#CloudflareWorkersLogoCombinationMarkHorizontal--gradient-a)" d="M107 5.4l49 88.4-45 81a26 26 0 0 0 0 25.3l45 81.2-49 88.4A52 52 0 0 1 85 349L7 213.5a52.2 52.2 0 0 1 0-52L85 26a52 52 0 0 1 22-20.6z"></path><path fill="url(#CloudflareWorkersLogoCombinationMarkHorizontal--gradient-b)" d="M111 174.9a26 26 0 0 0 0 25.2l45 81.2-49 88.4A52 52 0 0 1 85 349L7 213.5C.8 202.8 35.5 190 111 175z" opacity=".7"></path><path fill="url(#CloudflareWorkersLogoCombinationMarkHorizontal--gradient-c)" d="M112 14.3l44 79.5-7.3 12.7-38.8-65.7C98.7 22.5 81.6 32 60.2 69l3.2-5.5L85 26a52 52 0 0 1 21.8-20.6l5.1 8.9z" opacity=".5"></path><path fill="url(#CloudflareWorkersLogoCombinationMarkHorizontal--gradient-d)" d="M331 26l78 135.5c9.3 16 9.3 36 0 52L331 349a52 52 0 0 1-45 26h-78l97-174.9a26 26 0 0 0 0-25.2L208 0h78a52 52 0 0 1 45 26z"></path><path fill="url(#CloudflareWorkersLogoCombinationMarkHorizontal--gradient-e)" d="M282 374.4l-77 .7 93.2-175.8a27 27 0 0 0 0-25.4L205 0h17.6l97.8 173.1a27 27 0 0 1-.1 26.8 15624 15624 0 0 0-62.7 110c-19 33.4-10.8 54.9 24.4 64.5z"></path><path fill="url(#CloudflareWorkersLogoCombinationMarkHorizontal--gradient-f)" d="M130 375c-8 0-16-1.9-23-5.3l96.2-173.5c3-5.4 3-12 0-17.4L107 5.4A52 52 0 0 1 130 0h78l97 174.9a26 26 0 0 1 0 25.2L208 375h-78z"></path><path fill="url(#CloudflareWorkersLogoCombinationMarkHorizontal--gradient-g)" d="M298.2 178.8L199 0h9l97 174.9a26 26 0 0 1 0 25.2L208 375h-9l99.2-178.8c3-5.4 3-12 0-17.4z" opacity=".6"></path><path fill="url(#CloudflareWorkersLogoCombinationMarkHorizontal--gradient-h)" d="M203.2 178.8L107 5.4c3-1.6 6.6-2.8 10-3.8 21.2 38.1 52.5 95.9 94 173.3a26 26 0 0 1 0 25.2L115.5 373c-3.4-1-5.2-1.7-8.4-3.2l96-173.5c3-5.4 3-12 0-17.4z" opacity=".6"></path></svg></div></a><div class="Nav--main-links"><div class="Nav--item"><a class="Nav--link" href="/web/20201028091044/https://workers.cloudflare.com/">Home</a></div><div class="Nav--item"><a aria-current="page" class="Nav--link Nav--link-is-active" href="/web/20201028091044/https://workers.cloudflare.com/sites">Sites</a></div><div class="Nav--item"><a class="Nav--link" href="/web/20201028091044/https://workers.cloudflare.com/built-with">Built with</a></div><div class="Nav--item"><a class="Nav--link" href="https://web.archive.org/web/20201028091044/https://workers.cloudflare.com/docs">Docs</a></div><div class="Nav--item"><a class="Nav--link" href="https://web.archive.org/web/20201028091044/https://community.cloudflare.com/tags/workers">Community</a></div></div><div class="Nav--account-management"><div class="Nav--item Nav--item-sign-in"><a class="Button Button-is-secondary" href="https://web.archive.org/web/20201028091044/https://dash.cloudflare.com/login?redirect_uri=https%3A%2F%2Fdash.cloudflare.com%2F%3Faccount%3Dworkers">Log in</a></div><div class="Nav--item Nav--item-sign-up"><a class="Button Button-is-primary" href="https://web.archive.org/web/20201028091044/https://dash.cloudflare.com/sign-up/workers">Sign up</a></div></div></nav></header><main><section class="SitesHeroSection"><div class="SitesHeroSection--column"><div class="SitesHeroSection--content"><div class="SitesHeroSection--logo"><svg id="CloudflareWorkersSitesWordmark" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 1486 166" role="img" aria-labelledby="CloudflareWorkersSitesWordmark--title CloudflareWorkersSitesWordmark--desc" fill="currentColor"><title id="CloudflareWorkersSitesWordmark--title">Workers Sites</title><desc id="CloudflareWorkersSitesWordmark--desc">The wordmark for the Workers Sites.</desc><path fill-rule="evenodd" d="M1050.7 165a91 91 0 0 1-63.6-25l11-12.8c16.1 14.7 31.7 22 53.2 22 21 0 34.7-11.1 34.7-26.4v-.5c0-14.4-7.8-22.7-40.4-29.5-35.8-7.8-52.2-19.4-52.2-45v-.4c0-24.4 21.5-42.4 51-42.4 22.7 0 39 6.4 54.7 19.1L1089 37.7a68.3 68.3 0 0 0-44.9-17c-20.2 0-33 11.2-33 25.2v.4c0 14.7 8 23 42.1 30.2 34.7 7.6 50.7 20.3 50.7 44v.5c0 26.6-22.2 44-53.1 44zm85-142.2v-19h19.5v19h-19.6zm1 140v-115h17.1v115h-17zm93.9 2c-18.5 0-32.5-9.2-32.5-32.5V63h-16V47.9h16V13.2h17.1V48h36.5v15h-36.5v67.2c0 14 7.8 19.1 19.4 19.1a36 36 0 0 0 16.6-4v14.7a43 43 0 0 1-20.6 4.9zm96.7.6c-31.6 0-57.3-24.2-57.3-59.8v-.4c0-33.1 23.3-59.8 55-59.8 34 0 53.6 27.1 53.6 60.7 0 2.2 0 3.5-.2 5.5h-91.1c2.4 25 20 39 40.4 39 15.8 0 27-6.5 36.2-16.3l10.7 9.6a59.3 59.3 0 0 1-47.3 21.5zm-40-66.4h74c-1.8-21-13.8-39.1-36.7-39.1-20 0-35 16.6-37.3 39zm157.8 66a79 79 0 0 1-47.5-17l8.6-12.1a67.2 67.2 0 0 0 39.8 14.6c13.8 0 23.8-7 23.8-18.2v-.4c0-11.6-13.6-16-28.7-20.3-18-5-38-11.3-38-32.4v-.4c0-19.8 16.5-33 39.1-33 14 0 29.6 5 41.4 12.7l-7.8 13a65 65 0 0 0-34-11.2c-13.6 0-22.2 7.1-22.2 16.7v.4c0 11 14.2 15.1 29.5 19.8 17.8 5.3 36.9 12.2 36.9 32.9v.4c0 21.8-18 34.5-40.9 34.5zM52.6 161.9L0 6.6h36.3l32 104.4L102.8 6.2H132L166.5 111l32-104.4h35.4L181.2 162h-29.5L117 61 82.1 161.9H52.6zm246.5 1.5c-36.6 0-63.7-27-63.7-61v-.4c0-34 27.3-61.5 64-61.5 36.6 0 63.7 27.1 63.7 61v.5c0 33.9-27.3 61.4-64 61.4zm.4-28.8c19.2 0 30.6-14.8 30.6-32.2v-.4c0-17.4-12.6-32.6-31-32.6-19.2 0-30.7 14.7-30.7 32.1v.5c0 17.4 12.6 32.6 31 32.6zm87.9 26.2v-118h33.4v23.7c6.9-16.3 17.9-26.9 37.7-26v35h-1.8c-22.2 0-35.9 13.5-35.9 41.7v43.6h-33.4zm92 0V0H513v85.7l39.2-43h40l-44.9 46.5 46.5 71.6h-38.3l-30.8-48.3-11.7 12.4v35.9h-33.5zm180.8 2.6c-35.5 0-61.7-24.9-61.7-61v-.4c0-33.7 24-61.5 58.4-61.5 39.4 0 57.5 30.6 57.5 64.1 0 2.6-.2 5.7-.5 8.8h-82.1c3.3 15.2 13.9 23.1 28.8 23.1 11.3 0 19.4-3.5 28.7-12l19.1 16.9a59 59 0 0 1-48.2 22zm-28.8-71h50.4c-2-14.9-10.8-25-24.9-25-13.9 0-22.9 9.9-25.5 25zm107.9 68.4v-118h33.4v23.7c6.9-16.3 17.9-26.9 37.7-26v35h-1.8c-22.2 0-35.9 13.5-35.9 41.7v43.6h-33.4zm133.4 2.2c-16.5 0-35-5.5-50.6-17.9l14.3-22a66.7 66.7 0 0 0 37.2 14c9.7 0 14-3.4 14-8.7v-.5c0-7.2-11.4-9.6-24.4-13.6-16.5-4.9-35.2-12.6-35.2-35.5v-.4c0-24 19.4-37.4 43.2-37.4 15 0 31.2 5 44 13.6l-12.8 23.1a70 70 0 0 0-31.9-11c-8.1 0-12.3 3.5-12.3 8.2v.4c0 6.6 11.2 9.7 24 14.1 16.5 5.5 35.7 13.4 35.7 35v.5c0 26.2-19.6 38-45.2 38z"></path></svg></div><h1 class="SitesHeroSection--title">Speed, meet simplicity.</h1><div class="SitesHeroSection--description"><p>Build blazing fast websites by seamlessly deploying static assets alongside your APIs and application code.</p></div><div class="SitesHeroSection--plan">Starting at $5/mo</div><div class="SitesHeroSection--plan-note">(Included in a <a class="Link SitesHeroSection--plan-note-link-style-refinement" href="#plans">Workers Bundled</a> plan)</div><div class="SitesHeroSection--actions SitesHeroSection--actions-desktop"><div class="SitesHeroSection--actions-item"><a class="Button Button-is-primary" href="https://web.archive.org/web/20201028091044/https://dash.cloudflare.com/sign-up/workers">Sign up</a></div><div class="SitesHeroSection--actions-item"><a class="Button Button-is-secondary" href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/sites">Read docs</a></div></div><div class="SitesHeroSection--actions SitesHeroSection--actions-mobile"><div class="SitesHeroSection--actions-item"><a class="Button Button-is-secondary" href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/sites">View docs</a></div><div class="SitesHeroSection--actions-item"><a class="Button Button-is-primary" href="https://web.archive.org/web/20201028091044/https://dash.cloudflare.com/sign-up/workers">聽Sign聽up聽</a></div></div></div></div></section><section class="SetupSection"><div class="SetupSection--title">Step-by-step instructions</div><div class="SetupSection--subtitle">From signup to site in under 5 minutes</div><div class="SetupSection--steps"><div class="SetupSection--step"><div class="SetupSection--step-number"><div class="SetupSection--step-number-connector"></div><div class="SetupSection--step-number-text">1</div></div><div class="SetupSection--step-content"><div class="SetupSection--step-title"><span class="SetupSection--step-title-number">1. </span>Sign up for Workers Bundled.</div><div class="SetupSection--step-details SetupSection--step-details-desktop"><div class="SetupSection--button-and-text"><div class="SetupSection--button-and-text-button"><a class="Button Button-is-primary" href="https://web.archive.org/web/20201028091044/https://dash.cloudflare.com/sign-up/workers">Sign up</a></div><div class="SetupSection--button-and-text-text">The signup process will guide you through choosing a workers.dev subdomain, selecting the Workers Bundled plan, and veryifying your email address.</div></div></div><div class="SetupSection--step-details SetupSection--step-details-mobile"><div class="MarkdownLite"><p><a class="Button Button-is-primary" href="https://web.archive.org/web/20201028091044/https://dash.cloudflare.com/sign-up/workers">Sign up</a></p><p>The signup process will guide you through choosing a workers.dev subdomain, selecting the Workers Bundled plan, and veryifying your email address.</p></div></div></div></div><div class="SetupSection--step"><div class="SetupSection--step-number"><div class="SetupSection--step-number-connector"></div><div class="SetupSection--step-number-text">2</div></div><div class="SetupSection--step-content"><div class="SetupSection--step-title"><span class="SetupSection--step-title-number">2. </span>Install and configure Wrangler, the Workers CLI.</div><div class="SetupSection--step-details"><div class="MarkdownLite"><p>From any directory, use <span class="PopoverTarget" data-js-popover="npm">NPM</span> to install Wrangler globally:</p><pre class="CodeBlock CodeBlock-is-one-liner" language="sh"><code class="CodeBlock--code"><u><b class="CodeBlock--token-directory">~/</b> <b class="CodeBlock--token-prompt">$</b> </u>npm install -g @cloudflare/wrangler</code></pre><p>To configure Wrangler, you need a <strong>Workers API Token</strong> from your <a class="Link" href="https://web.archive.org/web/20201028091044/https://dash.cloudflare.com/profile/api-tokens">Profile</a>.</p><p>Click "Create Token" and use the "Edit Cloudflare Workers" template. For more information, see <a class="Link" href="https://web.archive.org/web/20201028091044/https://support.cloudflare.com/hc/en-us/articles/200167836-Managing-API-Tokens-and-Keys">"Managing API Tokens and Keys"</a> in our documentation.</p><p>Now run the config command to interactively enter your new API Token:</p><pre class="CodeBlock" language="sh"><code class="CodeBlock--code"><u><b class="CodeBlock--token-directory">~/</b> <b class="CodeBlock--token-prompt">$</b> </u>wrangler config<u><br/>Enter API Token:<br/>yourNewTokenCreatedAbove</u></code></pre></div></div></div></div><div class="SetupSection--step"><div class="SetupSection--step-number"><div class="SetupSection--step-number-connector"></div><div class="SetupSection--step-number-text">3</div></div><div class="SetupSection--step-content"><div class="SetupSection--step-title"><span class="SetupSection--step-title-number">3. </span>Create your first site in under 3 minutes</div><div class="SetupSection--step-details"><div class="MarkdownLite"><p>To create a new site, just generate it with the <code class="InlineCode">--site</code> flag:</p><pre class="CodeBlock CodeBlock-is-one-liner" language="sh"><code class="CodeBlock--code"><u><b class="CodeBlock--token-directory">~/</b> <b class="CodeBlock--token-prompt">$</b> </u>wrangler generate --site my-site</code></pre><p>That will create a directory called <code class="InlineCode">my-site</code> with all of the initial files necessary to create a basic site. Enter into that directory:</p><pre class="CodeBlock CodeBlock-is-one-liner" language="sh"><code class="CodeBlock--code"><u><b class="CodeBlock--token-directory">~/</b> <b class="CodeBlock--token-prompt">$</b> </u>cd my-site</code></pre><p>From that directory, you can deploy the site to your workers.dev subdomain using one simple command:</p><pre class="CodeBlock" language="sh"><code class="CodeBlock--code"><u><b class="CodeBlock--token-directory">~/my-site</b> <b class="CodeBlock--token-prompt">$</b> </u>wrangler publish<u><br/><b class="CodeBlock--token-success">Published</b><b class="CodeBlock--token-success"> </b><b class="CodeBlock--token-value">https://my-site.<subdomain>.workers.dev</b></u></code></pre><p>If you鈥檇 like more info on deploying an existing static site, follow our <a class="Link" href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/sites">general quick start</a>. Or you can watch this tutorial in which we create & deploy a site from <a class="Link" href="https://web.archive.org/web/20201028091044/https://github.com/facebook/create-react-app">create鈥憆eact鈥慳pp</a> in under 3 minutes:</p><div class="StreamVideo"><div class="AspectRatio" style="--aspect-ratio:calc(16 / 9)"><iframe class="AspectRatio--content" title="Cloudflare Workers Sites setup video" src="https://web.archive.org/web/20201028091044if_/https://iframe.cloudflarestream.com/9943b400b59802b77f83a8a57f39d682" frameborder="0" allow="autoplay; encrypted-media; picture-in-picture" allowfullscreen=""></iframe></div></div></div></div></div></div><div class="SetupSection--step"><div class="SetupSection--step-number"><div class="SetupSection--step-number-connector"></div><div class="SetupSection--step-number-text">4</div></div><div class="SetupSection--step-content"><div class="SetupSection--step-title"><span class="SetupSection--step-title-number">4. </span>Take things to the next level.</div><div class="SetupSection--step-details"><div class="MarkdownLite"><p>Learn how to extend a static site using serverless functions by visiting the <a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers" class="Link">docs</a> and <a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/templates" class="Link">template gallery</a>.</p></div></div></div></div></div></section><section class="GreatPowerSection"><h2 class="GreatPowerSection--title">Your site. Our network.</h2></section><section class="BenefitsSection"><div class="BenefitsSection--column"><div class="BenefitsSection--benefits"><div class="BenefitsSection--benefit"><div class="BenefitsSection--benefit-illustration" light-theme-only="true"><img alt="Global network illustration" src="/web/20201028091044im_/https://workers.cloudflare.com/resources/illustrations/global-network.svg"/></div><div class="BenefitsSection--benefit-illustration" dark-theme-only="true"><img alt="Global network illustration" src="/web/20201028091044im_/https://workers.cloudflare.com/resources/illustrations/global-network-dark-theme.svg"/></div><h3 class="BenefitsSection--benefit-title">Distributed to the world.</h3><div class="BenefitsSection--benefit-description">Move content close to your visitors鈥攁ll of the time. Deploy your site directly to Cloudflare鈥檚 network which is milliseconds away from virtually every Internet user. No additional caching setup required.</div></div><div class="BenefitsSection--benefit"><div class="BenefitsSection--benefit-illustration" light-theme-only="true"><img alt="Static to dynamic illustration" src="/web/20201028091044im_/https://workers.cloudflare.com/resources/illustrations/static-to-dynamic.svg"/></div><div class="BenefitsSection--benefit-illustration" dark-theme-only="true"><img style="position:relative;left:-4px" alt="Static to dynamic illustration" src="/web/20201028091044im_/https://workers.cloudflare.com/resources/illustrations/static-to-dynamic-dark-theme.svg"/></div><h3 class="BenefitsSection--benefit-title">Static assets. Dynamic sites.</h3><div class="BenefitsSection--benefit-description">Deploying static assets doesn鈥檛 mean your site can鈥檛 be dynamic. Use Workers to give your pages life via responsive APIs or by modifying the page before it ever reaches the user. Go further and add automatic translations or dynamically change prices without client side JavaScript.</div></div><div class="BenefitsSection--benefit"><div class="BenefitsSection--benefit-illustration" light-theme-only="true"><img alt="All-in-one illustration" src="/web/20201028091044im_/https://workers.cloudflare.com/resources/illustrations/all-in-one.svg"/></div><div class="BenefitsSection--benefit-illustration" dark-theme-only="true"><img style="position:relative;left:-4px" alt="All-in-one illustration" src="/web/20201028091044im_/https://workers.cloudflare.com/resources/illustrations/all-in-one-dark-theme.svg"/></div><h3 class="BenefitsSection--benefit-title">Assets. APIs. All-in-one.</h3><div class="BenefitsSection--benefit-description">Do you need to handle uploads, accept form submissions, validate content, without slowing down your site? Backend meets frontend at the nearest Cloudflare location to your user, meaning sites start fast and stay fast throughout the entire user experience.</div></div><div class="BenefitsSection--benefit"><div class="BenefitsSection--benefit-illustration" light-theme-only="true"><img alt="Workers Unbound illustration" src="/web/20201028091044im_/https://workers.cloudflare.com/resources/illustrations/bundled.svg"/></div><div class="BenefitsSection--benefit-illustration" dark-theme-only="true"><img alt="Workers Unbound illustration" src="/web/20201028091044im_/https://workers.cloudflare.com/resources/illustrations/bundled-dark-theme.svg"/></div><h3 class="BenefitsSection--benefit-title">Workers... Bundled.</h3><div class="BenefitsSection--benefit-description"><div class="MarkdownLite"><p>Workers Sites requires the Workers Bundled plan鈥攕tarting at $5 per month. Workers Bundled includes 10 million requests, 1 GB of Workers KV storage, and 1 million KV reads and writes each month with pay as you go pricing for additional usage.</p></div></div></div></div></div></section><section class="PlansSection PlansSection-is-top-abutted" id="plans"><div class="PlansSection--column"><div class="PlansSection--plans"><div class="PlansSection--plan PlansSection--plan-is-bundled"><div class="PlansSection--plan-header"><h2 class="PlansSection--plan-title"><div style="font-size:.5em;margin-bottom:.4em">Workers Bundled plan</div><div style="font-size:.3em;font-weight:normal">(Includes Workers Sites)</div></h2><div class="PlansSection--plan-subtitle"><span class="Number Number-is-strong"><span class="Number--dollars">$</span><span class="Number--number">0.50</span><span class="Number--per">/</span><span class="Number--per-unit"><span class="Number--per-unit-multiplier">million</span> requests per month</span></span></div><div class="PlansSection--plan-subtitle-note">(Minimum charge of <span class="Number"><span class="Number--dollars">$</span><span class="Number--number">5</span><span class="Number--per">/</span><span class="Number--per-unit">mo</span></span>)</div></div><div class="PlansSection--plan-details"><ul class="UnorderedList"><li>Deploy up to 30 sites</li><li>Runs on all 200 data centers</li><li>Free workers.dev subdomain</li><li>Up to 50ms CPU time per request</li><li>Always lowest latency</li><li>Access to<!-- --> <a href="https://web.archive.org/web/20201028091044/https://www.cloudflare.com/products/workers-kv/" class="Link" style="--underline-size:-1px;--underline-color:rgba(var(--color-rgb), .5)">Workers KV</a> <!-- -->edge storage</li></ul></div><div class="PlansSection--plan-cta"><a class="Button Button-is-primary" href="https://web.archive.org/web/20201028091044/https://dash.cloudflare.com/sign-up/workers">Sign up</a></div></div></div></div></section></main><footer class="Footer Footer-with-top-separator"><div class="Footer--columns"><div class="Footer--column Footer--column-logo"><a href="https://web.archive.org/web/20201028091044/https://workers.cloudflare.com/" class="Footer--logo-link Link Link-without-underline"><img class="Footer--logo-link-image" alt="Workers logo" src="https://web.archive.org/web/20201028091044im_/https://workers.cloudflare.com/resources/logo/logo.svg"/></a></div><div class="Footer--column"><h2 class="Footer--column-title">Product</h2><ul class="Footer--column-list"><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://workers.cloudflare.com/sites" class="Link Link-without-underline Link-is-juicy">Workers Sites</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/reference/storage/overview/" class="Link Link-without-underline Link-is-juicy">Key-value storage</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/about/using-cache/" class="Link Link-without-underline Link-is-juicy">Caching</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://workers.cloudflare.com/#plans" class="Link Link-without-underline Link-is-juicy">Pricing</a></li></ul></div><div class="Footer--column"><h2 class="Footer--column-title">Docs</h2><ul class="Footer--column-list"><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/tutorials/" class="Link Link-without-underline Link-is-juicy">Tutorials</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/templates/" class="Link Link-without-underline Link-is-juicy">Templates</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/reference/tooling/" class="Link Link-without-underline Link-is-juicy">Tooling reference</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/reference/runtime/apis/" class="Link Link-without-underline Link-is-juicy">API reference</a></li></ul></div><div class="Footer--column"><h2 class="Footer--column-title">About</h2><ul class="Footer--column-list"><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/about/how-it-works/" class="Link Link-without-underline Link-is-juicy">How it works</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://developers.cloudflare.com/workers/about/tips/" class="Link Link-without-underline Link-is-juicy">Tips</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://blog.cloudflare.com/serverlist/" class="Link Link-without-underline Link-is-juicy">Newsletter</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://blog.cloudflare.com/tag/serverless/" class="Link Link-without-underline Link-is-juicy">Blog</a></li></ul></div><div class="Footer--column"><h2 class="Footer--column-title">Help</h2><ul class="Footer--column-list"><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://www.cloudflarestatus.com/" class="Link Link-without-underline Link-is-juicy">Status</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://community.cloudflare.com/c/developers/workers" class="Link Link-without-underline Link-is-juicy">Forum</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://support.cloudflare.com/hc/en-us/sections/360000215372-Cloudflare-Workers" class="Link Link-without-underline Link-is-juicy">Support</a></li><li class="Footer--column-list-item"><a href="https://web.archive.org/web/20201028091044/https://twitter.com/CloudflareDev" class="Link Link-without-underline Link-is-juicy">Twitter</a></li></ul></div></div><div class="Footer--legal">漏 2020 Cloudflare, Inc. 路 <a class="Link Link-without-underline" href="https://web.archive.org/web/20201028091044/https://www.cloudflare.com/privacypolicy/">Privacy</a> 路 <a class="Link Link-without-underline" href="https://web.archive.org/web/20201028091044/https://www.cloudflare.com/website-terms/">Terms</a></div></footer></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/sites";window.webpackCompilationHash="78810a9d8a98f363e116";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-8242b837ce44299f1867.js"],"component---src-templates-project-js":["/component---src-templates-project-js-ac20db2a679838e1ba55.js"],"component---src-pages-index-js":["/component---src-pages-index-js-9a98ddf7f819b5ef38e9.js"],"component---src-pages-404-js":["/component---src-pages-404-js-0ce3539bc73197f42029.js"],"component---src-pages-built-with-js":["/component---src-pages-built-with-js-8f65bca34ba15d8e6eab.js"],"component---src-pages-sites-js":["/component---src-pages-sites-js-6916bf0496ed1fa84047.js"]};/*]]>*/</script><script src="/web/20201028091044js_/https://workers.cloudflare.com/component---src-pages-sites-js-6916bf0496ed1fa84047.js" async=""></script><script src="/web/20201028091044js_/https://workers.cloudflare.com/commons-4112fd79a273fd5e9e80.js" async=""></script><script src="/web/20201028091044js_/https://workers.cloudflare.com/styles-016375ac1294eeeb5596.js" async=""></script><script src="/web/20201028091044js_/https://workers.cloudflare.com/app-8242b837ce44299f1867.js" async=""></script><script src="/web/20201028091044js_/https://workers.cloudflare.com/webpack-runtime-b747c9398a10bdc222d7.js" async=""></script></body></html><!-- FILE ARCHIVED ON 09:10:44 Oct 28, 2020 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 20:52:18 Nov 28, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 4.66 exclusion.robots: 0.033 exclusion.robots.policy: 0.02 esindex: 0.012 cdx.remote: 46.33 LoadShardBlock: 64.989 (3) PetaboxLoader3.datanode: 157.677 (4) load_resource: 158.247 PetaboxLoader3.resolve: 54.269 -->