| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/en-US/docs/Web/API/Window/showSaveFilePicker | [Back] [Original] |
Get to know MDN better
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The showSaveFilePicker() method of the
Window interface shows a file picker that allows a user to save a file.
Either by selecting an existing file, or entering a name for a new file.
showSaveFilePicker()
showSaveFilePicker(options)
options OptionalAn object containing options, which are as follows:
excludeAcceptAllOption OptionalA boolean value that defaults to
false. By default, the picker should include an option to not apply
any file type filters (instigated with the type option below). Setting this option
to true means that option is not available.
id OptionalBy specifying an ID, the browser can remember different directories for different IDs. If the same ID is used for another picker, the picker opens in the same directory.
startIn OptionalA FileSystemHandle or a well known directory ("desktop", "documents",
"downloads", "music", "pictures", or "videos") to open the dialog in.
suggestedName OptionalA String. The suggested file name.
types OptionalAn Array of allowed file types to save. Each
item is an object with the following options:
description OptionalAn optional description of the category of files types allowed. Defaults to an empty string.
acceptAn Object with the keys set to the MIME type and the values an Array of file extensions (see below
for an example).
A Promise whose fulfillment handler receives a FileSystemFileHandle object.
AbortError DOMExceptionThrown if the user dismisses the file picker without selecting or inputting a file, or if the user agent deems any selected files too sensitive or dangerous.
SecurityError DOMExceptionThrown if the call was blocked by the same-origin policy or it was not called via a user interaction such as a button press.
TypeErrorThrown if accept types can't be processed, which may happen if:
accept options of any item in types options can't parse a valid MIME type.accept options of any item in types options is invalid, for example, if it does not start with . and if end with ., or if it contains any invalid code points and its length is more than 16.types options is empty and the excludeAcceptAllOption options is true.Transient user activation is required. The user has to interact with the page or a UI element in order for this feature to work.
The following function shows a file picker, with text files highlighted for selection.
async function getNewFileHandle() {
const opts = {
types: [
{
description: "Text file",
accept: { "text/plain": [".txt"] },
},
],
};
return await window.showSaveFilePicker(opts);
}
| Specification |
|---|
| File System Access # api-showsavefilepicker |
This page was last modified on Jan 25, 2026 by MDN contributors.
WindowcachesclosedcookieStorecrashReportcredentiallesscrossOriginIsolatedcryptocustomElementsdevicePixelRatiodocumentdocumentPictureInPictureeventexternalfenceframeElementframesfullScreenhistoryindexedDBinnerHeightinnerWidthisSecureContextlaunchQueuelengthlocalStoragelocationlocationbarmenubarmozInnerScreenXmozInnerScreenYnamenavigationnavigatoropenerorientationoriginoriginAgentClusterouterHeightouterWidthparentperformancepersonalbarschedulerscreenscreenLeftscreenTopscreenXscreenYscrollbarsscrollMaxXscrollMaxYscrollXscrollYselfsessionStoragesharedStoragespeechSynthesisstatusstatusbartoolbartoptrustedTypesviewportvisualViewportwindowalert()atob()blur()btoa()cancelAnimationFrame()cancelIdleCallback()captureEvents()clearImmediate()clearInterval()clearTimeout()close()confirm()createImageBitmap()dump()fetch()fetchLater()find()focus()getComputedStyle()getDefaultComputedStyle()getScreenDetails()getSelection()matchMedia()moveBy()moveTo()open()postMessage()print()prompt()queryLocalFonts()queueMicrotask()releaseEvents()reportError()requestAnimationFrame()requestFileSystem()requestIdleCallback()requestResize()resizeBy()resizeTo()scroll()scrollBy()scrollByLines()scrollByPages()scrollTo()setImmediate()setInterval()setResizable()setTimeout()showDirectoryPicker()showOpenFilePicker()showSaveFilePicker()sizeToContent()stop()structuredClone()webkitConvertPointFromNodeToPage()webkitConvertPointFromPageToNode()afterprintappinstalledbeforeinstallpromptbeforeprintbeforeunloadblurdevicemotiondeviceorientationdeviceorientationabsoluteerrorfocusgamepadconnectedgamepaddisconnectedhashchangelanguagechangeloadmessagemessageerrorofflineonlineorientationchangepagehidepagerevealpageshowpageswappopstaterejectionhandledresizescrollsnapchangescrollsnapchangingstorageunhandledrejectionunloadvrdisplayactivatevrdisplayconnectvrdisplaydeactivatevrdisplaydisconnectvrdisplaypresentchangeDataTransferItem.getAsFileSystemHandle()FileSystemChangeRecordFileSystemDirectoryHandleFileSystemFileHandleFileSystemHandleFileSystemObserverFileSystemSyncAccessHandleFileSystemWritableFileStreamStorageManager.getDirectory()Window.showDirectoryPicker()Window.showOpenFilePicker()Window.showSaveFilePicker()Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |