Docs

A flexible JavaScript File Upload Component that works with every stack

FilePond uploads anything you throw at it, and offers a great, accessible, silky smooth user experience.

Get Started View on GitHub

Easily integrates with your favorite frameworks

The FilePond web component works with any JavaScript framework…

…and thanks to Shadow DOM, FilePond plays nicely with CSS frameworks too.

  • Tailwind logo Tailwind
  • Bootstrap logo Bootstrap
  • Skeleton logo Skeleton
  • Foundation logo Foundation

Browser, OS, and Device compatibility

Feature highlights

A custom element that just works

The <file-pond> custom element feels right at home on a classic webpage…

<form action="/upload" method="POST">
    <label for="my-file">Document</label>
    <file-pond>
        <input id="my-file" type="file" name="doc" />
    </file-pond>
    <button type="submit">Upload</button>
</form>

<script type="module">
    import { defineFilePond } from 'filepond';
    import { locale } from 'filepond/locales/en-gb.js';

    defineFilePond({ locale });
</script>

…and turns into a <Component> when used with a JavaScript framework.

import { defineFilePond } from 'filepond';
import { locale } from 'filepond/locales/en-gb.js';

defineFilePond({ locale });

export default function App() {
    const [myEntries, setMyEntries] = useState<FilePondEntry[]>([]);
    return (
        <label htmlFor="my-file">Document</label>
        <file-pond entries={myEntries}>
            <input id="my-file" type="file" name="doc" />
        </file-pond>
    );
}

Animated with the power of springs

FilePond automatically animates the user interface with the power of springs, but of course respects users that prefer reduced motion.

Switch up the list layout, or try reordering the items.

List layout
Springyness

Extendable, tree shakeable, compatible with SSR

Import only the parts you need and extend FilePonds functionality with 26 ready made extensions.

Build your own store, transform, and validation extensions, or start from scratch and create a fully custom extension.

import { defineFilePond } from "filepond";
import { locale } from "filepond/locales/en-gb.js";
import { FileSizeValidator } from "filepond/extensions/file-size-validator.js";

const elements = defineFilePond({
  locale,

  // Let's limit the file size using the FileSizeValidator extension
  extensions: [
    FileSizeValidator,
    {
      maxSize: "10MB",
    },
  ],
});

26 Extensions

Polished image and video previews

If the browser can present it, so can FilePond.

For optimal performance media previews are rendered on a separate thread.

Learn more about media previews

Drop the UI and use in headless mode

Use FilePond for programmatic file processing, or build a custom UI on top of FilePond core.

Learn about Headless mode

import { createFilePondEntryTree, createExtensionManager } from 'filepond';

// The EntryTree holds all the files
const entryTree = createFilePondEntryTree();

// The ExtensionManager manages the FilePond extensions ¯\_(ツ)_/¯
const extensionManager = createExtensionManager(entryTree);

// Add files to the mix, and the above objects handle the rest
entryTree.entries = [
    new File(/* */)
];

Fits in with light and dark themes

FilePond uses the CSS color-scheme property to make switching between light and dark mode super easy.

Learn more about styling

Item style

Huge palls with Pintura

Pair FilePond with Pintura to unlock the perfect image and video editing experience for your users.

  • Five minute install
  • Set crop masks and guides
  • Control quality with fixed aspect ratios
  • Rotate, resize, and flip images
  • Annotate, decorate, and redact Images
  • Finetune image colors
  • Inpainting support
  • A fluid user experience like FilePond

How to integrate Pintura

About FilePond

FilePond is built by Rik Schennink at Pqina. Pqina helps more than 10,000 companies worldwide and is rated 4.9 out of 5 stars by 500+ customers.

When given the attention it deserves, the web can rival the native experience.

Rik Schennink