pictkuraManual

pictkura Manual

Import your photos, lay them out, find them, look at them. That is all this app does.

1. Getting started — register a library

On first launch, use “Add a folder” at the bottom of the left pane: type the folder that holds your photos and press “Add”. You can also pick one from the list of drives.

Scanning starts immediately, and a grid ordered by date builds up. The grid stays live while the scan runs — rows appear as they are ready.

The grid, with photos laid out by date
The grid. The vertical strip on the right is the year scrubber — grab it to jump.

The second launch is much faster. pictkura reads the change journal the Windows file system already keeps (the USN journal) and only looks at the files that changed since last time. The ⚡ readout at the top right shows how much processing it skipped.

2. Import from a USB drive or SD card

Press “Import from USB” at the top.

The import wizard: a source tree on the left, photos on the right
Pick a source on the left and its photos appear.
ControlWhat it does
Include subfoldersPicks everything up even when the card has date folders under DCIM. Choosing a folder scans all the way down by default
Hide already importedHides what is already in your library. The check runs through the same code as the import itself, so the “done” badges never disagree with reality
DestinationSet any folder from “Change” at the bottom. If it is unset, you are asked when the import starts
Whole folderImports the selected folder in its entirety

While copying you get a progress bar, an estimated time remaining, and the photo currently being copied. When a copy finishes, sizes are compared to verify it.

Offer pictkura when a card is inserted (Windows only)

pictkura adds itself to the Windows AutoPlay choices that appear when you insert a USB drive or an SD card. This is on by default, but it never starts on its own — the import wizard opens on that drive only when you choose it. Note that the entry itself is worded in Japanese.

To turn it off, clear the “When you insert a USB drive or SD card” checkbox in Settings ⚙. It disappears from the choices right away. That is also the reliable way to remove it before uninstalling. Uninstalling with the installer removes it automatically, but only for the user who ran the uninstall (the setting is per user). The portable build is just a folder you delete, so run pictkura.exe --unregister-autoplay before deleting it.

When inserting a card asks you nothing

If this PC already has a default action, inserting a card shows no choices at all. Windows performs whatever was decided (for example “Open folder to view files”) without asking. pictkura is registered as a candidate, but nothing ever asks.

Check and change it under Settings → Bluetooth & devices → AutoPlay. “Choose AutoPlay defaults” lists “Removable drive” and “Memory card”. Pick “Ask me every time” if you want to choose on every insert, or pictkura’s own entry if you always want pictkura. That entry reads 「pictkura で写真を取り込む」 — it is worded in Japanese whatever your Windows language is, so look for the pictkura icon and the name in brackets. If that list shows it at all, the registration is working.

If you would rather see the choices once without changing the default, right-click the drive in File Explorer and choose “Open AutoPlay”: the picker that should have appeared on insert opens on the spot. In the Windows 11 right-click menu it lives under “Show more options” (or Shift+F10).

Files that sit next to a photo travel with it

A .xmp written by a raw developer (develop settings, ratings, keywords) sits next to the photo under the same name. pictkura carries those along: leaving one behind looks, later on, exactly like losing all your edits. This applies when importing, when copying or moving to a folder, and when sending a photo to the recycle bin.

ExtensionWritten by
.xmpAdobe (Camera Raw / Lightroom / Bridge), darktable, digiKam, Photo Mechanic
.aaePhotos on iPhone / iPad
.dopDxO PhotoLab
.pp3RawTherapee
.on1ON1 Photo RAW

Anything else — video thumbnails (.thm), low-resolution proxies (.lrv), PlayMemories Home bookkeeping (.modd, .moff), voice memos (.wav) — is not carried by default, because the camera can regenerate it or it belongs to another application. You can add what you need to the settings file (see “Where settings and data live”), or empty the list to carry nothing at all.

Write it under [import] in pictkura.toml. When the line is absent the five defaults apply, so add it only if you want something different.

[import]
# also carry voice memos (.wav)
sidecar_extensions = ["xmp", "aae", "dop", "pp3", "on1", "wav"]

# carry nothing
# sidecar_extensions = []

If you shoot RAW+JPEG (IMG_0001.CR3 and IMG_0001.JPG), the pair lands in the same date folder even when only one of the two carries a capture time (the other follows it). Without this the pair would be split across folders and could no longer be matched up. If neither file carries a capture time, each falls back to its own modification time.

When you send only one half of the pair to the trash, a sidecar that is tied to the photo by name alone (IMG_0001.xmp) stays behind: with a same-named photo still there, which one it belongs to cannot be decided (Lightroom writes .xmp for raw files only). A sidecar that carries the full file name (IMG_0001.CR3.xmp) belongs to that one photo, so it moves with it.

3. Decide how imported photos are filed

⚙ (Settings) → “Import folder structure”. Where photos end up is hard to change later, so it is worth deciding first. There are nine common layouts to choose from.

The settings dialog: folder layout choices and the custom pattern field
Choose “Custom” to write your own.
What you can writeWhat it becomes
{year}four-digit year (2026)
{month}two-digit month (08)
{day}two-digit day (13)
/a folder level

As you type, the folder name you will actually get is shown right there. Writing {year}nen/{month}gatsu-{day}nichi, for instance, gives 2026nen/08gatsu-13nichi/.

If you keep the year folders yourself, point the destination at that year’s folder and choose 2026-08-16/ (no year level) or 08/2026-08-16/. Only date folders are then added underneath.

Folder names are built year-first in every language. That is so sorting by name sorts by time, which is the usual convention for photo tools (Immich defaults to Year/Year-Month-Day, and every dated folder format Lightroom Classic offers starts with the year). Dates shown on screen follow your language; dates in folder names follow the sort order.

.. (move to the parent folder), absolute paths, and characters that are not allowed in file names are dropped automatically. Whatever you write, nothing is ever written outside the destination.

Where the date comes from

The date that picks the destination folder during an import comes from EXIF (the container, for videos), then from the file name, then from the other half of a RAW+JPG pair, then from the file's modification time — and if even that is unusable, from the day of the import itself. It never asks the OS or your library: at import time there is no library entry for the file yet.

The list below is how the date is decided once the photo is in your library, for the grid and the viewer. The first of these that exists is used.

  1. EXIF capture time — written by the camera or phone
  2. What the OS already knows — available even when the file only exists in the cloud
  3. A date in the file name — used when the name carries one, as in 2024-01-01 12.34.56.jpg
  4. File modification time — when none of the above exist

Screenshots and images saved from social apps usually carry no EXIF, and modification time alone files them under “the day you saved it”. When the name carries a date, that wins, so they land on the right day.

When pictkura can make no picture for a file — a RAW with no usable preview, say — a date already recorded for it comes third in the list, ahead of the file name and the modification time, unless what is recorded is only that modification time, which means nothing has been read yet. That matters because a file that ends up with no size at all is looked at again on every startup, so a pass that reads nothing must not erase a date that was read before.

Use the search box at the top, or the command palette with Ctrl + K.

What you typeWhat it means
okinawaSubstring match on file name, folder name and camera name. Languages that are not written with spaces match in the middle too, so 「旅行」 finds 「沖縄旅行」
camera:α7Narrow by camera (the same as “Cameras & media” in the left pane)
folder:tripNarrow by folder name
2019-08 2019/8 2019-08-11Narrow by capture date. Just typing digits, such as 2019, is treated as text, not a date — it cannot be told apart from a file name
year:2019Narrow to a single year
Favorites only
pick:Picked photos only (a separate shelf from ★)
kind:raw type:videoFilter by kind (the same as “Kind” in the left pane): photo, raw, video

All terms are ANDed. The order is fixed: newest capture date first.

5. Look

Click a tile to open the full-size viewer.

The viewer, with zoom and controls at the top and file name and date at the bottom
Hold the mouse still and the controls fade out; move it and they come back.
KeyWhat it does
Previous / next photo (same for videos)
P / UPick (flag it ⚑) / undo the judgement on this photo (clear ⚑ and ✕). By default this moves on to the next photo; Settings → “When you view a photo full screen” turns that off
XReject it (✕). Nothing is deleted when you press it — rejected photos go to the trash together when you close the viewer
SpaceStart or stop the slideshow. On a video, play / pause
ICapture details (camera, lens, aperture, shutter, ISO, GPS)
F11Full screen
EscClose
?Show the keyboard shortcuts (works in the grid too)

Right-click for “Open”, “Open with another app…”, “Show in folder” and “Delete (move to trash)”. An editing app you pick once is remembered and appears in the menu from then on.

Deleting always goes through the Recycle Bin. The app never removes a file outright.

6. Select several at once

Hover a tile and click the circle in its corner, or Ctrl + click it ( on macOS), to start selecting. A bar appears at the top of the window with what you can do to the selection.

ActionWhat it does
The circle, or Ctrl + clickAdd or remove one photo
Shift + clickSelect everything between the tile you clicked last and this one. Days you have not scrolled to yet are included
Click a date headingSelect that whole day. Click it again to unselect it
Ctrl + ASelect everything the current search and ★ / ⚑ filter match
EscStop selecting

While something is selected, a plain click toggles a tile instead of opening the viewer. From the bar you can add or remove ★ for the whole selection, copy or move it to a folder you pick, or move all of it to the Recycle Bin in one go. It asks before deleting.

⚑ Picked

The ⚑ that P puts on a photo is a separate shelf from ★ favourites. ★ is “a photo I want to come back to”; ⚑ is “the one frame I keep out of this burst”. Sharing one mark would fill your favourites with the leftovers of every culling session. “⚑ Picked” in the sidebar lists what you picked, the search box takes (or pick:), and the selection bar can pick or unpick a whole selection at once.

✕ Reject

Press X in the viewer and the photo becomes a rejection candidate. No file moves at that moment — the photo dims in the filmstrip below, and a “✕ 3” chip next to the caption counts them. Click the chip to look them over at any time, and press U if you change your mind.

When you close the viewer (Esc, a click outside the photo, or the ✕ at the top right) with candidates still marked, a confirmation screen opens. It shows every marked photo as a thumbnail: press “Keep” on the ones you want back, then “Move N to trash” to move the rest in one go. They go to the OS trash, so you can restore them later — restored files are picked up by the watcher and come back to the library (★ favourites and ⚑ picks have to be set again).

View the selection

“View the selection” in the bar opens the viewer on just those photos. stay inside the selection, and the counter in the corner counts the photos you picked out. To choose one frame out of a burst, select the burst, come in here, and walk it with P and U.

Copy to folder / Move to folder

These put the selected files straight into the folder you pick, without date subfolders — handy for handing a few photos to someone, or filling a USB stick. A file that is already there — same name, size and timestamp — is left alone, so writing the same photos to the same folder again adds nothing; a different file that happens to share a name gets -1, -2 appended.

Moving takes those photos out of the library. They leave their current place, disappear from the grid, and their ★ / ⚑ marks are not carried over. pictkura asks first. Moving to another drive copies the file and then sends the original to the Recycle Bin — the app still never removes a file outright.

Files that only exist in the cloud are downloaded first, because writing them out has to read them — that applies to moving too, even within the same drive. See 8. Files that only exist in the cloud.

The selection follows what is on screen. Changing the search or the ★ / ⚑ filter, or switching to the calendar, clears it — so a bulk action never reaches photos you cannot see. Deleting still goes through the Recycle Bin.

7. Supported file formats

Photos

FormatGridViewerNotes
jpg jpegDecoded while downscaling, so even large photos are quick
png webp
avifDecoder is bundled; no OS extension needed
heic heif hifThe iPhone default. Pixel decoding is left to the OS (see below)
bmp gif tif tiffTIFF is re-encoded to JPEG for display
svgDrawn from the original, so zooming never degrades it

RAW

No demosaicing. pictkura pulls out the display JPEG the camera wrote for its own rear screen. That takes a few milliseconds per file, and the colours are the camera’s own rendering.

FormatGridFull screenNotes
cr2 cr3 nef nrw arw raf orf rw2 pef srw dng rwl 3fr x3f kdcUses the camera's own display JPEG, at or near full resolution. Includes Apple ProRAW (DNG)
crw srf sr2 mrw erf dcr iiq mos⚠️Older bodies embed only a small preview (160×120 to 640×480 on the files we tested), so the grid is fine but a full-screen view is soft
raw⚠️⚠️The two we tested (Panasonic DMC-LX1, DMC-FZ8) carry no preview at all, so only a frame appears. The size comes from the sensor borders and the date and camera from EXIF, so they still sort by date and show up in the camera filter
fff (Hasselblad)⚠️⚠️The H5D-40 file we tested carries no preview at all, so only a frame appears
ptx (Pentax)??Recognised, but we could not obtain a real file to check
Blackmagic CinemaDNG⚠️⚠️Carries no preview at all

Video

FormatGridPlays in appNotes
mp4 m4v mov webmCodecs depend on the OS (HEVC — see below)
avi mts m2ts mkv 3gp wmv mpg mpegUse “Open in default app” to play

Appearing in the grid is the same on every platform. What changes is whether a picture comes with it: the ✅ in the grid column above is what was checked on Windows, and even there the picture is the OS's answer rather than ours. Grid thumbnails are borrowed from the OS, so a container is covered exactly as far as the OS can open it. On Windows that is the Shell, the same mechanism Explorer uses: .avi and HEVC .mov were measured coming back with a frame, .m2ts has never been checked, and anything the OS has no handler or codec for comes back empty. That HEVC measurement was taken on a machine with the paid extension described below installed; it was never tried without it. AVFoundation on macOS answers only for what it can openmp4 and mov were measured returning a real frame, with H.264 and with HEVC (hvc1, the fourcc an iPhone writes), though those HEVC samples were re-encoded by macOS itself rather than written by a phone. .avi was measured returning nothing. Anything not named here is untested on both: a picture is possible, not promised. Linux has no route at all.

Duration, dimensions and capture time come from the container header for mp4, m4v, mov and 3gp — not a single byte of pixel data is read. Note that webm is not among them, despite sitting in the first row above. The other containers have nothing but the Windows Shell to fall back on — measured with a synthetic .m2ts, which came back with both duration and dimensions; the rest were never checked. On macOS and Linux those containers show no duration or dimensions, and the date falls back to the file name or the modification time.

8. Files that only exist in the cloud

On Windows, “Pictures” points at OneDrive by default, and after a while much of what is in it becomes “online-only”: the real file lives in the cloud and all you have locally is a marker.

pictkura never downloads them on its own. Installing the app will not quietly pull gigabytes over your connection.

9. Update notices

A few seconds after it starts, pictkura asks once whether a newer version exists. If there is one, a quiet line naming the new version appears at the bottom of the window; pressing it opens the download page in your default browser. The app never replaces itself.

This is the only outbound connection the app makes. All it sends is “pictkura version X is asking”; it sends no photos, no file names, and no folder paths. All it receives is the name of the latest version. It asks at most once a day, and if it cannot reach the network it fails silently, without showing an error.

If you would rather it did not, turn off Settings → About pictkura → “Check for updates at startup”. With that off, pictkura never reaches the network at all — and you can still press “Check for updates” in the same place to ask once, right then.

10. Limitations and things it does not do

SubjectDetail
HEIC / HEVC need OS components on Windows The HEVC decoder is not bundled — patent licensing makes that impractical, so pictkura uses the one the OS has. On Windows that means installing “HEIF Image Extensions” (free) plus “HEVC Video Extensions” (paid, about a dollar) to decode the pixels; the app tells you when one is missing. On macOS there is nothing to install — ImageIO and the HEVC decoder ship with the system
Video thumbnails go only as far as the OS can open the containerOn Windows the Shell provides them — .avi and HEVC .mov measured working, .m2ts never checked, anything the OS has no handler or codec for comes back empty. macOS shows what AVFoundation can openmp4 and mov measured working with H.264 and HEVC (hvc1) samples, .avi measured empty, every other container untested. Linux has no route at all
Duration and dimensions outside mp4, m4v, mov, 3gpThose four are read straight from the container header. The rest rely on the Windows Shell (measured with a synthetic .m2ts only); on macOS and Linux they show no duration or dimensions (the date falls back to the file name or modification time)
.m2ts / .avi do not play in the appThe browser engine cannot handle those containers. They still appear in the grid
A RAW that declares its size nowhere shows noneDimensions come from the file's own declaration, from the sensor borders inside Panasonic's own RAW formats (rw2, raw, rwl — the Leicas built on those bodies included), or from the embedded preview. A RAW with none of those (measured: the Blackmagic CinemaDNG) shows no size in the grid, and is asked again on every startup. On Windows a file that only exists in the cloud is the exception — the Shell supplies its dimensions without downloading it
No UI to rebuild the search indexIf it breaks, delete pictkura.db in the settings folder and let it rebuild (thumbnails are rebuilt too)
No sort options for resultsNewest capture date first, always
An import cannot be cancelledOnce started, it runs to the end
RTL layoutsRight-to-left languages such as Arabic are not supported yet

11. Where settings and data live

FileLocation (Windows)
Settings%APPDATA%\dev.harusame.pictkura\pictkura.toml
Database%APPDATA%\dev.harusame.pictkura\pictkura.db
Thumbnails%APPDATA%\dev.harusame.pictkura\thumbs\

You can edit the settings file by hand. Anything the app has no UI for — the patterns of folders to exclude from scanning, or [import] sidecar_extensions for the files carried along with each photo — can be changed there. Your photos are never stored in these places. Deleting the database does not delete any photo; it is simply rebuilt.