PictShare logo

PictShare v3

Caution: Pictshare v3 may not be fully compatible with previous Pictshare versions!

https://pictshare.net

![](https://img.shields.io/badge/php-8.2%2B-brightgreen.svg) [![](https://img.shields.io/docker/pulls/hascheksolutions/pictshare?color=brightgreen)](https://hub.docker.com/r/hascheksolutions/pictshare) ![](https://github.com/hascheksolutions/pictshare/actions/workflows/build-docker.yml/badge.svg) [![Apache License](https://img.shields.io/badge/license-Apache-brightgreen.svg?style=flat)](https://github.com/HaschekSolutions/pictshare/blob/master/LICENSE) ![Hits](https://hits.deltapapa.io/github/HaschekSolutions/pictshare.svg) [![](https://img.shields.io/github/stars/HaschekSolutions/pictshare.svg?label=Stars&style=social)](https://github.com/HaschekSolutions/pictshare) #### Host your own `images` `gifs` `mp4s` `text bins` and stay in control
-----------------------------------------

PictShare demo

Table of contents ================= * [Quick Start](#quickstart) * [Breaking changes in v3](#breaking-changes-in-v3) * [Features](#features) * [Installation](/rtfm/INSTALL.md) * [Configuration](/rtfm/CONFIG.md) * [Docker](/rtfm/DOCKER.md) * [API](/rtfm/API.md) * [Addons and integration](/rtfm/INTEGRATIONS.md) * [Development roadmap](#development-roadmap) --- ## Quickstart ```bash docker run -d -p 8080:80 --name=pictshare ghcr.io/hascheksolutions/pictshare ``` Then open http://localhost:8080 in your browser ## Breaking changes in v3 #### Dropped configuration options - TITLE - UPLOAD_FORM_LOCATION - ALLOW_BLOATING #### File name in URL In Picthsare v3 we have changed the requirement for the image to be the last part of the URL. While with older PictShare Versions you could put the file name at any place of the URL, we now require the last part of the URL to be the file name. - before: https://pictshare.net/roate-left/1234.png/800x600/ - now: https://pictshare.net/roate-left/600x600/1234.png #### API changes The API has been moved to a more consistant and RESTful design. The API documentation has been updated to reflect these changes. ## New Features - Generate identicons based on strings in the URL [example1](https://pictshare.net/identicon/example1) [example2](https://pictshare.net/identicon/example2) - Generate placeholder images by specifying the size in the URL. [example](https://pictshare.net/placeholder/555x250/color-white-blue) - Added support for external storage - [Encryption of files in external storage](/rtfm/ENCRYPTION.md) - Added text hosting (like pastebin) - Added Markdown rendering (converts .md files to HTML) - Added Audio support (mp3, wav, ogg, flac, m4a with player) - Added URL shortening - Added [Albums](/rtfm/API.md#album): combine multiple uploads into a single immutable gallery URL - Added "My Uploads" browser tab: localStorage-tracked list of files you uploaded from this browser, with per-item delete, copy URL, and bulk album creation - Added WebP to images (and automatic conversion from jpg, png to webp if the requesting browser supports it) - Massive code rework. Actually we designed it from the ground up to be more modular and easier to debug # Features - Selfhostable - [Simple upload API](/rtfm/API.md) - 100% file based - no database needed - [Scalable hosting](/rtfm/SCALING.md) - Many [Filters](/rtfm/IMAGEFILTERS.md) for images - GIF to MP4 conversion - JPG, PNG to WEBP conversion - MP4 resizing - PictShare removes all exif data so you can upload photos from your phone and all GPS tags and camera model info get wiped - Change and resize your images and videos just by editing the URL - Duplicates don't take up space. If the exact same file is uploaded twice, the second upload will link to the first - Many [configuration options](/rtfm/CONFIG.md) - Full control over your data. Delete images with individual and global delete codes - Group files into immutable [albums](/rtfm/API.md#album) — share a single gallery URL instead of N individual links - Browser-side "My Uploads" tab tracks what you uploaded (localStorage) so you can re-find, delete, or bundle into an album later - Built-in [MCP server](/rtfm/MCP.md) so LLM agents can upload and manage files --- ## MCP server PictShare has a built-in [Model Context Protocol](https://modelcontextprotocol.io) endpoint at `POST /mcp` (Streamable HTTP), so LLM agents can upload and manage files directly. Register in Claude Code: ```bash claude mcp add --transport http pictshare https://your.pictshare.host/mcp ``` If your instance sets `UPLOAD_CODE`, clients must send it as a bearer token: `Authorization: Bearer `. Available tools: | Tool | Purpose | |------|---------| | `upload_from_url` | Download a remote URL and store it | | `upload_base64` | Upload base64-encoded content | | `get_file_info` | File metadata (mime, size, sha1, upload time) | | `delete_file` | Delete a file using its delete code | | `create_album` | Combine hashes into an album | | `transform_image` | Build a resized/filtered/rotated image URL | Full client setup and tool reference: [rtfm/MCP.md](/rtfm/MCP.md) --- ## Development roadmap - [x] Duplicate detection - [x] Write permission detection - [x] Delete codes for every uploaded file - [x] Upload via link/url - [x] Upload via base64 - [ ] Autodestruct for every uploaded file ### Config options Read [here](/rtfm/CONFIG.md) what those options do - [x] ALT_FOLDER - [x] URL (instead of FORCE_DOMAIN but mandatory) - [x] LOG_UPLOADER - [x] FFMPEG_BINARY - [x] PNG_COMPRESSION - [x] JPEG_COMPRESSION - [x] WEBP_COMPRESSION - [x] MASTER_DELETE_CODE - [x] MASTER_DELETE_IP - [x] UPLOAD_FORM_LOCATION - [x] S3 Backend - [x] UPLOAD_CODE - [ ] UPLOAD_QUOTA - [ ] LOW_PROFILE - [ ] IMAGE_CHANGE_CODE - [ ] MAX_RESIZED_IMAGES - [ ] ALLOW_BLOATING ### Image hosting - [x] Resizing - [x] Filters - [x] Gif to mp4 conversion - [x] Upload of images ### Text file hosting - [x] Upload of text files - [x] Render template for text files - [x] Raw data view - [x] Downloadable ### URL shortening - [ ] Upload of links to shorten ### MP4 hosting - [x] Resizing - [x] Preview image generation - [x] Upload of videos - [x] Automatic conversion if not mobile friendly or wrong encoder used - [x] Render template for videos --- This is a [HASCHEK SOLUTIONS](https://haschek.solutions) project [![HS logo](https://pictshare.net/css/imgs/hs_logo.png)](https://haschek.solutions)