TagMyPhoto Express needs the File System Access API to read and save photos on your device. Please open this page in Chrome or Edge on desktop.
Open a folder of photos to get started. Tags are saved directly into each JPEG's IPTC keywords — nothing leaves your browser.
Roster
Also tagged
Metadata Templates
File Renaming
Click Open Folder and choose a folder of photos. Everything happens on your device — tags and metadata are saved directly into each JPEG's IPTC/XMP data, and nothing is ever uploaded anywhere. Use Reopen recent to jump back into a folder you used before.
Select a photo (click a thumbnail, or use ← / →), then type a
name or number into the box and press Enter (or click Add) to
tag it. Roster buttons let you tag someone with a single click. Check the box on one or more
thumbnails to limit Apply Template / Rename Files to just those photos — with nothing checked,
they apply to every photo in the folder. Show untagged filters the thumbnail
strip down to photos with no tags yet.
Your roster is the list of names/numbers you tag most often. Use the gear icon to manage rosters — the Manual, CSV / TSV, and Presto tabs each add people a different way, the dropdown switches between multiple rosters, and the JSON tab exports/imports them as a backup or to move between devices.
The Presto tab fetches a team roster page directly, but it only works when this app is running on the same site as that roster page — a browser won't let it read another site's pages otherwise. To make that possible, add this tag to a page on your team's website (ask whoever manages the site if you don't have access):
<script src="https://express.tagmy.photo/embed.js"></script>
That adds a small Launch button wherever the tag is placed. Clicking it opens the full app as an overlay on top of that page, so Manage Roster → Presto can pull a roster from any page on that same site.
Build a reusable set of IPTC/XMP fields (Description, Headline, Credit, etc.) under the gear
icon. Any field can include variables like {photographer}, {org_name},
{iptcyear4}/{iptcmonth}/{iptcday}, {persons},
or your own {CUSTOM:Label} — you'll be prompted for custom values when you apply.
Apply Template writes the filled-in fields into every targeted photo at once.
Build a filename pattern under the gear icon using the same kind of variables (dates,
{persons}, {CUSTOM:Label}) plus {SEQ:001} for an
auto-incrementing number — the digits set both the starting value and the zero-padded width,
e.g. {SEQ:001} gives 001, 002…, and {SEQ:0100} starts at 100 with 4
digits. Every pattern needs a {SEQ:...} so renamed files don't collide. The
original file extension is kept automatically.
Save your Photographer and Organization name once (top-right gear icon) and they'll auto-fill whenever you open Apply Template — no need to retype them each time.
← / → — previous/next photo ·
Enter — add the typed tag ·
↑ / ↓ — move through tag suggestions ·
Esc — clear the tag box
Used to auto-fill the Photographer/Organization fields when applying a metadata template. Saved on this device.
Always shown in the "Also tagged" section so you can tag one with a single click, even before it's used on any photo. Saved on this device.
Click a variable to insert it into the focused field
Custom variables used
Preview (sample data)
Custom variables
Starting…
Starting…
Click a variable to insert it into the pattern
This pattern has no {SEQ:...} — add one (e.g. {SEQ:001}) so every photo gets a unique filename.
The original file extension is kept automatically — no need to include it in the pattern.
Add your own fill-in fields with {CUSTOM:Label} — e.g. {CUSTOM:Sport} or {CUSTOM:Opponent/Event}. You'll be prompted for a value when you rename.
Use {SEQ:001} for an auto-incrementing sequence — the digits set both the start and the padding, e.g. {SEQ:001} gives 001, 002…, and {SEQ:0100} gives 0100, 0101… starting at 100.
Custom variables used
Preview (sample data)
Custom variables
Starting…
Starting…