FileSystemWritableFileStream: seek() method

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is available in Web Workers.

The seek() method of the FileSystemWritableFileStream interface updates the current file cursor offset to the position (in bytes) specified when calling the method.





A number specifying the byte position from the beginning of the file.

Return value

A Promise that returns undefined.


NotAllowedError DOMException

Thrown if PermissionStatus.state is not granted.


Thrown if position is not a number or not defined.


The following asynchronous function opens the 'Save File' picker, which returns a FileSystemFileHandle once a file is selected. From this, a writable stream is created using the FileSystemFileHandle.createWritable() method.

Next, we write to the stream:

  1. A text string is written to the stream.
  2. The seek() method is used to put the cursor at the start of the stream.
  3. A second text string is written to the start of the stream, overwriting the first write.

The stream is then closed.

async function saveFile() {
  try {
    // create a new handle
    const newHandle = await window.showSaveFilePicker();

    // create a FileSystemWritableFileStream to write to
    const writableStream = await newHandle.createWritable();

    // write our file
    await writableStream.write("My first file content");
    await writableStream.write("My second file content");

    // close the file and write the contents to disk.
    await writableStream.close();
  } catch (err) {
    console.error(, err.message);

If you run the above function and then open the resulting file created on disk, you should see the text "My second file content".


File System Standard
# api-filesystemwritablefilestream-seek

Browser compatibility

BCD tables only load in the browser

See also