Visual libraryFile selectionAnalysis tools
Smart Photo Organizer

Your collection.An organized view.

Folders, thumbnails and analysis tools in a desktop app.

Organizes a photo collection on the computer itself: quality, categories, faces, text and duplicates.Organizes photos on your computer: categories, faces, duplicates.

Desktop appPhotosOriginal

  • Electron
  • JavaScript
  • sharp
  • Tesseract.js
Visual
library
File
selection
Analysis
tools
Smart Photo Organizer

Your collection.An organized view.

Folders, thumbnails and analysis tools in a desktop app.

  • Electron
  • JavaScript
  • sharp
  • Tesseract.js

Organizes a photo collection on the computer itself: quality, categories, faces, text and duplicates.Organizes photos on your computer: categories, faces, duplicates.

Desktop appPhotosOriginal

  • Electron
  • JavaScript
  • sharp
  • Tesseract.js

PortfolioSmart Photo Organizer

The quality of each photo

How many bytes each pixel should have.

A photo can look fine as a thumbnail and be ruined by compression. The app compares the file size with what the photo should weigh and gives each one a seal. Pick an example or move the width, height and file size.

The photo

Closest aspect ratio (of 8)
  • 1:1
  • 4:3
  • 3:4
  • 16:9
  • 9:16
  • 3:2
  • 2:3
  • 21:9

The app's calculation

Megapixels
12,19
Should weigh (pixels × 0.5 byte)
5,8 MB
Ratio (file ÷ expected)
0,55

Where the ratio falls: below 0.15 is heavily compressed; below 0.25, medium; above that, high.

High quality

The rules are the app's (photoAnalyzer.js): resolution first, under 500 thousand pixels is a thumbnail, under 1 million is low resolution; then the ratio between the file and half a byte per pixel (below 0.15, heavily compressed; below 0.25, medium; otherwise, high). Thumbnails and heavily compressed photos get the compressed flag on the grid. The aspect ratio is the closest of 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3 and 21:9. Examples are illustrative.

Project scene: the app open on a monitor, with a magnifying glass and red photo folders

Find by category. Refine your selection.

Search, category, quality and period to explore the collection.

CategoriesSearch by nameCombined filters

To sort beach, travel, screenshots and documents, the app doesn't need to look at the photo: it reads the file name, the folder, the aspect ratio and the dominant color, in a fixed order, the first rule that matches wins. Change the path, the ratio and the color and see which category the photo lands in.

The file

Try:
Aspect ratio

The 9 rules, in order

  1. ScreenshotName · screenshot · captura · screen · print
  2. DocumentName · doc · scan · documento · pdf
  3. BeachFolder · praia · beach
  4. TravelFolder · viagem · travel · trip
  5. FamilyFolder · familia · family
  6. NightColor · 0,299R + 0,587G + 0,114B < 50
  7. LandscapeRatio · 16:9 · 21:9
  8. PortraitRatio · 9:16 · 3:4
  9. OtherThe rest · —

The photo lands inTravel

The rules are the app's (photoAnalyzer.js), lowercase and in order: the file name comes before the folder, and the folder is the whole path, a grandparent folder named "Travel" counts too. The rule looks for "familia" without the accent, so a Portuguese "Família" folder doesn't match (try the last example). Brightness comes from the dominant color (0.299 red + 0.587 green + 0.114 blue). The Nature and City categories show up in the app's filter, but no rule produces them.

Project scene: the app on a monitor, with face, text and copy icons in front

Organization and analysis. An original project.

Faces, text in photos and duplicates together in one app.

Faces
and people
Text
in images
Original
project

To find the same photo saved twice, or the brightened, recompressed version, the app takes a 64-bit fingerprint of each image and counts how many bits change. The calculation below really runs, in your browser. Adjust the second photo or swap it for another.

The two photos

Black sneaker with a star
Original
Black sneaker with a star
Compared

Each one's fingerprint (64 bits)

Calculating…

The real screens

The calculation is the app's (duplicateDetector.js): the photo becomes 32 × 32 in grayscale, goes through the discrete cosine transform (DCT), the 8 × 8 slowest coefficients are kept without the first, and each becomes 1 if above the average, 64 bits, written as 16 characters. Up to 10 different bits is a duplicate; similarity is (1 − bits ÷ 64). An identical file is an exact copy (the app compares the MD5). Here the downscaling is the browser's, so the bits may differ slightly from the app's. Brightness and recompression change few bits; a big crop or mirroring separates them, the fingerprint isn't made for that.

The technologies

What it is made of, piece by piece

A desktop program that works only with the photos on the machine itself: Electron provides the window, sharp reads and shrinks the images, and face and text reading run locally, without sending any photo out. Pick a piece to see what it does here and which file it is in.

8technologies, in 2 layers

Program

Analysis