MLS listing photo preflight
Check a folder of listing photos before you deliver them: resolution, file size, format, crop shape, branding in the filename, and staged-photo pairing. Your photos are read in this browser and never uploaded. Free, no signup.
Had a set kicked back? Why was my listing photo rejected? walks through the reasons that are readable from the file, and what to change.
Comparing this to a paid editing/staging service? See this checker vs. BoxBrownie.
Choose the delivery folder
Drop JPEG or PNG files here
or
Nothing leaves your device. Only each file's header is read — the image itself is never decoded or transmitted.
Findings
| File | Rule | Severity | Detail |
|---|
What to fix
Grouped by the most expensive thing each file needs. Photos with no findings are left out.
Take the record with you
Each export states what was and was not checked, so the limitation travels with the file.
Skipped files
None.
What this checks
| Rule | Floor | Severity |
|---|---|---|
| Long edge | At least 1024px | blocking |
| File size | At most 20 MiB | blocking |
| Format | JPEG or PNG | blocking |
| Branding filename | No logo, watermark, branded, brokerage, headshot | blocking |
| Staged pairing | A staged file has a sibling original | blocking |
| Aspect ratio | 4:3, 3:2, 16:9, 5:4 or 1:1 (±4%) | degrading |
What this does not check
Three things this tool deliberately cannot decide, because none of them is visible in a file header or a filename:
- Visual watermarks. A logo drawn into the image is invisible to a header check. A file can pass the branding-filename rule and still carry branding in the picture.
- Burned-in contact details. Same reason — a phone number rendered into the photo is pixels, not metadata.
- Board-specific rules. Individual MLS boards set their own minimums, maximums, counts, ordering, and disclosure wording. This tool knows none of them.
So a clean result means the mechanical floor is met and nothing more. It is not an acceptance decision, and it does not replace reading your board's current photo standards.
Questions
Why do MLS portals reject listing photos?
The most common reasons are mechanical rather than artistic: the image is below the portal's minimum resolution, the file is larger than the upload cap, it is in a format the portal does not accept, it is cropped to a shape the gallery cannot use, or the filename or image carries brokerage branding, a logo, or an agent headshot. Many boards also require that a virtually staged photo be delivered alongside its unstaged original. Every one of those except the visual checks can be decided from the file itself before you upload anything.
What resolution do listing photos need to be?
This tool checks against a documented floor of 1024px on the long edge, which is the common minimum across mainstream portals. Individual MLS boards frequently require more, and some set a maximum as well. Treat a pass here as clearing the floor, not as meeting your specific board's rule — check your board's current photo standards for the number that actually binds you.
Are my listing photos uploaded anywhere?
No. The check runs entirely in your browser and reads only the first few hundred bytes of each file — the header that carries format and dimensions. The image pixels are never decoded, the files are never transmitted, and there is no server, account, or upload step. You can disconnect from the network and the tool still works.
Does a clean preflight mean the MLS will accept my photos?
No, and the record says so on every copy. This checks file headers and filenames only. It cannot see a watermark or burned-in contact details drawn into the image itself, and it does not know any individual board's rules. A clean result means the mechanical floor is met; a human still has to review the photos against the destination board's current standards.
What is the staged-photo pairing check?
Many boards require a virtually staged photo to be disclosed and delivered
next to the unstaged original of the same room. This tool looks for
filenames containing staged, virtually-staged, or
virtual-staged, and flags any that have no sibling file with
the same stem once that token is removed — for example
living-staged.jpg with no living.jpg or
living-original.jpg beside it. It is a filename convention
check, not a detection of staging in the image.