Scan any folder into a searchable catalog, capture over 90 metadata fields, measure loudness, check files against a delivery spec, find duplicates, and export to CSV, Excel, JSON, and more. Everything runs on your Mac.
It scans a folder, drive, or network volume and builds a catalog of every file inside, with names, paths, sizes, dates, and detailed metadata. You can then search the catalog, hold it to a delivery spec, measure loudness, find duplicates, verify checksums, and export the whole thing to CSV, TSV, Excel, JSON, XML, HTML, PDF, Markdown, property list, or plain text.
How do I scan a folder?
Drag a folder onto the FileLister window, or use Add Folder from the toolbar. The first time you scan a location, macOS may ask you to grant access to that folder or drive. After you approve it, the scan runs and the catalog fills in.
How fast is it on large folders?
On Apple Silicon, FileLister processes roughly 100,000 files in under a minute for a standard scan. Turning on heavier options like checksums or deep image analysis adds time, since each file has to be read in full rather than just listed.
Which export formats are supported?
CSV, TSV, Excel (with thumbnails for image files), JSON, XML, HTML, PDF, Markdown, property list, and plain text. Pick CSV or Excel for spreadsheets, JSON when a script will read the file, and PDF or HTML when the list is a deliverable someone will just look at. Every format writes the columns in the order you arranged them.
How does AI search by content work?
FileLister uses Apple's Vision and Natural Language frameworks to look inside images and documents, so you can search by what a file contains rather than only its name. A photo of a beach can be found by searching for beach even if the file is called IMG_4821.jpg. This runs on-device and does not upload anything.
Can it find duplicate files?
Yes. FileLister computes MD5, SHA-1, and SHA-256 checksums, then groups files that share the same hash. Because the match is on content, it catches duplicates that have different names or live in different folders, and it does not create false matches from files that merely share a size.
What metadata can it capture?
Over 90 fields. EXIF for photos (camera, lens, exposure, GPS if present); video codec and variant, frame rate, capture frame rate, dimensions, bit rate, colour primaries, transfer characteristics, HDR status and start timecode; audio codec, sample rate, bit depth, channel count, track count and a per-track layout; dates, file kind, checksums, and the on-demand loudness and key-frame measurements. You choose which columns to show and export.
Does it work with external drives, network shares, and iCloud?
Yes. You can catalog external drives, mounted network volumes such as an SMB share, and iCloud Drive, not just your local disk. This makes it useful for keeping a searchable record of drives you store offline.
Does my data leave my Mac?
No. All scanning, metadata reading, hashing, and AI analysis happen locally on your Mac. FileLister does not collect data and does not need a network connection to work.
Can I automate scans and exports?
Yes. FileLister integrates with the Shortcuts app, so you can build a Shortcut that scans a fixed folder and writes a dated export to a reports directory, then run it on a schedule or from a menu.
What are Smart Collections?
Smart Collections are saved views that refresh automatically each time you rescan a folder, so a set like large videos or files added this month stays current without you rebuilding it by hand.
How do I check files against a delivery spec?
Create a filter set under Filter Sets in the sidebar. A set has a scope (which files it covers, usually "is a video") and a list of requirements such as video codec equals Apple ProRes 422, frame rate equals 25, pixel width at least 1920. Enable the set and every covered file in the listing gets a verdict as it scans. Sets combine as alternatives: a file passes if it satisfies every requirement of at least one enabled set, which is how a folder holding two different deliverables can be checked against both at once.
Where is the switch between flagging failures and showing only the failures?
Tools → Filter Check, which offers Off, Flag Failures and Only Failures with a checkmark on the active one. Only Failures also has a shortcut, Shift-Command-L. The same three modes are in the check control in the filter bar above the listing, which reads "Check" normally and "8 failing" when there are failures.
How do I export just the files that failed, with the reason?
File → Export Failing Files. It writes a tab-separated file listing each failing file, what it does not meet, and its path, which is the artefact you send back to whoever supplied the media. It follows the source you have selected in the sidebar and any active filters, so the list matches what you are looking at. Separately, in Only Failures mode the listing itself is narrowed to the failures, so any normal export - CSV included - contains only those files.
Can it build a filter set from a file that is already correct?
Yes. Right-click a file you know is right and choose Accept as Filter Set. FileLister drafts a set from that file's own metadata and opens it for editing before saving, so you can loosen the values - the accepted file may be exactly 1920 wide, but the requirement you want is usually "at least 1920".
How do I measure loudness?
Select the audio or video files and choose Tools → Measure Loudness, or use the same command in the right-click menu. FileLister measures integrated loudness in LUFS, loudness range in LU and true peak in dBTP to EBU R 128 and ITU-R BS.1770-4, over the whole file. The results appear as columns and in the Media tab of the inspector. It is a separate command rather than part of a scan because it decodes every audio sample.
Can loudness be part of a filter set?
Yes. Loudness, loudness range and true peak are ordinary fields once measured, so a requirement like "true peak at most -1" or "loudness between -24 and -22" works like any other. Until the measurement has run for a file, a requirement on it reports as not yet judged rather than as a failure.
What is key-frame analysis for?
It answers whether a clip is all-intra - every frame a key frame - which some delivery specs require. The answer is not in the container header; it means walking the sample table. Select the clips and choose Tools → Analyze Key Frames. FileLister reports the longest run between key frames rather than the average, because "every frame" is a claim about every frame and an average rounds a file with real P-frames down to 1.
Why does a file say it cannot be judged instead of failing?
Because the value the requirement needs was never read. If "Read extended media metadata" is off in Settings, no file has a codec or frame rate recorded, and reporting every video as failing a codec rule would be false. The same applies to loudness and key-frame requirements before those measurements have run. FileLister says so and, where relevant, offers to fix it.
How do I set the column order, and does the export follow it?
View → Choose & Arrange Columns (Command-J), then the Arrange tab. It lists the columns you are showing, in order, with each width in points beside it; drag a row to move it. That order is what the table draws and what every export writes - CSV, TSV, Excel, JSON, HTML, PDF, Markdown and Copy as Table alike.
Do column presets remember widths as well as order?
Yes. A preset stores which columns, in what order, and at what width, and an exported preset carries all three in a small JSON file that a colleague can import to reproduce the same layout. Preset files saved by earlier versions still import; they simply carry no widths and leave the current ones alone.
Are my columns and widths remembered between launches?
Yes - the column set, its order and its widths are restored when you reopen the app. Layout → Reset Widths in the Columns panel puts the widths back to the app's own defaults. A window narrower than the columns ask for will still compress them to fit, so the number shown in the panel is what is stored rather than what is on screen.
Can I compare two folders?
Yes. Tools → Compare Folders shows what was added, removed and changed between two locations, and can refine the comparison by hash so a file that was touched but is byte-identical is not reported as modified.
What is a hash sidecar?
A checksum file written alongside a delivery, listing each file and its hash. Tools → Hash Sidecar writes one, and the same command verifies a delivery against an existing sidecar later - which is how you confirm that what arrived is byte-for-byte what was sent.
Can I search a drive that is not plugged in?
Yes. Tools → Catalog This Drive keeps a searchable record of a drive, and Search All Disks queries every catalog you have made, so you can find which disk a file is on before going to look for it.
What version of macOS do I need?
FileLister requires macOS 13.0 or later and is built for Apple Silicon and Intel Macs.
Get FileLister: Folder Inventory
Folder inventory and file catalog for macOS with metadata, checksums, duplicate detection, and multi-format export.
Write the spec down once, then let every file be measured against it.
In the sidebar, under Filter Sets, choose New Filter Set.
Set the scope to the files the spec covers - usually "is a video" - so stills and documents are not judged by it.
Add one requirement per line of the spec: video codec equals Apple ProRes 422, frame rate equals 25, pixel width at least 1920, duration at least 30.
Save the set and switch it on. Every covered file in the listing now carries a verdict, with the failing column marked.
If the spec constrains loudness or key frames, select the clips and run Tools > Measure Loudness and Tools > Analyze Key Frames, since neither can be read from a header.
Choose Tools > Filter Check > Only Failures to narrow the listing to what missed, or File > Export Failing Files to write the list with the reason beside each name.
Filter sets combine as alternatives, so a folder holding two different deliverables can be held to both at once - a file passes if it satisfies either set in full.
Integrated loudness, loudness range and true peak, over the whole file.
Scan the folder, then select the audio or video files you want measured. With nothing selected, the whole listing is measured.
Choose Tools > Measure Loudness. A progress bar appears in the status bar with a Stop button.
When it finishes, the Loudness and True Peak columns are added automatically; add Loudness Range from the Columns panel if you need it.
Sort by loudness to find the outlier - a mix that came from a different session is usually several units away from the rest.
To make it a rule rather than a reading, add a loudness requirement to a filter set, for example true peak at most -1.
The measurement decodes every audio sample, so it is a separate command rather than part of a scan. A file with no audio track is skipped rather than reported as silent.
Columns, their order and their widths, in one small file.
Open View > Choose & Arrange Columns, or press Command-J.
On the All Columns tab, tick the columns you want. Search by name if you are looking for a specific field.
Switch to the Arrange tab and drag the rows into the order you want. Name is always first.
Close the panel and drag the column dividers in the table until the widths are readable.
In the sidebar, under Column Presets, choose Save Current Columns and give it a name.
Right-click the preset and choose Export to write a JSON file, then share it. Colleagues use Import Column Presets to apply the same layout.
The exported file carries the order as the array order and each width alongside its column, so the layout is reproduced rather than approximated. That order is also the order every export writes.
You’re browsing inside Instagram, and its built-in browser isn’t allowed to hand
links over to the App Store. Open this page in Safari and the link will work.
Tap •••the three-dot menu
at the top right, then choose Open in external browser.