projectsend is a free, open source file management & sync project written in PHP and released under GPL-2.0. It has 2,024 GitHub stars, 359 forks and 9 open issues, and was last pushed 4 days ago. On this registry it ranks #37 of 47 tracked projects in File Management & Sync, with 5 head-to-head comparisons available.

What is projectsend?

ProjectSend is a self-hosted, GPLv2-licensed PHP and MySQL application that lets you share files with clients from your own server, with each client signing in to a private page, and it is aimed at freelancers, agencies and teams who would rather not hand client documents to a third-party service.

What it is

ProjectSend is a file sharing and client portal application written in PHP, backed by MySQL and released under the GPL-2.0 licence. It lives in the Productivity & Utilities / File Management & Sync category, and its scope is narrow by design: you upload what you want to send, choose exactly who can see it, and each client signs in to their own private area to download it. It runs on your server and the files stay there. ProjectSend Cloud is an official hosted version run by the same team, with the boundary between the free core and Cloud set out in LICENSING.md.

The problem it solves is the public link: a URL emailed to a client, forwarded onward, and eventually sitting somewhere it should not be. ProjectSend replaces that with a private, authenticated area per client, where a share can go to one client, a client group or the public, and can carry an expiry date or a download limit, while a full activity log records who received what and when. Because it is self-hosted PHP and MySQL rather than a hosted platform, it fits an environment you already run.

Key capabilities

  • Resumable uploads that survive a dropped connection, so large files actually arrive.
  • A private area per client, sign-in with an email address and optional two-factor authentication, and optional comments on a file.
  • Sharing with one client, a whole group or the public, with an expiry date or a download limit, organised by folders, categories and client groups.
  • A REST API with scoped tokens and generated OpenAPI documentation.
  • Storage on local disk, S3-compatible storage or Google Cloud Storage, with per-client storage quotas and custom fields.
  • Roles and permissions for your team, LDAP or social sign-in, 16 languages, and themes for client-facing pages and outgoing email.
  • Thumbnails and previews for images and documents, email notifications in the recipient's own language, and GDPR-grade account erasure with a grace period.

Who uses it and how

  • Agencies, freelancers and studios that need client documents held on infrastructure they control rather than a third-party service's.
  • Teams that separate uploading from administration, using roles and permissions so an uploader is not an administrator.
  • Organisations that already run a directory or identity provider and want staff and clients to sign in through LDAP or social sign-in.
  • Teams that would rather not operate the server themselves, using ProjectSend Cloud, the official hosted version run by the same team.

Getting started

The recommended path is Docker: download the production compose file (curl -o compose.yaml https://raw.githubusercontent.com/projectsend/projectsend/main/docker/production/compose.example.yaml), edit the passwords and APP_URL in it, then run docker compose up -d. For servers where Docker is not an option, install from a release zip, which ships ready to run without Composer or npm on the server.

How it compares

No comparable tools are named in the facts provided here, so ProjectSend stands alone in this registry. The one alternative it points to is ProjectSend Cloud, the official hosted version run by the same team on the same code, not a competing product.

When to use it — and when not to

A self-hoster has to operate a MySQL database, upload storage and, per INSTALL.md, a background worker and cron, along with the backup and migration care DOCKER.md describes before real files are added. Anyone who does not want to run and maintain that stack should not choose the self-hosted route. The README excerpt available here is cut off mid-sentence, so DOCKER.md, INSTALL.md, UPDATE.md and LICENSING.md are the places to confirm operational and licensing details.

project readme (upstream, from github) — read inline

ProjectSend

Share files with your clients, from your own server.

License: GPL v2 or later PHP 8.4+ Self-hosted


ProjectSend is a self-hosted application for getting files to the people you work with. You upload what you want to send, choose exactly who can see it, and each client signs in to their own private page to download it.

No public link passed around by email, no third-party service holding your clients' documents, no per-seat pricing. It runs on your server, and the files stay there.

Prefer not to run the server yourself? ProjectSend Cloud is the official hosted version of ProjectSend, run by the same team — every subscription funds this free software. The line between the free core and Cloud, and the commitments that go with it, are set out in LICENSING.md.

What it does

For the people you send to

  • A private area per client, showing only what has been shared with them
  • Sign in with an email address, with optional two-factor authentication
  • Search, filter and sort their files; download one, several as a zip, or a whole folder
  • Optional comments on a file, so questions live next to the thing they are about
  • Email notifications when something new arrives, in their own language

For you

  • Resumable uploads that survive a dropped connection, so large files actually arrive
  • Organise with folders, categories and client groups
  • Share with one client, a whole group, or publicly — and set an expiry date or a download limit
  • Thumbnails and previews for images and documents
  • Storage quotas per client, and custom fields for the details you need to keep on them
  • A full activity log and download history: who got what, and when

For the installation

  • Roles and permissions for your own team, so an uploader is not an administrator
  • Sign-in the way you already work: LDAP, social sign-in, or plain email and password
  • Themes for the client-facing pages and for outgoing email
  • 16 languages
  • A REST API with scoped tokens and generated OpenAPI docs
  • Privacy controls, including GDPR-grade account erasure with a grace period
  • Local disk, S3-compatible storage, or Google Cloud Storage

Getting started

With Docker — the quickest path, and the one we recommend. Nothing to build: the published image ships with its dependencies and its frontend already compiled.

You need Docker Engine with the Compose plugin. If the machine does not have it yet, install it and then let your own user run it: add yourself to the docker group, then log out and back in. Without that step every command below fails with "permission denied", and putting sudo in front of it is not the fix.

Then, in an empty directory of your choosing — /srv/projectsend is a good one — run:

curl -o compose.yaml https://raw.githubusercontent.com/projectsend/projectsend/main/docker/production/compose.example.yaml
# edit the passwords and APP_URL in compose.yaml, then:
docker compose up -d

Every docker compose command in these guides runs from that same directory, and finds the file because it is called compose.yaml. If you saved it under its original name, compose.example.yaml, rename it: mv compose.example.yaml compose.yaml.

Open APP_URL and the first thing you see is a setup screen that creates your administrator account — or uncomment ADMIN_EMAIL and ADMIN_PASSWORD in the file first, with a password of your own, and it is created for you.

Before you put real files in it, read DOCKER.md — where your database and uploads actually live, how to move them onto paths you chose, and how to back them up so an upgrade can't take them with it.

Without Docker — for servers where it isn't an option, install from a release zip. INSTALL.md covers requirements, .env, nginx, the background worker and cron, updating and troubleshooting. You do not need Composer or npm on the server; the zip ships ready to run.

Already running it? UPDATE.md is how you move to a new version — one command on Docker, one script on your own server, and what to check afterwards either way.

Want to work on ProjectSend itself? Cloning the repository gets you a development copy, not an installation: the dependencies and the compiled frontend are deliberately not in git, so a clone needs Composer and npm before it runs. CONTRIBUTING.md has the sequence, and it is short.

Screenshots

The dashboard — what is in the installation, and what has been happening in it.

Your library — folders, categories, and who each file is shared with.

What your client sees — only their files, nothing else.

Coming from ProjectSend Legacy?

The previous generation of ProjectSend lives on at projectsend/legacy. This is a rebuild rather than an upgrade, so moving across is an import rather than an update — install fresh, then bring your old site into it with the migration tool: accounts, clients, groups, categories, folders, files and history.

It never writes to your old install, and any run can be undone with a single command. MIGRATING-FROM-V1.md explains what comes across, the two routes (same machine, or a portable export from a server you can't reach), and the one change your clients will notice: they sign in with their email address now, using the same password.

Contributing

Bug reports, translations and pull requests are all welcome — see CONTRIBUTING.md for how to set up a development copy, what the checks are, and the contributor agreement.

Found a security issue? Please report it privately through GitHub's security advisories rather than opening a public issue.

License

Free software under the GNU General Public License v2, or (at your option) any later version — see LICENSE. Use it, study it, change it, share it.

Commercial licenses are available for organizations that cannot work under copyleft terms; LICENSING.md explains both options. Contributions require signing a CLA, for reasons set out in CONTRIBUTING.md.

Frequently asked questions

Is projectsend free to use?

projectsend is open source under the GPL-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does projectsend do?

Share files with your clients, from your own server. Free, open source (GPLv2), self-hosted — or use ProjectSend Cloud, the official hosted version run by the s

What is projectsend written in?

projectsend is primarily written in PHP. Its source is publicly available at https://github.com/projectsend/projectsend, and it has 2,024 GitHub stars.