ProjectSend
Upload files and assign them to specific clients you create. Give access to those files to your clients.
Upload files and assign them to specific clients you create. Give access to those files to your clients.
<p align="center">
<img src="https://www.projectsend.org/projectsend-logo-white.png" alt="ProjectSend logo" />
</p>
<h3 align="center">The self-hosted client portal for file sharing</h3>
<p align="center">
Share files privately with clients, partners, and teams — on your own server.<br>
Built for freelancers, agencies, accountants, photographers, architects, NGOs, and any business that sends files to external people.
</p>
<p align="center">
<a href="https://github.com/projectsend/projectsend/releases/latest"><img src="https://img.shields.io/github/v/release/projectsend/projectsend?style=flat-square" alt="Latest Release"></a>
<a href="https://github.com/projectsend/projectsend/blob/develop/LICENSE"><img src="https://img.shields.io/github/license/projectsend/projectsend?style=flat-square" alt="License"></a>
<a href="https://github.com/projectsend/projectsend/actions/workflows/php-static-analysis.yml"><img src="https://img.shields.io/github/actions/workflow/status/projectsend/projectsend/php-static-analysis.yml?style=flat-square&label=analysis" alt="PHP Static Analysis"></a>
<a href="https://github.com/projectsend/projectsend/actions/workflows/asset-build.yml"><img src="https://img.shields.io/github/actions/workflow/status/projectsend/projectsend/asset-build.yml?style=flat-square&label=build" alt="Asset Build"></a>
</p>
<p align="center">
<strong>Maintained since 2011</strong> · <a href="https://www.projectsend.org">Website</a> · <a href="https://docs.projectsend.org">Docs</a> · <a href="https://www.projectsend.org/demo/">Demo</a>
</p>
---
## Screenshots
<p align="center">
<img src="https://www.projectsend.org/screenshots/dashboard.png" alt="Dashboard" width="700" /><br>
<em>Admin dashboard</em>
</p>
<p align="center">
<img src="https://www.projectsend.org/screenshots/template-modern-cards.png" alt="Client portal" width="700" /><br>
<em>Client portal with the Modern template</em>
</p>
<p align="center">
<img src="https://www.projectsend.org/screenshots/file-editor.png" alt="File editor" width="700" /><br>
<em>File editor with assignments and expiration</em>
</p>
<p align="center">
<img src="https://www.projectsend.org/screenshots/themes.png" alt="Themes" width="700" /><br>
<em>Multiple themes for the client-facing portal</em>
</p>
## How ProjectSend Compares
| Feature | ProjectSend | Nextcloud | WeTransfer | Dropbox |
|---|:---:|:---:|:---:|:---:|
| Self-hosted | :white_check_mark: | :white_check_mark: | :x: | :x: |
| Open source | :white_check_mark: GPL v2 | :white_check_mark: AGPL | :x: | :x: |
| Dedicated client accounts | :white_check_mark: | :warning: Partial | :x: | :x: |
| Client groups | :white_check_mark: | :x: | :x: | :x: |
| Auto-expiring files | :white_check_mark: | :white_check_mark: | :warning: Pro only | :x: |
| Clients can upload back | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: |
| Download limits | :white_check_mark: | :x: | :x: | :x: |
| Encryption at rest | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| Client portal themes | :white_check_mark: | :x: | :x: | :x: |
| Two-factor authentication | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| 70+ languages | :white_check_mark: | :white_check_mark: | :warning: Partial | :warning: Partial |
| S3 / object storage | :white_check_mark: | :white_check_mark: | — | — |
| Runs on shared hosting | :white_check_mark: | :x: | — | — |
| Setup complexity | :white_check_mark: Low | :warning: Medium | — | — |
| One-time cost | :white_check_mark: Free | :white_check_mark: Free | From $10/mo | From $10/mo |
| Data ownership | :white_check_mark: Full | :white_check_mark: Full | :x: None | :x: None |
## Who Uses ProjectSend
Freelancers, agencies, photographers, accountants, lawyers, architects, NGOs, schools, government offices — anyone who needs to share files with external people without giving up control of their data.
## Features
- **Client accounts** with usernames and passwords
- **Groups** to organize clients and share files with multiple people at once
- **Auto-expiration** for time-limited file access
- **Email notifications** when new files are available
- **Client uploads** — let clients send files back to you
- **Download tracking** and full activity logging
- **Categories and folders** for file organization
- **Multiple themes** for the client-facing portal
- **Two-factor authentication** (2FA)
- **S3-compatible storage** support
- **70+ languages** via community translations
- **Custom branding** with your own logo and colors
- **Role-based permissions** for team members
- **Public file links** for sharing without an account
## Quick Start
**Requirements:** PHP 8.2+, MySQL 5.7+ / MariaDB 10.3+, Apache or Nginx
1. Download the [latest release](https://github.com/projectsend/projectsend/releases/latest)
2. Upload files to your web server
3. Open the URL in your browser and follow the installer
ProjectSend is also available on **Softaculous** and **Installatron** for one-click installation on supported hosting providers.
Full installation guide: [docs.projectsend.org](https://docs.projectsend.org)
### Nginx Configuration (required)
**If you are using Nginx**, you must add location blocks to block direct access to the upload directory. Apache deployments use `.htaccess` for this automatically, but Nginx ignores `.htaccess` files — without the proper config, uploaded files would be publicly accessible regardless of their permission settings.
A ready-to-use template is included: [`nginx.conf.example`](nginx.conf.example)
The critical block is:
```nginx
location ^~ /upload/files/ {
deny all;
}
location ^~ /upload/temp/ {
deny all;
}
```
**The `^~` is required, not decoration.** Without it these are ordinary prefix locations, and Nginx lets a matching regex location win over an ordinary prefix location. A typical static asset block such as `location ~* \.(js|css|png|jpg|svg)$ { ... }` would then take over every image, stylesheet and script under `upload/files/` and serve them with no login at all, while `deny all` silently does nothing for those extensions.
Do **not** block `upload/thumbnails/` or `upload/admin/` — thumbnails and your branding logo are served to browsers from there.
See the example file for the complete recommended configuration including PHP-FPM, X-Accel-Redirect support, and all other required security blocks, and [`SECURITY_HARDENING.md`](SECURITY_HARDENING.md) for how to verify your deployment is actually protected.
## Demo
Try ProjectSend without installing: [www.projectsend.org/demo](https://www.projectsend.org/demo/)
## Support the Project
ProjectSend is free and open source. If you find it useful, consider supporting development:
- [Patreon](https://www.patreon.com/ignacionelson)
- [Open Collective](https://opencollective.com/projectsend)
## Contributing
- Read the [Contributing Guide](CONTRIBUTING.md)
- Report bugs and suggest features via [Issues](https://github.com/projectsend/projectsend/issues)
- Ask questions in [Discussions](https://github.com/projectsend/projectsend/discussions)
- Join us on [Facebook](https://www.facebook.com/projectsend/)
- Email: [email protected]
## Translations
ProjectSend is available in **70+ languages** thanks to the community.
Download translations or contribute yours on [Transifex](https://explore.transifex.com/subwaydesign/projectsend/).
## License
ProjectSend is licensed under [GNU GPL v2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
Record and share audio files (documentation in French).
Simple PHP based directory lister that lists a directory and all its sub-directories and allows you to navigate there within.
File sharing application based on unique and temporary links.
PictShare is a multi lingual, open source image hosting service with a simple resizing and upload API.