diff --git a/README.md b/README.md
index a07ca81f..28003118 100644
--- a/README.md
+++ b/README.md
@@ -334,7 +334,7 @@ const data = await FileAttachment("cars.tsv").tsv();
If array is true, an array of arrays is returned; otherwise, the first row is assumed to be the header row and an array of objects is returned, and the returned array has a data.columns property that is an array of column names. (See d3.tsvParseRows.) If typed is true, [automatic type inference](https://observablehq.com/@d3/d3-autotype) is applied; only use this feature if you know your data is compatible.
-# *attachment*.image() [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source")
+# *attachment*.image(options) [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source")
Returns a promise to a file loaded as an [Image](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/Image). The promise resolves when the image has finished loading, making this useful for reading the image pixels in Canvas, or for loading the image into a WebGL texture. Consider [*attachment*.url](#attachment_url) if you want to embed an image in HTML or Markdown.
@@ -342,6 +342,12 @@ Returns a promise to a file loaded as an [Image](https://developer.mozilla.org/e
const image = await FileAttachment("sunset.jpg").image();
```
+If desired, additional image properties can be passed in as *options*.
+
+```js
+const image = await FileAttachment("sunset.jpg").image({width: 400, height: 400});
+```
+
# *attachment*.arrayBuffer() [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source")
Returns a promise to the file’s contents as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer).
@@ -404,12 +410,40 @@ Returns a promise to an [HTMLDocument](https://developer.mozilla.org/en-US/docs/
const document = await FileAttachment("index.html").html();
```
+# *attachment*.zip() [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source")
+
+Returns a promise to a [ZipArchive](#zip-archives) containing the contents of the file.
+
+```js
+const archive = await FileAttachment("archive.zip").zip();
+```
+
# FileAttachments(resolve) [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source")
*Note: this function is not part of the Observable standard library (in notebooks), but is provided by this module as a means for defining custom file attachment implementations when working directly with the Observable runtime.*
Returns a [*FileAttachment*](#FileAttachment) function given the specified *resolve* function. The *resolve* function is a function that takes a *name* and returns either an object {url, mimeType} representing the requested file if it exists, or null if the file does not exist. The url field (though not the object itself!) may be represented as a Promise if the URL is not yet known, such as for a file that is currently being uploaded. The mimeType must be a string, or undefined if the mime type is not known. For backwards compatibility, the *resolve* function may instead return just a URL, either a string or a promise.
+#### Zip archives
+
+# *archive*.filenames [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source")
+
+Returns an array of paths representing the files contained within the archive.
+
+```js
+const archive = await FileAttachment("archive.zip").zip();
+console.log(archive.filenames);
+```
+
+# *archive*.file(path) [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source")
+
+Returns a [file attachment](#file-attachments) for the file with the specified *path*. One of the file attachment methods can then be called to access the contents of the file. For example, to read a text file, use [*attachment*.text](#attachment_text).
+
+```js
+const archive = await FileAttachment("archive.zip").zip();
+const text = await archive.file("readme.txt").text();
+```
+
### Generators
# Generators.disposable(value, dispose) [<>](https://github.com/observablehq/stdlib/blob/main/src/generators/disposable.mjs "Source")