Buffer
Last updated Apr 23, 2026 Note
For compatibility dates of 2026-08-04 or later, Workers enables both nodejs_compat and nodejs_compat_v2 by default. These flags are not used for these compatibility dates. Existing projects do not need to remove them when updating their compatibility date. For earlier dates, add nodejs_compat to your Wrangler configuration file to opt in. For instructions to turn off Node.js compatibility, refer to the Node.js compatibility flag.
The Buffer ↗︎ API in Node.js is one of the most commonly used Node.js APIs for manipulating binary data. Every Buffer instance extends from the standard Uint8Array ↗︎ class, but adds a range of unique capabilities such as built-in base64 and hex encoding/decoding, byte-order manipulation, and encoding-aware substring searching.
import { Buffer } from "node:buffer";
const buf = Buffer.from("hello world", "utf8");
console.log(buf.toString("hex"));
// Prints: 68656c6c6f20776f726c64
console.log(buf.toString("base64"));
// Prints: aGVsbG8gd29ybGQ=
A Buffer extends from Uint8Array. Therefore, it can be used in any Workers API that currently accepts Uint8Array, such as creating a new Response:
const response = new Response(Buffer.from("hello world"));
You can also use the Buffer API when interacting with streams:
const writable = getWritableStreamSomehow();
const writer = writable.getWriter();
writer.write(Buffer.from("hello world"));
One key difference between the Workers implementation of Buffer and the Node.js implementation is that some methods of creating a Buffer in Node.js will allocate those from a global memory pool as a performance optimization. The Workers implementation does not use a memory pool and all Buffer instances are allocated independently.
Further, in Node.js it is possible to allocate a Buffer with uninitialized memory using the Buffer.allocUnsafe() method. This is not supported in Workers and Buffer instances are always initialized so that the Buffer is always filled with null bytes (0x00) when allocated.
Refer to the Node.js documentation for Buffer ↗︎ for more information.
Was this helpful?
YesNo
On this page
{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/workers/runtime-apis/nodejs/buffer/#page","headline":"Buffer","description":"Use the Node.js Buffer API in Cloudflare Workers to manipulate binary data with encoding and decoding support.","url":"https://developers.cloudflare.com/workers/runtime-apis/nodejs/buffer/","inLanguage":"en","image":"https://developers.cloudflare.com/workers/runtime-apis/nodejs/buffer/og.png?v=4a090cfa58c4281a","dateModified":"2026-04-23","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
description: Use the Node.js crypto module in Cloudflare Workers for hashing, encryption, signing, and verification. title: crypto image: https://developers.cloudflare.com/workers/runtime-apis/nodejs/crypto/og.png?v=cd88243647811f9f
Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/workers/llms.txt
Use this file to discover all available pages before exploring further.
Docs