Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>FlooTransferNew to Visual Studio Code? Get it now.
FlooTransfer

FlooTransfer

Tyler Middleton

| (0) | Free
Browse, upload, and download files over FTP, FTPS, or SFTP with multi-file transfers and live progress.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

FlooTransfer

An FTP/FTPS/SFTP client that lives inside VS Code. I wanted to make a better FTP/SFTP VS Code exension than what's currently out there and that had all the features I wanted.

What it does

  • Remote Files tree — browse, download, rename, delete, and set permissions (octal; SFTP always, not every FTP server) on the server.
  • Local Files tree next to it, mirroring the connection's local folder. Upload from here, or drag files between the two trees to upload/download (drop on a folder to land them there). Dragging within one tree moves the file and keeps the other side in sync. Folders go recursively.
  • Transfer a file from anywhere — the Explorer, the editor tab, the editor right-click menu, or a keybinding. Works on images and other binary files too, not just text.
  • Multiple connections per project — e.g. Preview and Live pointed at the same folder. If more than one matches you're asked which to use, then it's cached for the session. Switch Connection on the tree flips which one is active, and transfers auto-follow whichever connection they used.
  • Activities panel (down by the Terminal) logs every transfer with progress bars, pops open on errors, and lets you cancel something mid-transfer.
  • Auto-connect — transfer something without being connected and it just asks for credentials there and then.

Setup

Run FlooTransfer: Add Connection for This Project and it'll walk you through it, or edit connections.json yourself:

[
  {
    "name": "Preview",
    "protocol": "ftp",
    "host": "preview.example.com",
    "localRoot": "/Users/you/projects/my-site",
    "remoteRoot": "/public_html"
  },
  {
    "name": "Live",
    "protocol": "sftp",
    "host": "example.com",
    "authMethod": "key",
    "privateKeyPath": "/Users/you/.ssh/id_ed25519",
    "localRoot": "/Users/you/projects/my-site",
    "remoteRoot": "/var/www/my-site"
  }
]
Field Notes
name Required. Shown when picking a connection; must be unique (it's the cache key).
protocol ftp or sftp (default ftp). FTPS is ftp + "secure": true.
host Required.
port Default 21 for FTP, 22 for SFTP.
secure FTP only — use explicit TLS.
authMethod SFTP only — password (default) or key.
privateKeyPath For authMethod: "key" — absolute path to the key. Passphrase asked each session, never stored.
localRoot Absolute path to the local project. Leave unset to pick manually each time.
remoteRoot Directory shown as the tree root. Default /.
rememberPassword See below. Off by default.
atomicUploads See below. Off by default.

Then hit FlooTransfer: Connect, or just start transferring — it asks for credentials the first time each connection is used.

Remembering a password

By default nothing is stored. Passwords stay in memory for the session (flooTransfer.sessionDurationMinutes) and are asked for again after that. If that gets old, set "rememberPassword": true on a connection (or say yes when the add-connection command asks). After the next successful login the password goes into your OS keychain and future connects skip the prompt.

Worth understanding the trade: once it's remembered, the password isn't a gate any more. Anyone on your unlocked machine can reach that server. Same deal as "remember me" anywhere else, which is fine if you trust the machine and lock your screen. FlooTransfer: Forget Saved Password for Connection clears a stored one.

On Linux this needs a Secret Service provider running (most desktops have one, headless/Remote-SSH usually don't). Without it, it quietly falls back to asking every time.

Atomic uploads

Normally an upload writes straight to the real filename as bytes arrive, so a file that's already live can be served half-written for a second. With atomic uploads the file goes to a temp name first and is renamed into place once it's fully there. A rename is instant, so the real filename only ever points at a complete old or complete new version.

  • Per connection: "atomicUploads": true applies it to every upload on that connection, including each file in a folder upload. Each file is safe on its own, but a multi-file upload still swaps them in one at a time.
  • Batch: for a set of files that should go live together use FlooTransfer: Add to Atomic Upload Batch (right-click, or the keybinding on the active tab), review the list in the Atomic Upload Batch view, then FlooTransfer: Upload Atomic Batch. Everything uploads to temp names and only gets renamed into place once all uploads finish, back to back. So the "half new, half old" window is a fraction of a second instead of the whole upload.

Caveat: not every FTP server allows renaming over an existing file. SFTP almost always does (FlooTransfer uses posix-rename@openssh.com). If the rename fails you get an error saying the upload succeeded and where the temp file is.

Keyboard shortcuts

Action Shortcut
Upload Cmd/Ctrl+Shift+S
Download Cmd/Ctrl+Alt+D
Rename on remote Cmd/Ctrl+Alt+R
Delete from remote Cmd/Ctrl+Alt+Backspace
Add to atomic upload batch Cmd/Ctrl+Alt+B
Upload atomic batch Cmd/Ctrl+Shift+Alt+B

Rebind them in Preferences: Open Keyboard Shortcuts if they clash with anything.

Settings

Setting Default Notes
flooTransfer.sessionDurationMinutes 60 Minutes an entered password stays in memory. 0 = whole session.
flooTransfer.progressBarColor #007ACC Any CSS color.
flooTransfer.activitiesSortOrder newestFirst newestFirst or oldestFirst.
flooTransfer.remoteSortDirection ascending Name sort in both trees. Folders always above files.

Limitations

  • Credentials live in memory for the session only, unless you opt in to remembering a password.
  • SFTP host keys aren't checked against a known-hosts store. No prompt for an unrecognized server.
  • Downloading from the Remote Files tree needs localRoot set on the connection.
  • Atomic uploads protect each file, not a whole multi-file deploy as one instant switch. Also the rename step isn't supported by every FTP server.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft