Photographs carry more than pixels. Open one and see what it is telling people, then save a copy with that removed.
Nothing is uploaded. The file is read inside your browser, which for this particular tool rather matters.
Most cameras and phones record the make and model, the date and time, the exposure settings, the software that last touched the file, and often the orientation. Phones with location services on also record latitude and longitude, accurate to a few metres.
That last one is the reason this tool exists. A photograph posted from home, with GPS intact, tells strangers where you live.
from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
im = Image.open("photo.jpg")
exif = im.getexif()
for tag, value in exif.items():
print(TAGS.get(tag, tag), "=", value)
gps = exif.get_ifd(0x8825)
for tag, value in gps.items():
print(GPSTAGS.get(tag, tag), "=", value)
from PIL import Image
im = Image.open("photo.jpg")
clean = Image.new(im.mode, im.size)
clean.putdata(list(im.getdata()))
clean.save("clean.jpg", quality=92)
Copying the pixels into a new image is the reliable way. Saving without passing exif= is usually enough, but building a fresh image leaves nothing behind at all.
Stripping Exif also removes the orientation tag, which can leave a photo sideways. Apply the rotation to the pixels before you strip:
from PIL import Image, ImageOps
im = ImageOps.exif_transpose(Image.open("photo.jpg"))
This tool does that for you, because the browser applies orientation when it draws the image.
It parses the Exif block of JPEG files directly, including the camera sub directory and the GPS sub directory. PNG and WEBP usually carry no Exif at all, and many apps strip it when exporting, so an empty result is common and not a fault.