Most photo libraries are a single giant pile sorted only by date. But you don't remember your pictures by timestamp — you remember them by place: the trip to Paris, the weekend in Chicago, the taco stand you can't stop thinking about. DKPhotoSorter rebuilds your library around where each photo was actually taken, and it does the whole job for you.
Two ways a photo knows where it was taken
There are really only two ways to figure out where a picture was shot, and DKPhotoSorter uses both.
- The GPS stored in the file. Phones and many cameras write latitude and longitude into a photo's EXIF metadata. DKPhotoSorter reads those coordinates directly — no cloud lookup, no account.
- What's actually in the picture. Plenty of photos have no GPS at all: screenshots, scanned prints, images stripped of metadata by messaging apps, or shots from a camera with location turned off. For those, the answer is still in the frame — the skyline, the landmark, the sign over the door.
GPS-only tools give up the moment the coordinates are missing. DKPhotoSorter keeps going.
How the AI reads the scene when there's no GPS
When a photo has no coordinates, DKPhotoSorter sends a small resized thumbnail to the AI model you chose — Google Gemini or OpenAI, running on your own key — and asks it what the photo shows. Modern vision models are genuinely good at this: they recognize the Chicago skyline from the shape of the Willis Tower, the Statue of Liberty from across the harbor, the Eiffel Tower at night, a national-park sign, a hotel logo, a street of shopfronts.
That recognized place is then verified against real-world map data — the app forward-geocodes named places through OpenStreetMap Nominatim and confirms venues via OSM Overpass — so an AI guess becomes a checked, mappable location rather than a hallucination. This is the part a GPS-only utility structurally cannot copy: it isn't reading a coordinate field, it's understanding the picture. That's the uncopyable angle.
Together, not either-or. GPS gives pinpoint accuracy when it's present; AI vision fills every gap where it isn't. You get one consistent, fully-sorted library instead of a folder of leftovers the software couldn't place.
Offline reverse-geocoding with 400,000+ places
A raw latitude and longitude isn't a folder name. Turning 41.8789, -87.6359 into "Illinois / Chicago" is called reverse-geocoding, and DKPhotoSorter does it entirely offline using a bundled GeoNames database of more than 400,000 places. No coordinate is sent out for this place-name lookup, and it keeps working with no internet connection. It's fast, private, and free of per-lookup limits.
The exact folder structure it builds
DKPhotoSorter physically moves (or copies) each file into a State-or-Country / City / Venue / Subject / Date tree. Here's what a real destination looks like:
Sorted Photos/
├─ Illinois/
│ └─ Chicago/
│ ├─ Willis Tower/
│ │ └─ Skyline/
│ │ └─ 2024-07-14/
│ └─ Navy Pier/
├─ France/
│ └─ Paris/
│ └─ Eiffel Tower/
│ └─ 2023-09-02/
├─ Family/
├─ Food/
└─ _Video/
Generic categories like Home, Family, or Food stay flat rather than getting a location path, unless you turn on "Tag City." There are 17 parent categories and 790+ subject-normalization overrides keeping the subject names tidy and consistent. Non-photo files are routed out of the way into _Video, _Audio, _Documents, _Spreadsheets, _Presentations, and _Archives.
Trips get a State or Country prefix
DKPhotoSorter compares each photo to the Home Address you enter. Anything shot more than 80 km from home is treated as travel and gets a top-level prefix — a US state for domestic trips, a country for international ones — so your Paris photos land under France / Paris and your everyday shots don't clutter up the map. Within a city, photos are grouped by the specific venue the app resolved and verified against OpenStreetMap.
Move, Copy, Undo, and Dry Run — nothing happens by surprise
File organization should never be scary. DKPhotoSorter gives you real safety nets:
- Dry Run previews the entire sort before a single file moves, so you see exactly where everything will go.
- Move or Copy — keep originals in place and copy into the tree, or move them outright, your choice.
- One-click Undo reverses the last run. In Move mode it returns every file to its original spot; in Copy mode it deletes only the copies it made, leaving your originals untouched.
- Exact-duplicate detection via SHA-256 catches byte-identical copies, and you can set scheduled sorting to keep a folder tidy automatically.
Private by design, and you bring your own key
DKPhotoSorter runs locally on your PC. There are no developer servers, no accounts, no analytics, and no telemetry. Your original full-resolution photos never leave the machine. When AI is needed, only a resized JPEG thumbnail plus limited metadata — filename, EXIF date, GPS coordinates, the resolved place name, and (if you set them) your Home Address, Keywords, and Tag City — is sent to the provider you pick, on your own API key. GPS coordinates also go to OSM Overpass for venue lookup. That's it.
You choose between Google Gemini (Flash-Lite, Flash, or Pro) and OpenAI (from GPT-4.1-nano up to GPT-5). Gemini even has a free tier of roughly 25 requests per day, enough to try the whole workflow before spending a cent.
One-time $19.99 — about $1.10 per 1,000 photos
DKPhotoSorter is a one-time $19.99 purchase, not a subscription. Because it's bring-your-own-key, the only running cost is whatever your AI provider charges. Estimates vary, but Gemini Flash comes to roughly $0.11 per 100 photos — about $1.10 per 1,000 — and Flash-Lite is even cheaper at around $0.04 per 100. Every analyzed photo is cached, so re-running the same library later costs $0. You can also set a hard cost limit so the app stops before it ever exceeds your budget.
Currently Windows 10 and Windows 11. Works with the 13 common image formats including native HEIC/HEIF — note that camera-RAW files (CR2, NEF, ARW, DNG) are not supported.
Frequently asked questions
Can it organize photos that have no GPS data?
Yes. When a photo has no GPS in its EXIF, DKPhotoSorter sends a resized thumbnail to the AI model you chose on your own key, and the AI recognizes landmarks, skylines, signs, and venues in the frame — the Chicago skyline, the Statue of Liberty, a restaurant sign — to place the photo. It then verifies the venue against OpenStreetMap. See how AI sorts photos without GPS for a deeper walkthrough.
How much does it cost to run?
The app is a one-time $19.99. You bring your own Gemini or OpenAI key and pay the provider directly. Costs are estimated and vary, but Gemini Flash runs about $0.11 per 100 photos (roughly $1.10 per 1,000), and Gemini has a free tier of about 25 requests per day. Analyzed photos are cached, so re-runs cost nothing.
Does it work offline and is my data private?
Reverse-geocoding runs fully offline against a bundled 400,000+ place GeoNames database. There are no DKPhotoSorter servers, accounts, analytics, or telemetry, and your original full-resolution photos never leave your PC — only a resized thumbnail and limited metadata goes to the AI provider you choose.
What image formats does it support?
13 formats: JPG, JPEG, PNG, HEIC, HEIF, WebP, AVIF, TIFF, TIF, BMP, JFIF, JP2, and J2K, with native HEIC/HEIF and no conversion. Camera-RAW is not supported.
Want the phone-specific walkthrough? See organize iPhone photos on Windows by location, or start with the big-picture guide to organizing thousands of photos. Ready to go? Get DKPhotoSorter for $19.99.