RenameClick
Customization

Filename Format Patterns & Metadata

Create custom filename patterns with precise word selection, AI-generated and original names, counters, dates, EXIF, audio metadata, and text transformations in RenameClick.

RenameClick offers powerful filename formatting through built-in presets and custom patterns. You can combine AI-generated and original names, select exact words from either name, and add counters, file dates, image EXIF, audio metadata or transcript excerpts, and text transformations. File extensions are preserved automatically.

Built-in format presets

Built-in Format Presets

PresetExample OutputDescription
SpacesModern Office Desk.jpgAI name as-is with spaces
Slug Casemodern-office-desk.jpgLowercase with hyphens
Camel CasemodernOfficeDesk.jpgcamelCase format
[exif] When_Where2024-12-07_Berlin_Modern Office Desk.jpgEXIF date + location + AI name

Custom Format Presets

You can create your own named format presets with custom patterns. Each preset stores a name, format pattern (using placeholders below), and optional description.

When you create a new format preset:

  • The pattern editor validates syntax before saving
  • A live preview shows what the output will look like
  • The new preset is auto-selected immediately

Placeholders Reference

AI Name Placeholders

PlaceholderWhat It ReturnsExample
$1Full AI-generated name"Modern Office Desk"
$2First word of AI name"Modern"
$3Second word"Office"
$4Third word"Desk"
$5+Additional words in order(continues for each word)
$oldNameOriginal filename (without extension)"IMG_4521"
$words{new,1}First Unicode word of the AI-generated name"Modern"
$words{old,last}Last Unicode word of the original filename"4521"

Flexible Word Selection with $words

Use $words{...} when you need an exact word, the last word, or an inclusive word range from either the AI-generated name or the original filename.

$words{<new|old>,<selector>[; split=/<separator-regex>/<flags>][; join="<text>"]}

Both sources exclude the file extension:

SourceReads FromEquivalent Full-Name Placeholder
newAI-generated name$1
oldOriginal filename$oldName

For the examples below, assume:

  • AI name: Modern, Office—Desk Lamp
  • Original file: IMG_2024-final.v2.jpg (old sees IMG_2024-final.v2)

Selectors

Word positions start at 1, and ranges include both their start and end.

SelectorMeaningExample PatternOutput
1, 2, ...One word at that position$words{new,1}Modern
lastFinal word$words{new,last}Lamp
2..4Words 2 through 4, inclusive$words{new,2..4}Office Desk Lamp
2..lastWord 2 through the final word$words{new,2..last}Office Desk Lamp

Indexes must be positive integers. Negative indexes and reverse ranges such as 4..2 are not supported.

Default Unicode Word Splitting

By default, a word is a continuous sequence of Unicode letters, combining marks, or numbers. Spaces, _, -, ., commas, dashes, apostrophes, emoji, and other punctuation act as separators. Repeated, leading, or trailing separators do not create empty words, and the original spelling and case are preserved.

That means Modern, Office—Desk Lamp is read as:

1 = Modern
2 = Office
3 = Desk
4 = Lamp

This works with non-English names and diacritics too. For example, Фото_été-2026.final becomes Фото, été, 2026, final. A continuous CJK name without spaces or punctuation is treated as one word.

Joining a Range

Ranges use one space between words by default. Add join="..." to choose another separator or remove it entirely.

PatternOutput
$words{new,2..4}Office Desk Lamp
$words{new,2..4; join="-"}Office-Desk-Lamp
$words{new,2..4; join="_"}Office_Desk_Lamp
$words{new,2..4; join=""}OfficeDeskLamp

The join value must use double quotes. Inside it, \" inserts a quote and \\ inserts a backslash. A join option is valid with a single word, but has no visible effect because there is nothing to join.

Custom Separators with split

Use split=/.../flags when the default punctuation-aware splitting is not right for your naming convention. The regular expression describes separators, not the words themselves, and completely replaces the default rule.

For example, if only underscores should split IMG__2024-final.v2:

$words{old,2..last; split=/_+/u; join="_"}
→ 2024-final.v2

The hyphen and dot remain because /_+/u treats only underscores as separators. To explicitly split common filename punctuation, use:

$words{old,2..last; split=/[._\-\s]+/u; join="_"}
→ 2024_final_v2

Custom separator expressions use a deliberately safe regex subset:

  • Only the i (case-insensitive) and u (Unicode) flags are accepted, once each and in either order
  • Literals, character classes and ranges, standard escapes, Unicode property escapes with the u flag, and sequences are supported
  • At most one atom may use +, *, or ?; the complete expression cannot match an empty string
  • The regex body is limited to 128 Unicode characters
  • Groups, alternation, lookaround, backreferences, dot, anchors, word boundaries, {m,n} quantifiers, and multiple quantified atoms are rejected

For example, $words{new,1..last; split=/x+/i; join="_"} changes OneXTwoxxThree into One_Two_Three.

The split and join options may appear in either order, but neither option can be repeated. Unknown options are rejected by the pattern editor.

More $words Examples

GoalPatternOutput
First AI-name word$words{new,1}Modern
Last AI-name word$words{new,last}Lamp
AI-name words 2–4$words{new,2..4}Office Desk Lamp
Everything after the first word$words{new,2..last; join="-"}Office-Desk-Lamp
First part of the original name$words{old,1}IMG
Drop the original IMG prefix$words{old,2..last; join="_"}2024_final_v2
Join the entire AI name without separators$words{new,1..last; join=""}ModernOfficeDeskLamp
Uppercase an original-name word$upper{$words{old,1}}IMG
Create a slug from part of the AI name$slugcase{$words{new,2..last}}office-desk-lamp

$words{...} can be nested inside every text transformation. The selected text is treated as filename data, so text such as $1 inside an actual filename is not interpreted as another placeholder.

Missing Words and Compatibility

  • A missing single index, last on an empty source, or a range whose starting word does not exist returns an empty string
  • If a range end is beyond the available words, it is clipped to the final word: $words{new,2..99} returns words 2 through the end
  • Invalid $words syntax is caught by the pattern editor before the preset can be saved
  • $words, new, old, last, split, and join are case-sensitive
  • Existing $2, $3, and later numbered placeholders still split only on whitespace, so existing presets keep their previous behavior. Use $words{...} for punctuation-aware Unicode selection

Auto Increment Placeholders

Use auto increment when you want AI-generated names to stay sortable in Finder or File Explorer.

$successIndex is usually the best choice. It increments only for files that completed successfully, so files with errors, pending or cancelled rows, and rows removed from the list are skipped by the $successIndex counter. The applied filenames keep a gap-free sequence.

PlaceholderWhat It ReturnsExample
$successIndexAuto-increment number for successful files, starting at 1"1", "2", "3"
$successIndex{01}Auto-increment number with two digits"01", "02", "03"
$successIndex{001}Auto-increment number with three digits"001", "002", "003"
$successIndex{3}Auto-increment number starting at 3"3", "4", "5"
$index{01}Original batch/workspace order with two digits"01", "02", "03"

The number inside {} controls both the starting value and the padding width. For example, $successIndex{00001} starts at 00001, while $successIndex{3} starts at 3 without extra padding.

Use $index only when you need the original batch order. It can have gaps if files are removed, filtered, or fail before apply.

Text Transformations

TransformationInput → OutputDescription
$upper{$1}"Modern Office Desk" → "MODERN OFFICE DESK"All uppercase
$lower{$1}"Modern Office Desk" → "modern office desk"All lowercase
$capitalize{$1}"modern office desk" → "Modern office desk"Capitalize first letter only
$slugcase{$1}"Modern Office Desk" → "modern-office-desk"Lowercase with hyphens

Transformations can be nested with any placeholder: $upper{$2} → "MODERN", $lower{$1} → "modern office desk".

File Date Placeholders

PlaceholderDescriptionExample Output
$date{YYYY-MM-DD}File creation date"2024-12-07"
$date{DD_MM_YYYY}Alternative date format"07_12_2024"
$date{YYYYMMDD}Compact date"20241207"
$date{YYYYMMDD,modified}File modification date"20241207"

By default, $date{} uses the file creation date. Add ,modified to use the modification date instead.

EXIF Placeholders (Images Only)

EXIF metadata is embedded in photos by cameras and smartphones. These placeholders only work with image files that contain EXIF data.

Date/Time from EXIF

PlaceholderDescriptionExample
$exif{date}Capture date (YYYY-MM-DD)"2024-12-07"
$exif{date,YYYYMMDD}Custom date format"20241207"
$exif{date,DD-MM-YYYY}European date format"07-12-2024"
$exif{time}Capture time (HH-mm-ss)"14-30-45"
$exif{time,HHmm}Short time format"1430"
$exif{datetime}Full date + time"2024-12-07_14-30-45"

Camera Information

PlaceholderDescriptionExample
$exif{camera}Make + Model combined"Canon_EOS_R5"
$exif{make}Camera manufacturer"Canon"
$exif{model}Camera model name"EOS R5"
$exif{iso}ISO sensitivity"400"
$exif{aperture}Aperture value"f2.8"
$exif{shutter}Shutter speed"1_250"

GPS Location

PlaceholderDescriptionExample
$exif{country}Country name (from GPS)"Germany"
$exif{city}City name (from GPS)"Berlin"
$exif{region}State or region"Bavaria"
$exif{location}City + Country combined"Berlin_Germany"
$exif{gps}Raw GPS coordinates"52.5200_13.4050"

Generic EXIF Access

You can access any EXIF field by its name:

PlaceholderExample Output
$exif{Software}"Adobe Photoshop"
$exif{LensModel}"EF 50mm f/1.4"
$exif{Artist}"John Doe"
$exif{Copyright}"© 2024 Photographer"

Audio Placeholders (Audio Only)

Supported audio files are transcribed and named through AI. The generated smart name remains available as $1; $audio{...} placeholders let you combine that name with embedded tags, technical metadata, or a short local transcript excerpt.

Common Audio Tags

PlaceholderWhat It Returns
$audio{title}Embedded track or recording title
$audio{artist}Primary artist
$audio{album}Album name
$audio{track}Track number
$audio{year}Embedded year
$audio{genre}Genre or genres
$audio{language}Language from embedded metadata

Technical Audio Metadata

PlaceholderWhat It Returns
$audio{duration}Duration as MM-SS or HH-MM-SS
$audio{codec}Audio codec
$audio{container}Container format
$audio{bitrate}Bitrate
$audio{samplerate}Sample rate
$audio{channels}Channel count
$audio{lossless}Whether the audio is lossless

Transcript Excerpts

PlaceholderWhat It Returns
$audio{transcript}First 80 grapheme clusters of the local transcript
$audio{transcript,160}Custom excerpt length, capped at 200

If an audio value is unavailable, the placeholder returns UNKNOWN.

Complete Pattern Examples

PatternExample OutputUse Case
$1"Modern Office Desk.jpg"Default AI name
$exif{date,YYYYMMDD}_$1"20241207_Modern Office Desk.jpg"Photo with date prefix
$exif{camera}_$1"Canon_EOS_R5_Modern Office Desk.jpg"Photo with camera info
$exif{city}_$exif{country}_$1"Berlin_Germany_Modern Office Desk.jpg"Photo with location
$date{YYYY-MM-DD}_$1"2024-12-07_Modern Office Desk.jpg"File date prefix
$upper{$2}_$lower{$3}"MODERN_office.jpg"Mixed case words
$oldName_$1"IMG_4521_Modern Office Desk.jpg"Keep original + add AI name
$words{new,1}_$words{new,last}"Modern_Lamp.jpg"Keep only the first and last AI-name words
$words{new,2..last; join="-"}"Office-Desk-Lamp.jpg"Drop the first AI-name word and join the rest
$words{old,2..last; join="_"}"2024_final_v2.jpg"Drop a prefix from the original filename
$slugcase{$words{new,2..last}}"office-desk-lamp.jpg"Create a slug from a selected range
$successIndex{01}_$1"01_Modern Office Desk.jpg"Two-digit auto-increment sequence for successful results
$successIndex{001}_$1"001_Modern Office Desk.jpg"Three-digit auto-increment sequence
$successIndex{3}_$1"3_Modern Office Desk.jpg"Auto-increment sequence starting from 3
$index{01}_$1"01_Modern Office Desk.jpg"Original batch order + AI name
$audio{artist}_$audio{title}"David Bowie_Heroes.mp3"Embedded artist and title
$audio{album}_$audio{track}_$1"Heroes_3_Live Performance.mp3"Album metadata + AI-generated name
$audio{transcript,160}_$1"School project discussion_Project Discussion.m4a"Speech excerpt + AI-generated name

Date/Time Tokens

These tokens work inside both $date{} and $exif{date,...} / $exif{time,...}:

TokenDescriptionExample
YYYY4-digit year2024
YY2-digit year24
MMMonth (zero-padded)07
DDDay (zero-padded)03
HHHour, 24h (zero-padded)09
mmMinute (zero-padded)05
ssSecond (zero-padded)07

Allowed separators in patterns: - and _ (dots are not allowed)

Tips

  • EXIF fields are image-only: Using $exif{} on a PDF or text file will produce empty values
  • Audio fields are audio-only: $audio{} reads normalized audio metadata or the local transcript; missing values return UNKNOWN
  • Audio remains AI-powered: Metadata changes the final format only; the smart $1 name still comes from the speech transcript
  • Missing EXIF data: If an image lacks certain EXIF fields (e.g., no GPS), those placeholders are silently omitted
  • $date vs $exif date: $date{} uses filesystem dates (works on all files); $exif{date} uses the camera's capture date
  • Auto increment: $successIndex counts only successful results; failed, pending, cancelled, and removed rows are skipped by this counter
  • Batch index: $index follows the original workspace order and can have gaps after filtering or deletion
  • Legacy words vs $words: $2, $3, and later placeholders split only on whitespace; $words{...} also recognizes punctuation and Unicode separators
  • Missing word selections: An unavailable word returns an empty value, while an oversized range end is clipped to the final available word
  • Test with preview: The format editor shows a live preview so you can verify your pattern before saving

On this page