Every player.
Every moment.
Automatically organized.
Sportfolios turns thousands of match-day photos into beautifully organized team and player galleries using intelligent jersey-number recognition.
- photos per upload session
- 2,000+photos per upload session
- from upload to sorted
- < 3 minfrom upload to sorted
- photo and player-data storage
- EUphoto and player-data storage
Bascats vs Bremerhaven
1,847 photos · 24 players · sorted automatically
Built with photographers shooting for clubs like these
- Cuxhaven Bascats
- Bremerhaven
- TSV Nordheim
- SC Elbmarsch
- Hansa Sports
- BG Weserland
Upload an entire match.
Get it back organized.
The part of the job that used to take an evening now happens while you drive home.
- 01
Upload the whole match
Drag in a card full of RAW-converted JPEGs. Resumable uploads survive a dropped connection, a closed tab, or a hotel Wi-Fi that gives up halfway.
- 02
Sportfolios reads the jerseys
Every frame is analysed for people, jersey regions and numbers, then matched against the rosters of the teams attached to the event.
- 03
Players get their own galleries
Number 7 becomes Marek Kowalski. His parents get one private link with every photo of him — across every match of the season.
- 04
Selections and sales, handled
Families favourite, select and buy. You export the filenames straight into Lightroom, deliver the finals, and get paid.
Number first.
References when needed.
Sportfolios starts with jersey numbers matched against your roster. When an organisation enables it, controlled player references can fill the frames where the number is turned away, covered or blurred.
- Single, double, angled, partially covered and back-facing numbers
- Multiple players and multiple teams in one frame
- Optional player references with immediate organisation and player deletion
- Confidence scores you can act on, not a black box
- Every correction becomes structured training feedback — never auto-retrained
AI Review
6 of 1,847Suggested players
One link per player.
For the whole season.
Every player gets a private gallery that fills itself — every match, every training, every portrait session, gathered automatically as you shoot.
Private by default. Never indexed, never publicly listed.
Access by link, QR code, access code, or club distribution.
Families favourite, select, and order without an account.
Marek Kowalski
Men's First Team · Season 2026/2027
148 photos · 6 matches
Customer selection · #SF-2026-000123
Submitted by familie.kowalski@example.de · 14 images
- BASCATS_2026-08-01_0417.jpg
- BASCATS_2026-08-01_0432.jpg
- BASCATS_2026-08-01_0511.jpg
- BASCATS_2026-08-01_0688.jpg
Edit only what sells.
The selection workflow is built around how photographers actually work: previews out, favourites in, filenames to Lightroom, finals back.
- 1Customers favourite and submit a selection
- 2You export the filename list
- 3Lightroom matches and you edit only what sold
- 4Finals replace the previews automatically
- 5Stripe takes the payment, Sportfolios delivers the files
Your rosters do the sorting.
Import a roster once. Every photographer you work with benefits from it, and every player is found by number instead of by hand.
Men's First Team
Cuxhaven Bascats · 2026/2027
- 4Lena VogtActive
- 7Marek KowalskiActive
- 9Tom BrandtActive
- 11Ida PetersenActive
- 14Jonas MehlActive
- 23Sara LindqvistActive
Seasons and rosters
A player keeps their identity across seasons while their number changes. Copy last season’s roster forward in one action.
Approval before publishing
Require a club manager to review and approve a gallery before anything reaches families.
Player privacy controls
Per-player consent, guardian contacts, and an opt-out from AI assignment that is actually respected.
Distribution that fits a club
Access codes, QR codes for printed player cards, and links that work in a team WhatsApp group.
Galleries that feel like an app.
Full-bleed covers, a justified grid, instant lightbox, swipe navigation and pinch-to-zoom. Fast on a phone in a sports hall with one bar of signal.
Priced per photographer, not per photo.
Every plan includes jersey-number recognition, player galleries and customer selections.
Starter
For photographers shooting their first seasons.
€19/ month
Start with Starter- 50 GB storage
- 10 active galleries
- Jersey-number recognition, 2,000 photos / month
- Personal player galleries
- Favourites and customer selections
- CSV and TXT exports
- Password-protected share links
- Sportfolios branding on galleries
Professional
For photographers who sell.
€49/ month
Start with Professional- 500 GB storage
- 150 active galleries
- Advanced recognition, 25,000 photos / month
- Digital shop with Stripe checkout
- Custom price lists and packages
- No Sportfolios branding
- Custom domain
- Advanced exports incl. Lightroom lists
- Client management
- Advanced analytics
Studio
For teams covering whole leagues.
€149/ month
Start with Studio- 4 TB storage
- Unlimited practical gallery volume
- Priority recognition, 250,000 photos / month
- 15 team members and multiple brands
- Club management tools
- Granular permissions
- API access
- White-label options
- Advanced reporting
Most of these photos are of children.
That single fact shaped the architecture. Privacy here is a default, not a settings page you have to find.
Read the security overviewPrivate by default
New galleries are private, non-indexed, watermarked and download-off. Going public is a deliberate, logged action.
Originals are never public
Full-resolution files live in a private bucket and are only ever reachable through a short-lived signed URL after an authorization check.
Built for photos of minors
Guardian records, per-player opt-out, controlled optional reference matching, and retention periods you control.
Tenant isolation, enforced server-side
Security Rules, server checks and App Check. Frontend permission checks only ever hide buttons.
Your next match is
already sorted.
Create your studio, import a roster, and upload a match. The first gallery takes about ten minutes.