How to spot edited real-estate listing photos via hidden thumbnails
- Step 1Confirm you are on a Developer (or higher) plan — This is a Developer-tier tool. On Free, Pro, or Pro + Media the page shows a plan overlay and the dropzone is disabled. Developer raises the per-file limit to 2 GB, which covers any listing photo with room to spare.
- Step 2Save and drop the listing photo — Download the listing image at full resolution (right-click and save the original, not a re-scaled gallery copy), then drop it on the extractor. The dropzone accepts any file type (
*/*) and processes one file at a time — there is no batch mode, so check each suspect photo separately. - Step 3Let the byte-carver scan — The tool reads the file into a buffer and walks it from offset 1, looking for a
FF D8 FFStart-of-Image that is not the host header at offset 0, then searches forward up to 200,000 bytes for the closingFF D9. There are no options, presets, or controls. - Step 4Read the result — If a qualifying embedded JPEG (1 KB-200 KB) is found, the panel shows
bloband a Download button. If none qualify, it showsNo embedded thumbnails detected in this file.— common for photos that were re-exported by an MLS pipeline that regenerates previews. - Step 5Download and compare — Click Download to save
<sourcename>-thumbnails.zip. Inside, each preview isthumb-0.jpg,thumb-1.jpg, … in byte order. Open each one next to the listing image and look for a different sky, an object that is present in the preview but gone from the main photo, or a different colour grade. - Step 6Cross-check the metadata if a discrepancy shows — A leaked preview tells you the image was edited, not who edited it or when. To examine the file's metadata and signature, pair this with exif-map-previewer (for any embedded GPS) and hex-header-inspector. This tool only extracts the preview; it does not read or alter metadata.
Common listing edits and whether a leaked preview can reveal them
A leak only shows up if the editor left the original embedded preview in place. Real-estate pipelines vary, so treat a clean result as inconclusive, not proof of honesty.
| Listing edit | What a stale preview would show | Detectable here? |
|---|---|---|
| Sky replacement | The original grey/overcast sky in the preview | Yes, if the preview predates the edit |
| Power lines / wires painted out | The wires still visible in the preview | Yes, when the preview is the pre-edit copy |
| Clutter / staging items cloned away | The original cluttered room | Yes, if the preview wasn't regenerated |
| Virtual staging (furniture added) | An empty room in the preview | Yes, when the original empty shot is embedded |
| Photo re-exported by an MLS pipeline | Preview regenerated to match the edit | No — no earlier state survives |
| Edit done in a tool that strips metadata | No embedded preview at all | No — nothing to carve |
The byte rules the carver applies
Fixed values from the implementation. There are no user-adjustable options.
| Rule | Value | Why it matters for a listing photo |
|---|---|---|
| Start marker | FF D8 FF after offset 0 | Locates the embedded preview while skipping the photo's own opening header |
| End marker, window | FF D9 within 200,000 bytes of the start | Closes the carved preview; a preview with no nearby EOI is abandoned |
| Minimum kept size | greater than 1,024 bytes | A camera's listing preview is well above this; sub-1 KB runs are dropped |
| Maximum kept size | less than 200,000 bytes | Keeps the small gallery preview; a full-size embedded copy over 200 KB is skipped |
| Max thumbnails per file | 16 | Up to 16 carved previews; a 17th is not extracted |
| Output | ZIP of thumb-N.jpg | Every carved stream is JPEG, named <sourcename>-thumbnails.zip |
Plan, input, and output behaviour
Operational facts for verifying a listing photo with the hidden-thumbnail-extractor.
| Aspect | Behaviour | Note |
|---|---|---|
| Minimum plan | Developer | Free / Pro / Pro + Media show a plan overlay |
| Per-file size limit | 2 GB on Developer; unlimited on Enterprise | Far above any normal listing JPEG |
| Files per run | 1 | No batch — check each listing photo individually |
| Accepted types | Any (*/*) | Downloaded JPEGs, screenshots, and exports all work |
| Output (found) | ZIP: <sourcename>-thumbnails.zip | Contains thumb-0.jpg … up to thumb-15.jpg |
| Where it runs | Browser only | The photo's bytes never leave your device and are not retained |
Cookbook
Byte-level walkthroughs of how the carver behaves on real listing photos. The Input / Result blocks describe markers and sizes, not literal binary.
Sky-replaced exterior with the grey sky still in the preview
An exterior shot had its overcast sky swapped for a blue one, but the editor left the camera's EXIF preview intact — showing the original grey sky.
Input: 42-oak-st-front.jpg (host SOI at offset 0)
... main image (blue sky composited in) ...
APP1/EXIF IFD1 -> preview (grey overcast sky, 19 KB)
Scan: SOI at offset > 0, EOI within 200 KB,
size 19 KB -> KEEP
Result: 42-oak-st-front-thumbnails.zip
thumb-0.jpg (the original grey-sky exterior)
findings.count = 1Power lines painted out, wires visible in the preview
A view shot had overhead wires cloned out of the main image. The stale preview still shows them, revealing the edit.
Input: view-from-deck.jpg ... main image (wires removed) ... embedded preview -> wires present, 27 KB Scan: 27 KB -> 1 KB < 27 KB < 200 KB -> KEEP Result: view-from-deck-thumbnails.zip thumb-0.jpg (wires still visible -> edit confirmed)
MLS-re-exported photo -- no earlier state survives
A listing photo passed through an MLS pipeline that regenerated the preview from the final image. There is no pre-edit copy to recover.
Input: mls-export.jpg SOI (offset 0) final image ... preview regenerated to match -> 16 KB Scan: a preview exists but matches the published image Result: mls-export-thumbnails.zip thumb-0.jpg (matches the listing -> inconclusive)
Metadata stripped on export -- nothing to carve
The agent exported the photo through a tool that strips metadata, so the embedded preview is gone entirely.
Input: stripped-listing.jpg SOI (offset 0) main image ... (no secondary FF D8 FF ... FF D9 in window) Scan: no qualifying embedded JPEG Result (text, not a download): No embedded thumbnails detected in this file.
Document the discrepancy for an appraisal note
An appraiser confirms an edit and records it without touching the original download, then checks the file's metadata separately.
Step 1 -- extract the preview (this tool):
drop listing-photo.jpg
get thumb-0.jpg in listing-photo-thumbnails.zip
(shows clutter the staged photo hides)
Step 2 -- check metadata / location separately:
open /security-tools/exif-map-previewer (any GPS tag)
open /security-tools/hex-header-inspector (file signature)
Result: a documented pre-edit preview + metadata context,
original download untouched.Edge cases and what actually happens
Photo re-exported by an MLS or stock pipeline
InconclusiveMany listing pipelines regenerate the embedded preview from the final image, so a carved thumb-N.jpg that matches the published photo proves nothing about earlier edits. A clean or matching preview is not evidence the photo is unedited — treat the absence of a discrepancy as inconclusive.
No qualifying embedded JPEG in the file
By designWhen the scan finds no secondary FF D8 FF ... FF D9 stream within the 1 KB-200 KB window, the result is the text No embedded thumbnails detected in this file. with nothing to download. This is expected for photos whose preview was regenerated or stripped, and does not by itself indicate the photo is honest or dishonest.
You downloaded a re-scaled gallery copy, not the original
Weak inputListing sites often serve a downscaled, re-encoded copy whose embedded preview was rebuilt by the CDN. Carving such a copy usually finds nothing useful. Always save the highest-resolution original available; a gallery thumbnail or a screenshot rarely retains the camera's original preview.
Preview stored as PNG, GIF, or BMP
Not detectedThe carver recognizes only the JPEG marker FF D8 FF. A preview in PNG, GIF, or BMP has a different signature and is not found. To inspect what the file actually contains, use hex-header-inspector or magic-byte-validator.
Embedded JPEG larger than ~200 KB
By designAn embedded JPEG of 200,000 bytes or more is skipped, because the upper bound restricts output to thumbnail-scale previews. A full-resolution embedded copy will not be extracted; inspect the raw bytes with hex-header-inspector if you suspect one.
Embedded JPEG smaller than 1 KB
By designCarved streams of 1,024 bytes or fewer are rejected as likely-coincidental byte patterns. A genuine but unusually small preview just under 1 KB would also be dropped.
Missing or far-away End-of-Image marker
SkippedAfter a start marker the carver searches forward at most 200,000 bytes for the closing FF D9. A corrupt preview with no EOI in that window is abandoned, so a damaged-but-real preview may not be recovered.
More than 16 previews in one file
TruncatedThe result is capped at the first 16 carved JPEGs in byte order. A heavily re-saved listing photo could in theory exceed this; a count of 16 should be read as 'at least 16'.
File exceeds your plan's size limit
RejectedDeveloper caps each file at 2 GB; a larger file is rejected before scanning. Listing photos are far smaller than this, so the limit is rarely a factor, but the whole file is read into memory first.
Original download integrity
PreservedExtraction is read-only — the tool reads the bytes through the browser and never writes back, so the downloaded file stays bit-identical. To prove it for a report, hash before and after with multi-hash-fingerprinter; the digests must match.
Frequently asked questions
Can this prove a listing photo was edited?
It can reveal an edit when the editor left the original embedded preview in place — for example a grey sky before a sky-replace. It cannot prove a photo is unedited: many pipelines regenerate or strip the preview, so a clean result is inconclusive, not a clean bill of health.
Why would the original scene still be inside an edited photo?
Cameras embed a small JPEG preview so galleries render fast. When an editor rewrites the main image (dropping in a new sky, cloning out wires) but doesn't regenerate that preview, the file keeps a tiny copy of the pre-edit scene.
What kinds of real-estate edits can it surface?
Any edit where the original differs from the final and the original preview survived: sky replacement, painted-out power lines, cloned-away clutter, or virtual staging over an empty room. It surfaces the difference, not the technique.
Should I download the gallery thumbnail or the full photo?
Always save the highest-resolution original. Gallery thumbnails and screenshots are usually re-encoded by the listing site's CDN, which rebuilds the preview — so they rarely contain the camera's original embedded copy.
Does checking the photo change the downloaded file?
No — extraction is read-only. The tool reads the bytes via the browser and never writes back, so the download stays bit-identical. Confirm with multi-hash-fingerprinter if you need a record for a report.
What does 'No embedded thumbnails detected' mean here?
No JPEG preview between 1 KB and 200 KB was found after the host header. For a listing photo that usually means the preview was regenerated or stripped — it is not proof the photo is unedited.
What format are the extracted previews?
Always JPEG. Each carved stream is a JPEG, so files in the ZIP are named thumb-0.jpg, thumb-1.jpg, and so on, regardless of the source file type.
Can I check a whole gallery of photos at once?
No. The tool runs on one file per pass and the output ZIP is named after that single file. Check each listing photo individually.
Do I need to set any options?
No. There are no controls, presets, or format pickers — you drop one file and the carver runs with fixed rules. Only embedded JPEG previews between 1 KB and 200 KB are extracted.
What plan do I need and how large can the file be?
It is a Developer-tier tool. Developer allows files up to 2 GB and Enterprise removes the cap; Free, Pro, and Pro + Media show a plan overlay and cannot run it. Listing photos are well within these limits.
Is the photo uploaded anywhere?
No. Everything runs in your browser — bytes are read, scanned, and zipped locally and nothing is uploaded or retained. You can verify a listing quietly and offline.
How do I see who edited the photo or where it was taken?
This tool only extracts the embedded preview. For location data check exif-map-previewer, and for the file's raw signature use hex-header-inspector. Neither editor identity nor timestamps come from this carver.
Privacy first
Every JAD Security operation runs entirely in your browser. Files, passwords, and PGP private keys never leave your device — verified by zero outbound network requests during processing.